您好,欢迎访问三七文档
实验名称平方逼近与最小二乘法实验目的(1)学习并熟练掌握MATLAB语言的编程;(2)学习最小二乘法及程序设计算法。实验原理:1,由题意决定span(1,x,x^2,…),即决定拟合多项式.2.分别计算1(,)(,)nijijmkkkk,1(,)(,)niijmkyky3.用(,)ijkk组成方阵A,用(,)iky组成矩阵B.4,利用A/B求出该多项式的系数,再利用1(())^2niiifxy求出平方误差.实验题目1,对于给函数f(x)=21125x在区间【-1,1】上取ix=-1+0.2i(i=0,1…10),试求3次曲线拟合,试画出你和曲线并打印出方程。2,由实验给出的数据表x0.00.10.20.30.50.81.0y1.00.410.500.610.912.022.46试求3次,4次多项式的曲线拟合,再根据数据曲线形状,求一个另外函数的拟合曲线,用图示数据曲线及相应的三种拟合曲线。3,给定数据点(ixiy)如表所示。ix00.50.60.70.80.91.0iy01.751.962.192.442.713.00用最小二乘法求拟合数据的二次多项式,并求平方误差。实验结果1.i=0:10;x=-1+0.2*i;y=1./(1+25*x.^2);p=polyfit(x,y,3);s=vpa(poly2sym(p))f=polyval(p,x);plot(x,f,x,y,'o')s=0.000000000000000018136579684810800950071230066733*x^3-0.57518273581808898597955703735352*x^2-0.00000000000000021309598658452197357889078781603*x+0.484124924848906679208937475777932,x=[00.10.20.30.50.81];y=[10.410.50.610.912.022.46];p1=polyfit(x,y,3)%三次多项式拟合p2=polyfit(x,y,4)%四次多项式拟合y1=polyval(p1,x);y2=polyval(p2,x);%多项式求值plot(x,y,'c--',x,y1,'r:',x,y2,'y-.')p3=polyfit(x,y,2)%观察图像,类似于抛物线,用二次多项拟合y3=polyval(p3,x);plot(x,y,'c--',x,y1,'r:',x,y2,'y-.',x,y3,'k--')%画出四种拟合曲线p1=-6.622112.8147-4.65910.9266p2=2.8853-12.334816.2747-5.29870.9427p3=3.1316-1.24000.73563,function[]=zuixiaoercinihe2(x,y)n=length(x);k00=0;fori=1:nk00=k00+1;endk01=0;fori=1:nk01=k01+x(i);endk02=0;fori=1:nk02=k02+x(i)*x(i);endk11=0;fori=1:nk11=k11+x(i)*x(i);endk12=0;fori=1:nk12=k12+x(i)*x(i)*x(i);endk22=0;fori=1:nk22=k22+x(i)*x(i)*x(i)*x(i);endk0y=0;fori=1:nk0y=k0y+y(i);endk1y=0;fori=1:nk1y=k1y+x(i)*y(i);endk2y=0;fori=1:nk2y=k2y+x(i)*x(i)*y(i);endA=[k00k01k02;k01k11k12;k02k12k22];B=[k0y;k1y;k2y];C=A\B;p=C(1);q=C(2);r=C(3);symsm;'拟合的二次函数为:'f=p+q*m+r*m*ml=0;fori=1:nl=l+((p+q*x(i)+r*x(i)*x(i))-y(i))*((p+q*x(i)+r*x(i)*x(i))-y(i));end'该拟合函数的平方误差为:'l拟合的二次函数为:f=1+m+9007199254740963/9007199254740992*m^2ans=该拟合函数的平方误差为:l=5.8178e-030实验结果分析这种算法对于节点增加的情况同样实用。本实验仅对二次多项式有效,而对于其他次数的多项式要在一定程度上改变程序。
本文标题:数值分析实验报告3
链接地址:https://www.777doc.com/doc-4227419 .html