一.实验任务用MATLAB语言编写连续函数最佳平方逼近的算法程序(函数式M文件)。并用此程序进行数值试验,写出实验报告。二.实验方法最佳平方逼近方法采用基于正交多项式的最佳平方逼近,选择Lengendre多项式做基。计算组合系数时,函数的积分采用变步长复化梯形求积法。三.程序功能和使用说明1.采用基于正交多项式的最佳平方逼近,选择Lengendre多项式做基利用递推关系0112()1,()()(21)()(1)()/2,3,.....nnnPxPxxPxnxPxnPxnn可构造出用户需要的任意次数的最佳平方逼近多项式。2.用M文件建立数学函数,实现程序通过修改建立数学函数的M文件以适用不同的被逼近函数。3.已经考虑一般的情况]1,1[],[)(baxf,程序有变量代换的功能。4.计算组合系数时,函数的积分采用变步长复化梯形求积法5.可根据需要,求出二次、三次、。。。最佳平方逼近函数)xs(。6.最后作出逼近函数)xs(和被逼近函数)(xf的曲线图可进行比较,分别用绘图函数plot和fplot绘图。7.在matlab的命令窗口,输入[c,sx]=leastp(@func1,a,b,n),func1是被逼近函数,b和a分别是逼近函数的上、下区间,n为最佳平方逼近的次数,可为任意次数。四.程序代码(含注释)1.最佳平方逼近主函数function[c,sx]=leastp(func,a,b,n)%LEASTP.m:least-squarefittingwithlegendrepolynomials%func指被逼近函数,调用需要用句柄%a,b分别指被逼近函数的区间上下限%n指最佳平方逼近的次数symst;symsx;%以Lengendre多项式为基,构造任意次数的最佳平方逼近多项式p(2)=t;p(1)=1;ifn1forj=3:1:(n+1)p(j)=((2*j-3)*t*p(j-1)-(j-2)*p(j-2))/(j-1);endend%变量代换,区间调整为[-1,1]f=feval(func,(b-a)/2*t+(b+a)/2);%计算组合系数,其中调用变步长复化梯形求积函数trapzforj=1:1:(n+1)c(j)=(2*j-1)/2*trapz(f*p(j),-1,1);end%将组合系数与对应的最佳平方多项式相乘然后求和,得到最佳逼近函数sx=0;forj=1:1:(n+1)sx=sx+c(j)*p(j);end%将变量替换还原sx=subs(sx,(2*x-a-b)/(b-a));%使用fplot绘制原函数图像f1=feval(func,x);f1=inline(f1);[x,y]=fplot(f1,[a,b]);plot(x,y,'r-','linewidth',1.5);holdon;%使用plot绘制最佳平方逼近函数图像g=linspace(a,b,(b-a)*300);fsx=subs(sx,g);plot(g,fsx,'b-','linewidth',1.5);str=strcat(num2str(n),'次最佳平方逼近');legend('原函数',str);end2.计算组合系数,变步长复化梯形求积法functionTo1=trapz(func,a,b)%半分区间复化梯形公式计算定积分%func指需要求积分的原函数%a,b分别指积分上下区间%初值h=b-a;To=(subs(func,a)+subs(func,b))*(b-a)/2;e=1;whilee10^-6%迭代终止条件,前后两次积分值差小于10^-6H=0;x=a+h/2;whilexbH=H+subs(func,x);%计算出所有二分新出现的值的和x=x+h;endTo1=0.5*(To+h*H);%计算出新的积分值e=abs(To1-To);h=h/2;%继续半分区间,进行迭代计算To=To1;endend3.以.m文件定义被逼近函数functiony=func1(x)y=x*cos(x);end五.实验结果1.一次最佳平方逼近c=-1.1702-2.4235sx=1.253290-1.211752*x2.二次最佳平方逼近c=-1.1702-2.4235-0.4265sx=-0.159939*x^2-0.571997*x+0.8267873.三次最佳平方逼近c=-1.1702-2.4235-0.42651.2216sx=0.381759*x^3-2.450495*x^2+3.092892*x-0.3948434.四次最佳平方逼近c=-1.1702-2.4235-0.42651.22160.3123sx=0.085392*x^4-0.301375*x^3-0.693864*x^2+1.531443*x-0.082553六.分析与讨论从次数从1到4的最佳平方逼近图像对比可以发现,次数越高,图像拟合效果越好。尤其是当n=4时,几乎与原函数重合,精度非常高。但是,从实验中也发现,逼近次数越高,运算量越大,耗时也越长,换言之,时间和空间复杂度越高。因此,在实际运用中应该从精度要求和算法复杂度两方面来综合考虑最佳平方逼近的次数。