数值分析(最小二乘拟合)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课题八 曲线拟合的最小二乘法
一、问题提出
从随机的数据中找出其规律性,给出其近似表达式的问题,在生产实践和科学实验中大量存在,通常利用数据的最小二乘法求得拟合曲线。
在某冶炼过程中,根据统计数据的含碳量与时间关系,试求含碳量 y 与时间t 的拟合曲线。
二、要求
1 、用最小二乘法进行曲线拟合;
2 、近似解析表达式为()t ϕ=a 1t+a 2t 2+a 3t 3
3 、打印出拟合函数()t ϕ,并打印出()tj ϕ与()y tj 的误差
4 、另外选取一个近似表达式,尝试拟合效果的比较;
5 、* 绘制出曲线拟合图﹡。
三、目的和意义
1 、掌握曲线拟合的最小二乘法;
2 、最小二乘法亦可用于解超定线代数方程组;
3 、探索拟合函数的选择与拟合精度间的关系。
四、实验结果:
1.用最小二乘法做出的曲线拟合为
三次多项式a1= -0.0052 ,a2= 0.2634 ,a3= 0.0178。
()tϕ= (-0.0052) t+ (0.2634) t2 + (0.0178) t3
三次多项式的误差平方和=0.2583。
图形为:
图形上红线表示拟合曲线,*表示实验所给的点。
源代码为:
x=[0,5,10,15,20,25,30,35,40,45,50,55];
y=[0,1.27,2.16,2.86,3.44,3.87,4.15,4.37,4.51,4.58,4.02,4.64]; a1=polyfit(x,y,3) %三次多项式拟合%
b1= polyval(a1,x)
r1= sum((y-b1).^2) %三次多项式误差平方和%
plot(x,y,'*') %用*画出x,y图像%
hold on
plot(x,b1, 'r') %用红色线画出x,b1图像%
(说明本程序调用了MATLAB中的函数polyfit、polyval、plot)
2.另外选取几个近似表达式:
主要选取6次、9次和12次的拟合表达式。
(说明6多项式用绿线表示,9次多项式用蓝线表示,12次多项式用黄线表示)图形为:
讨论:
1.从上面的曲线图形我们可以看出9次多项式的拟合效果最好,所
有点的都在9次多项式的曲线上。
2.可以看出3次多项式、6次多项式都拟合的比较好。
3.可以看出12次多项式跳跃比较厉害,拟合效果比较差,我们可以
的出结论:不是次数越高,拟合效果就越好,拟合函数的次数与拟合精度没有直接的线性关系。需要选择合适的拟合函数,可以得到最佳效果。
源代码:
> x=[0,5,10,15,20,25,30,35,40,45,50,55];
y=[0,1.27,2.16,2.86,3.44,3.87,4.15,4.37,4.51,4.58,4.02,4.64];
a1=polyfit(x,y,3) %三次多项式拟合%
a2= polyfit(x,y,6) %六次多项式拟合%
a3= polyfit(x,y,9) %九次多项式拟合%
a4= polyfit(x,y,12) %十二次多项式拟合%
b1= polyval(a1,x)
b2= polyval(a2,x)
b3= polyval(a3,x)
b4= polyval(a4,x)
r1= sum((y-b1).^2) %三次多项式误差平方和%
r2= sum((y-b2).^2) %六次次多项式误差平方和%
r3= sum((y-b3).^2) %九次多项式误差平方和%
r4= sum((y-b4).^2) %十二次多项式误差平方和%
plot(x,y,'*') %用*画出x, y图像%
hold on
plot(x,b1, 'r') %用红色线画出x,b1图像%
hold on
plot(x,b2, 'g') %用绿色线画出x,b2图像%
hold on
plot(x,b3, 'b:o') %用蓝色o线画出x,b3图像%
hold on
plot(x,b4, 'y') %用黄线画出想x,b4图像%
运行结果:
a1 =
0.0000 -0.0052 0.2634 0.0178
Warning: Polynomial is badly conditioned. Add points with distinct X
values, reduce the degree of the polynomial, or try centering
and scaling as described in HELP POLYFIT.
> In polyfit at 80
a2 =
0.0000 -0.0000 0.0001 -0.0013 0.0079 0.2240 0.0176 Warning: Polynomial is badly conditioned. Add points with distinct X
values, reduce the degree of the polynomial, or try centering
and scaling as described in HELP POLYFIT.
> In polyfit at 80
a3 =
0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0007 0.0081 -0.0549 0.3967 -0.0002
Warning: Polynomial is not unique; degree >= number of data points.
> In polyfit at 72
a4 =
1.0e-007 *
-0.0000 0.0000 -0.0001 0.0026 -0.0578 0.5060 0 0 0 0 0 0 0
b1 =
0.0178 1.2087 2.1646 2.9113 3.4745 3.8800 4.1536 4.3211 4.4082 4.4407 4.4444 4.4450
b2 =
0.0176 1.2044 2.2146 2.9124 3.3941 3.7934 4.1674 4.4615 4.5548 4.3853 4.1541 4.6103
b3 =
-0.0002 1.2715 2.1545 2.8709 3.4293 3.8694 4.1662 4.3473 4.5269 4.5725 4.0219 4.6398