2、n个点(xi,yi)与曲线y=f(x)的距离i的平方和最小。记问题归结为,求a1,a2,…am使J(a1,a2,…am)最小。8线性最小二乘法的求解:预备知识超定方程组:方程个数大于未知量个数的方程组即Ra=y其中超定方程一般是不存在解的矛盾方程组。如果有向量a使得达到最小,则称a为上述超定方程的最小二乘解。9线性最小二乘法的求解定理:当RTR可逆时,超定方程组(3)存在最小二乘解,且即为方程组RTRa=RTy的解:a=(RTR)-1RTy所以,曲线拟合的最小二乘法要解决的问题,实际上就是求以下超定方程组的最小二乘解的问题。其中Ra=y(3)10线性最小二乘拟合f(x
3、)=a1r1(x)+…+amrm(x)中函数{r1(x),…rm(x)}的选取1.通过机理分析建立数学模型来确定f(x);++++++++++++++++++++++++++++++f=a1+a2xf=a1+a2x+a3x2f=a1+a2x+a3x2f=a1+a2/xf=aebxf=ae-bx2.将数据(xi,yi)i=1,…n作图,通过直观判断确定f(x):11用MATLAB解拟合问题1、线性最小二乘拟合2、非线性最小二乘拟合12用MATLAB作线性最小二乘拟合1.作多项式f(x)=a1xm+…+amx+am+1拟合,可利用已有程序:a=polyfit(x,y,m)2
4、.对超定方程组可得最小二乘意义下的解。,用3.多项式在x处的值y可用以下命令计算:y=polyval(a,x)输出拟合多项式系数a=[a1,…am,am+1](数组))输入同长度的数组X,Y拟合多项式次数13即要求出二次多项式:中的使得:例对下面一组数据作二次多项式拟合141)输入以下命令:x=0:0.1:1;y=[-0.4471.9783.286.167.087.347.669.569.489.3011.2];R=[(x.^2)'x'ones(11,1)];A=Ry'MATLAB(zxec1)解法1.用解超定方程的方法2)计算结果:A=-9.810820.1293-
5、0.0317151)输入以下命令:x=0:0.1:1;y=[-0.4471.9783.286.167.087.347.669.569.489.3011.2];A=polyfit(x,y,2)z=polyval(A,x);plot(x,y,'k+',x,z,'r')%作出数据点和拟合曲线的图形2)计算结果:A=-9.810820.1293-0.0317解法2.用多项式拟合的命令MATLAB(zxec2)161.lsqcurvefit已知数据点:xdata=(xdata1,xdata2,…,xdatan),ydata=(ydata1,ydata2,…,ydatan)用MAT
6、LAB作非线性最小二乘拟合Matlab的提供了两个求非线性最小二乘拟合的函数:lsqcurvefit和lsqnonlin。两个命令都要先建立M-文件fun.m,在其中定义函数f(x),但两者定义f(x)的方式是不同的,可参考例题.lsqcurvefit用以求含参量x(向量)的向量值函数F(x,xdata)=(F(x,xdata1),…,F(x,xdatan))T中的参变量x(向量),使得17输入格式为:(1)x=lsqcurvefit(‘fun’,x0,xdata,ydata);(2)x=lsqcurvefit(‘fun’,x0,xdata,ydata,options)
7、;(3)x=lsqcurvefit(‘fun’,x0,xdata,ydata,options,’grad’);(4)[x,options]=lsqcurvefit(‘fun’,x0,xdata,ydata,…);(5)[x,options,funval]=lsqcurvefit(‘fun’,x0,xdata,ydata,…);(6)[x,options,funval,Jacob]=lsqcurvefit(‘fun’,x0,xdata,ydata,…);fun是一个事先建立的定义函数F(x,xdata)的M-文件,自变量为x和xdata说明