《用正交多项式做最小二乘拟合(共5页).doc》由会员分享,可在线阅读,更多相关《用正交多项式做最小二乘拟合(共5页).doc(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上关于用正交多项式做最小二乘拟合的实验报告1.实验目的:用正交多项式做最小二乘拟合及拟合图形2.实验内容:编写用正交多项式做最小二乘拟合的程序,并用于求解一个任意给定的数的3次多项式最小二乘拟合问题,在这里给出数据如下:X11.31.61.92.22.52.83.13.43.74Y2.7183.6694.956.6869.02512.18216.44522.19829.96440.44754.598对表格中数据用正交多项式做最小二乘拟合在拟合完后作出拟合曲线的图形,计算平方误差,最后对它们进行分析。程序如下:1). 构建的正交多项式最高项次数为3时的程序: x= 1:0
2、.3:4; y=2.718 3.669 4.95 6.686 9.025 12.182 16.445 22.198 29.964 40.447 54.598; n=3; 构建的正交多项式最高项次数为3 result=inputdlg(请输入权向量w:,charpt-3,1,1 1 1 1 1 1 1 1 1 1 1); w=str2num(char(result); 利用str2num函数将数值型转化为符号型 m=length(x)-1; s1=0; s2=ones(1,m+1); v2=sum(w); d(1)=y*w; c(1)=d(1)/v2; for k=1:nxs=x.*s2.2*w
3、;a(k)=xs/v2;if(k=1)b(k)=0;elseb(k)=v2/v1;ends3=(x-a(k).*s2-b(k)*s1;v3=s3.2*w;d(k+1)=y.*s3*w;c(k+1)=d(k+1)/v3;s1=s2;s2=s3;v1=v2;v2=v3;end r=y.*y*w-c*dr = 0.8918 alph=zeros(1,n+1) alph = 0 0 0 0 T=zeros(n+1,n+2); T(:,2)=ones(n+1,1); T(2,3)=-a(1); if(n=2)for k=3:n+1for i=3:k+1T(k,i)=T(k-1,i)-a(k-1)*T(k
4、-1,i-1)-b(k-1)*T(k-2,i-2);endendend for i=1:n+1for k=i:n+1alph(n+2-i)=alph(n+2-i)+c(k)*T(k,k+2-i);endend xmin=min(x); xmax=max(x); dx=(xmax-xmin)/(25*m); t=(xmin-dx):dx:(xmax+dx); s=alph(1); for k=2:n+1s=s.*t+alph(k);end plot(x,y,x,t,s,-); grid on; disp(alph); disp(r)2). 构建的正交多项式最高项次数为4时,将上述程序中的n改为4
5、即可3). 构建的正交多项式最高项次数为8时,将上述程序中的n改为8即可3.实验结果:1).n=3 plot(x,y,x,t,s,-) disp(alph); 2.3365 -10.2050 19.2296 -8.9441 disp(r) 0.89182).n=4r = 0.0185alph = 0 0 0 0 0 0.5685 -3.3485 9.8348 -9.9063 5.60010.01852).n=8r = 9.9721e-007alph = 0 0 0 0 0 0 0 0 0 Columns 1 through 6 -0.0049 0.1028 -0.9037 4.4386 -13.1107 24.3727 Columns 7 through 9 -26.4044 17.4675 -3.2398 9.9721e-0074. 实验结论:从上面的图像可以看出利用正交多项式做最小二乘拟合的效果很不错,误差很小,且正交多项式的最高次数项次数越高,误差越小。用正交多项式做最小二乘拟合的这种方法的编程不用解线性方程组,只用递推公式,并且当逼近次数增加一次时,只要把程序中循环数加1即可,其余项都不用改变。它是就目前来说用多项式做曲线拟合最好的计算方法。专心-专注-专业
限制150内