数值分析第五章数值实验之数值拟合
1.实验目的:学会用最小二乘法求拟合数据的多项式,并应用算法于实际问题。 2.实验内容:给定数据点(xi,yi)如下:
xi yi 3.实验要求:
0 1 0.5 1.75 0.6 1.96 0.7 2.19 0.8 2.44 0.9 2.71 1.0 3.00 (1)编写程序用最小二乘法求拟合数据的多项式,并求平方误差,作出离散函数(xi,yi)和拟合函数的图形。
(2)用MATLAB的内部函数polyfit求解上面最小二乘法曲线拟合多项式的系数及平方误差,并用MATLAB的内部函数plot作出其图形,并与(1)的结果进行比较。 4.实验步骤:
(1)首先根据上述表格中给定的数据点(xi,yi),用MATLAB程序画出散点图。 在MATLAB工作窗口输入程序 >>x=[0 0.5 0.6 0.7 0.8 0.9 1.0]; y=[1 1.75 1.96 2.19 2.44 2.71 3.00]; plot(x,y,'r*'),legend('数据点(xi,yi)'), x1abel('x'),y1abel('y'),
title('本实验的数据点(xi,yi)的散点图') 运行后屏幕显示数据的散点图,如下图1-1
图1-1 表中给出的数据的散点图
因为数据的散点图1-1的变化趋势与二次多项式很接近,所以取 组函数1,x,x2,令 f(x)?a1x2?a2x?a3(1?1)
用作线性最小二乘拟合的多项式拟合的MATLAB程序求待定系数
ak(k?1,2,3).输入程序
x=[0 0.5 0.6 0.7 0.8 0.9 1.0]; a=polyfit(x,y,2) 运行后输出(1-1)式的系数 a=
1.0000 1.0000 1.0000 故拟合多项式为
f(x)?x2?x?1
用MATLAB程序估计其误差,并作出拟合曲线和数据的图形。 输入程序:
>>xi=[0 0.5 0.6 0.7 0.8 0.9 1.0]; y=[1 1.75 1.96 2.19 2.44 2.71 3.00]; n=length(xi);f=xi.^2+xi+1; x=0:0.001:1.0;F=x.^2+x+1;
fy=abs(f-y);fy2=fy.^2;Ew=max(fy), E1=sum(fy)/n,E2=sqrt((sum(fy2))/n), plot(xi,y,'r*',x,F,'b-'),
legend('数据点(xi,yi)','拟合曲线y=f(x)'), x1abel('x'),y1abel('y'),
title('本实验的数据点(xi,yi)和拟合曲线y=f(x)的图形')
运行后屏幕显示数据(xi,yi)与拟合函数f的最大误差Ew,平均误差E1和均方根误差E2及其数据点(xi,yi)和拟合曲线y?f(x)的图形,见图1-2. Ew=
4.4409e-016 E1=
6.3441e-017 E2=
1.6785e-016
图1-2 数据散点图和拟合曲线
(2) 用MATLAB的内部函数polyfit求解上面最小二乘法曲线拟合多项式的系数,输入程序为:
>> x=[0 0.5 0.6 0.7 0.8 0.9 1.0]; y=[1 1.75 1.96 2.19 2.44 2.71 3.00]; a=polyfit(x,y,2) a=
1.0000 1.0000 1.0000 >> x=[0 0.5 0.6 0.7 0.8 0.9 1.0]; y=[1 1.75 1.96 2.19 2.44 2.71 3.00]; a=polyfit(x,y,3) a =
-0.0000 1.0000 1.0000 1.0000 由此可知拟合的多项式为二次多项式, 其系数为a=1.0000 1.0000 1.0000 拟合的多项式为
f(x)?x2?x?1
求拟合多项式的平方误差,输入程序为 xi=[0 0.5 0.6 0.7 0.8 0.9 1.0]; y=[1 1.75 1.96 2.19 2.44 2.71 3.00]; n=length(xi);f=xi.^2+xi+1; fy=abs(f-y);E1=sum(fy)/n
运行后屏幕显示数据(xi,yi)与拟合函数f的平均误差E1: E1=6.3441e-017
用MATLAB的内部函数plot作出其图形。 输入程序为:
>>x=[0 0.5 0.6 0.7 0.8 0.9 1.0]; y=[1 1.75 1.96 2.19 2.44 2.71 3.00]; plot(x,y)
运行后拟合多项式的图形如图1-3. 5.实验分析:
编写程序用最小二乘法求拟合曲线的多项式的过程中,求出的数据(xi,yi)与拟合函数f的最大误差Ew=4.4409e-016,平均误差E1=6.3441e-017和均方根误差E2=1.6785e-016非常小都达到了很高的精度要求,及其通过散点求得的拟合曲线y?f(x)的图形比较光滑。
而用MATLAB的内部函数polyfit求解的曲线拟合多项式和平方误差与程序求得的相同,还有就是虽然求解过程简单了,但用MATLAB的内部函数plot作出的图形有明显的尖点,不够光滑。
图1-3多项式拟合曲线
相关推荐: