资源描述:
《数值建模课件--拟合.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、这样,最小二乘问题就转化为求多元函数(4)的极小点问题.用最小二乘法求拟合曲线的问题,就是在形如(2)的中求一函数,由求多元函数极值的必要条件,有使(3)取得最小.1曲线拟合的最小二乘法1最小二乘法及其计算在函数的最佳平方逼近中如果只在一组离散点集上给定,这就是科学实验中经常见到的实验数据的曲线拟合.2记误差则的各分量分别为个数据点上的误差.问题为利用求出一个函数与所给数据拟合.3设是上线性无关函数族,在中找一函数,使误差平方和(1)这里(2)4这个问题称为最小二乘逼近,几何上称为曲线拟合的最小二乘法.用最小二乘
2、求拟合曲线时,首先要确定的形式.确定的形式问题不仅是数学问题,还与问题的实际背景有关.通常要用问题的运动规律及给定的数据进行数据描图,确定的形式,然后通过实际计算选出较好的结果.5为了使问题的提法更有一般性,通常在最小二乘法中考虑加权平方和(2)(3)这里是上的权函数,它表示不同点处的数据比重不同.就是次多项式.若是次多项式,的一般表达式为(2)表示的线性形式.6其中(7)要使法方程(6)有惟一解,就要求矩阵非奇异,而在上线性无关不能推出矩阵非奇异,必须加上另外的条件.(6)7若记(5)上式可改写为(6)这个方程
3、称为法方程,可写成矩阵形式8一般可取,但这样做当时,通常对的简单情形都可通过求法方程(6)得到给定的离散数据,例如,,求解法方程(6)将出现系数矩阵为病态的问题,有时根据给定数据图形,其拟合函数表面上不是(2)的形式,但通过变换仍可化为线性模型.若两边取对数得(6)(2)9显然在任意个点上满足哈尔条件.哈尔条件,则法方程(6)的系数矩阵(7)非奇异,如果在上满足函数的最小二乘解为定义1设的任意线性组合在点集上至多只有个不同的零点,则称在点集上满足哈尔(Haar)条件.方程(6)存在惟一的解从而得到于是(6)10这
4、样得到的,对任何形如(2)的,都有故确是所求最小二乘解.(2)11例7这样就变成了形如(2)的线性模型.此时,若令则已知一组实验数据如下,求它的拟合曲线.12解从图中看到各点在一条直线附近,故可选择线性函数作拟合曲线,将所给数据在坐标纸上标出,见图1.图113令这里故14解得由(6)得方程组于是所求拟合曲线为(6)15关于多项式拟合,Matlab中有现成的程序其中输入参数为要拟合的数据,为拟合多项式的次数,输出参数为拟合多项式的系数.利用下面的程序,可在Matlab中完成上例的多项式拟合.16x=[1123334
5、5];f=[444.566688.5];aa=poly(x,f,1);y=polyval(aa,x);plot(x,f,’r+’,x,y,’k’)xlabel(‘x’);ylabel(‘y’);gtext(‘y=s1(x)’)17结果如下:18例1设数据由表3-1给出,用最小二乘法确定及.解表中第4行为通过描点可以看出数学模型为它不是线性形式.用给定数据描图可确定拟合曲线方程为两边取对数得19若令先将转化为为确定,根据最小二乘法,取则得数据表见表3-1.得20故有法方程解得于是得最小二乘拟合曲线为21(9)则
6、方程(6)的解为且平方误差为(6)22接下来根据给定节点及权函数构造带权正交的多项式.注意,用递推公式表示,即(10)这里是首项系数为1的次多项式,根据的正交性,得23利用下面的程序,可在Matlab中完成曲线拟合.x=[1.001.251.501.752.00];y=[5.105.796.537.458.46];y1=log(y);aa=poly(x,y1,1);a=aa(1);b=exp(aa(2));y2=b*exp(a*x);plot(x,y,’r+’,x,y2,’k’)xlabel(‘x’);ylabe
7、l(‘y’);gtext(‘y=a*exp(bx))’;24结果如下:25而,于是由(5.12),当时,另外,是首项系数为1的次多项式,它可由由归纳法假定,当时的线性组合表示.由归纳法假定又有(12)262用正交多项式做最小二乘拟合如果是关于点集(8)用最小二乘法得到的法方程组(6),其系数矩阵是病态的.带权正交的函数族,即(6)27至此已证明了由(10)及(11)确定的多项式组成一个关于点集的正交系.用正交多项式的线性组合作最小二乘曲线拟合,只要根据公式(10)及(11)逐步求的同时,相应计算出系数最后,由
8、和的表达式(11)有28(11)下面用归纳法证明这样给出的是正交的.29假定对及要证对均成立.由(10)有由(10)第二式及(11)中的表达式,有均成立,(5.12)(10)(10)30由假定有再考虑(13)利用(11)中表达式及以上结果,得31并逐步把累加到中去,最后就可得到所求的用这种方法编程序不用解方程组,只用递推公式,并且当逼近次数增加一次时,只要把程序中循环数加