《最小二乘法的基本原理和多项式拟合(共17页).doc》由会员分享,可在线阅读,更多相关《最小二乘法的基本原理和多项式拟合(共17页).doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上数 值 分 析2013年12月最小二乘法的基本原理和多项式拟合摘 要:随着科技发展和社会进步,尤其是计算机大范围的普及,计算机应用逐渐由大规模科学计算的海量数据处理转向日常学习中遇到的小型数据的处理与计算,这就产生了解决各种实际问题需要的各种应用程序,特别是在电磁检验实验中的应用更为广泛。最小二乘法(又称最小平方法)是一种数学优化技术,是利用最小化误差的平方和寻找数据的最佳函数匹配的一种计算方法1,本文对最小二乘法进行了深入细致的研究,利用Matlab语言编制程序和数学知识相结合,通过实验数据的输入,实现多项式和曲线拟合的输出,并利用设计的程序实现了一些实际问题的求解
2、和处理。关键词:最小二乘法,曲线拟合,多项式一、前言曲线拟合又称作函数逼近,是求近似函数的一类数值方法它不要求近似函数在每个节点处与函数值相同,只要求其尽可能的反映给定数据点的基本趋势以及某种意义上的无限“逼近”在需要对一组数据进行处理、筛选时,我们往往会选择合理的数值方法,而曲线拟合在实际应用中也倍受青睐采用曲线拟合处理数据时,一般会考虑到误差的影响,于是我们往往基于残差的平方和最小的准则选取拟合曲线的方法,这便是经常所说的曲线拟合的最小二乘法通过对一些文献的分析和整理,不仅有数据处理(数据采集),还有模型建立,可以了解到曲线拟合的最小二乘法的应用领域较为广泛。二、最小二乘法法的介绍1),最
3、小二乘法的基本原理从整体上考虑近似函数同所给数据点 (i=0,1,m)误差 (i=0,1,m)的大小,常用的方法有以下三种:一是误差 (i=0,1,m)绝对值的最大值,即误差 向量的范数;二是误差绝对值的和,即误差向量r的1范数;三是误差平方和的算术平方根,即误差向量r的2范数;前两种方法简单、自然,但不便于微分运算 ,后一种方法相当于考虑 2范数的平方,因此在曲线拟合中常采用误差平方和来 度量误差 (i=0,1,m)的整体大小。数据拟合的具体作法是:对给定数据 (i=0,1,,m),在取定的函数类中,求,使误差(i=0,1,m)的平方和最小,即 =从几何意义上讲,就是寻求与给定点 (i=0,
4、1,m)的距离平方和为最小的曲线(图6-1)。函数称为拟合 函数或最小二乘解,求拟合函数的方法称为曲线拟合的最小二乘法。在曲线拟合中,函数类可有不同的选取方法.612),多项式拟合假设给定数据点 (i=0,1,m),为所有次数不超过的多项式构成的函数类,现求一,使得 (1)当拟合函数为多项式时,称为多项式拟合,满足式(1)的称为最小二乘拟合多项式。特别地,当n=1时,称为线性拟合或直线拟合。显然为的多元函数,因此上述问题即为求的极值 问题。由多元函数求极值的必要条件,得 (2)即 (3)(3)是关于的线性方程组,用矩阵表示为 (4)式(3)或式(4)称为正规方程组或法方程组。可以证明,方程组(
5、4)的系数矩阵是一个对称正定矩阵,故存在唯一解。从式(4)中解出 (k=0,1,,n),从而可得多项式 (5)可以证明,式(5)中的满足式(1),即为所求的拟合多项式。我们把称为最小二乘拟合多项式的平方误差,记作由式(2)可得 (6)多项式拟合的一般方法可归纳为以下几步: (1) 由已知数据画出函数粗略的图形散点图,确定拟合多项式的次数n;(2) 列表计算和;(3) 写出正规方程组,求出;(4) 写出拟合多项式。在实际应用中,或;当时所得的拟合多项式就是拉格朗日或牛顿插值多项式。3),最小二乘拟合多项式的存在唯一性定理1 设节点互异,则法方程组(4)的解存在唯一。证 由克莱姆法则,只需证明方程
6、组(4)的系数矩阵非奇异即可。用反证法,设方程组(4)的系数矩阵奇异,则其所对应的齐次方程组 (7)有非零解。式(7)可写为 (8)将式(8)中第j个方程乘以 (j=0,1,,n),然后将新得到的n+1个方程左右两端分别 相加,得因为其中所以 (i=0,1,m)是次数不超过n的多项式,它有m+1n个相异零点,由代数基本定理,必须有,与齐次方程组有非零解的假设矛盾。因此正规方程组(4)必有唯一解 。定理2 设是正规方程组(4)的解,则是满足式(1)的最小二乘拟合多项式。证 只需证明,对任意一组数组成的多项式,恒有即可。因为 (k=0,1,,n)是正规方程组(4)的解,所以满足式(2),因此有故为
7、最小二乘拟合多项式。2 算法实现在化学反应中,由实验测得分解物浓度与时间的关系如下表1所示表1 浓度(y)与时间( t )的关系实验数据表t0510152025y01.272.162.863.443.87t303540455055y4.154.374.514.584.624.643思路解答根据题设要求即根据所给数据求一未知的多项式拟合曲线,由于曲线未知,只能通过已知数据去确定待定的多项式参数,进而使数据尽可能的逼近所求曲线最后再通过总误差比较,取最小误差对应多项式即可不妨设所求多项式为fiv, 式中表示多项式的最高次数说明:表格(1)中是题设给定的函数值,f0,f1,f2,f5,f9分别表示拟
8、合多项式最高次数m=1,2,3,6,10时的拟合值由于数据不是很多,可以直接用最小二乘法找出最好的拟合曲线具体就是比较总误差的大小,然后取误差最小的那条拟合曲线即可当然,可根据均方差和偏差G= 。计算求得同时根据法方程组 或者多项式公式 ,可求出其多项式系数itiyiti2tiyiti3ti4ti5ti6ti2yiti3yi00000000000151.27256.3512562531251562531.75158.752102.1610021.61001000021621603152.8622542.9337550625643.59652.54203.4440068.880001376275
9、205253.8762596.75156252418.7560468.756304.15900124.52700037357354.371225152.95428755353.25.88404.511600180.46400066409454.582025206.1911259274.5.510504.622500231125001155011554.643025255.214036和33040.47126501386.5555274.75表a据表a可得一次多项式系数a1=0.0765,a0=1.2667,故可得二次多项式系数a2= 0.0022,a1=0.1992,a0=0.2453,故三次
10、多项式系数a3=0.,a2=-0.0049,a1=0.2557,a0=0.0122,故同理六次和十次多项式拟合曲线 分别为 a. 用matlab绘出多项式拟合的直观图: 图一4总误差比较与分析:用matlab程序tw计算可得最大偏差和均方差分别为Gw1=1.2677,Gw2=0.2453,Gw3=0.0661,Gw6=0.0188,Gw10=0.0040根据图一可知一次多项式拟合和二次多项式拟合偏差太大,三次、六次、十次多项式比较贴近真实值,再结合多项式拟合的最大偏差和均方差,可清晰知道十次多项式拟合的数据最小故十次多项式拟合更接近实际值,综合可知10次多项式拟合曲线比1、2、3和6次拟合更加
11、接近题设所给数据三、参考文献1 李庆扬,王能超,易大义. 数值分析M.清华大学出版社:2009年:第三章2 姜健飞,胡良剑,唐 俭.数值分析及其MATLAB实验M.科学出版社:2004年:第四章3 罗建军, 杨 琦,冯博琴.MATLAB数值分析M.机械工业出版社:2012年:第三、七章4 张 铁,阎家斌 数值分析M北京: 冶金工业出版社,2005第二、三章5 李岳生,黄友谦.数值逼近.人民教育出版社,1978,(3):36-416 陈杰,张增强,于锋.MATLAB宝典第3版.北京:电子工业出版社,2011.1.第六章第二三节四、附录t=0 5 10 1520 25 30 35 40 4550
12、55y=0 1.27 2.16 2.863.44 3.87 4.15 4.374.51 4.584.62 4.64figure(1)plot(t,y,bo)grid onhold onxs0=polyfit(t,y,1);% 插值点,其中1表示一次多项式,即直线a=xs0(1)% 插值求得一次项系数 b=xs0(2)% 插值求得常数项项系数 f0=polyval(xs0,t) % 求得拟合出来的多项式在输入值为t下的y值xs1=polyfit(t,y,2);% 插值点,其中1表示一次多项式,即直线a=xs1(1) %插值求得二次项系数b=xs1(2) %插值求得一次项系数c=xs1(3) %插
13、值求得常数项系数f1=polyval(xs1,t) % 求得拟合出来的多项式在输入值为t下的y值xs2=polyfit(t,y,3);a=xs2(1) %插值求得三次项系数b=xs2(2) %插值求得二次项系数c=xs2(3) %插值求得一次项系数d=xs2(4) %插值求得常数项系数f2=polyval(xs2,t) % 求得拟合出来的多项式在输入值为t下的y值xs5=polyfit(t,y,6);a=xs5(1) %插值求得六次项系数b=xs5(2) %插值求得五次项系数c=xs5(3) %插值求得四次项系数d=xs5(4) %插值求得三次项系数e=xs5(5) %插值求得二次项系数f=x
14、s5(6) %插值求得一次项系数g=xs5(7) %插值求得常数项系数f5=polyval(xs5,t) % 求得拟合出来的多项式在输入值为t下的y值xs9=polyfit(t,y,10);a=xs9(1) %插值求得十次项系数b=xs9(2) %插值求得九次项系数c=xs9(3) %插值求得八次项系数d=xs9(4) %插值求得七次项系数e=xs9(5) %插值求得六次项系数f=xs9(6) %插值求得五次项系数g=xs9(7) %插值求得四次项系数h=xs9(8)%插值求得三次项系数i=xs9(9)%插值求得二次项系数j=xs9(10)%插值求得一次项系数l=xs9(11)%插值求得常数项
15、系数f9=polyval(xs9,t) % 求得拟合出来的多项式在输入值为t下的y值plot(t,f0,r-) %用红色画出通过数据点而拟合出来的曲线hold onplot(t,f1,g) %用绿色画出通过数据点而拟合出来的曲线hold onplot(t,f2,b-) %用蓝色画出通过数据点而拟合出来的曲线hold onplot(t,f5,k-) %用黑色画出通过数据点而拟合出来的曲线hold onplot(t,f9,m-) %紫红色画出通过数据点而拟合出来的曲线hold onlegend(数据点(ti,yi),一次多项式拟合曲线,二次多项式拟合曲线,三次多项式拟合,六次多项式拟合,十次多项式
16、拟合) G1=abs(y-f0)Gw1=max(G1)G2=abs(y-f1)Gw2=max(G2)G3=abs(y-f2)Gw3=max(G3)G6=abs(y-f5)Gw6=max(G6)G10=abs(y-f9)Gw10=max(G10)E1=sqrt(sum(y-f0).2)E2=sqrt(sum(y-f1).2)E3=sqrt(sum(y-f2).2)E6=sqrt(sum(y-f5).2)E10=sqrt(sum(y-f9).2)xlabel(时间t), ylabel(浓度y),title(化学反应中,实验测得分解物浓度与时间的关系)五、心得体会经过一个学期数值分析的学习,让我有很
17、深刻的感悟。数值分析是一门重视算法和原理的学科,它的内容更接近实际,像最小二乘法拟合,求解线性方程组的解等,使数学理论更有实际意义。学习了数值分析才知道,对于以前解方程组,对矩阵的求解可能会产生100%的误差,一个100%的误差几乎就是一个错解,完全颠覆了以前的认识。学习数值分析之后,必须要学会寻找一种算法把误差降低到最小,以便于解决问题。数值分析让我有了“以点带面”的思想,这里的“点”是根本,是主线。在第二章以拉格朗日插值、牛顿插值为主线,逐步展开介绍埃尔米特插值、分段低次插值和三次养条插值。只要把拉格朗日插值和牛顿插值基本原理方法理解透,其它的就容易掌握了。第三章函数逼近,最常用的就是通过
18、构造一个多项式函数与已知函数或一串离散数据点进行拟合,直到使逼近效果令人满意为止,这种思想在迭代法中有很深刻的体现。第六七章主要以迭代法为主线,来求解线性方程和非线性方程。在学习过程中只要将迭代法的相关原理掌握好,此两章就会比较容易掌握。我觉得数值分析涉及到数学中很多学科的知识,内容比较复杂,只有将基本原理和基本算法理解透,才能逐步推广。数值分析还是一门与计算机使用紧密结合的课程,尤其能够熟练应用Matlab软件。通过“数值计算方法”和Matlab的学习,能够有效的将二者结合解决一些数学上的实际应用问题。很多实际问题都是非常复杂的,不能急功近利,结合“逐次逼近”这种思想,注重计算机的应用显得很
19、关键。理论指导与实践应用相结合的思想在本文的最小二乘法多项式拟合中得到很明显的印证。数据一多,一大,在计算过程就非常复杂,只有通过软件的应用,问题才能在几秒内有效的被解决。在这一个过程中,我深入了解matlab运行环境和操作环境,初步学会调试程序,运用绘图命令制作函数图象。 懂得如何运用已有的知识更进一步了解未知的问题。 独立解决和思考问题的能力有了一定的提高。随着学习的深入,自己逐渐发现数值分析是博大精深,要想把数值分析学好,就需要有很深的应用数学功底。很多定理、算法所蕴含的绝不是简单的推理而已,它还包含很多数学家的丰富思想。虽然我现在无法真正的理解这些思想,但绝不能忽视这些思想,因为这些思想才是真正接近生活的。只有不断有意或无意的将本已工具化的数学转化为内在的知识,进而真正让数学帮助我们全方位的成长。 完成人签名: 完成时间:2013年 12 月22日 专心-专注-专业