资源描述:
《matlab第二、三次上机作业》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第二次上机作业一.任务:用MATLAB语言编写连续函数最佳平方逼近的算法程序(函数式M文件)。并用此程序进行数值试验,写出计算实习报告。二.程序功能要求:1.用Lengendre多项式做基,并适合于构造任意次数的最佳平方逼近多项式。可利用递推关系2.程序输入:(1)待求的被逼近函数值的数据点(可以是一个数值或向量)(2)区间端点:a,b。3.程序输出:(1)拟合系数:(2)待求的被逼近函数值三:数值试验要求:1.试验函数:;也可自选其它的试验函数。2.用所编程序直接进行计算,检测程序的正确性,并理解算法。3.分别求二次、
2、三次、。。。最佳平方逼近函数。4.分别作出逼近函数和被逼近函数的曲线图进行比较。(分别用绘图函数plot(,s())和fplot(‘xcosx’,[x1x2,y1,y2]))解题思路:参照应用数值分析书P259“算法7-1”,利用Legendre多项式对f(x)∈C(a,b)的最佳平方逼近写出以下算法:M文件1:%文件名:GLAppro.mfunction[poly,yy,delta]=GLAppro(f,n,a,b,xx)%功能:利用GaussLegendre多项式求函数的最佳平方逼近%输入:f——被逼近函数;a,b—
3、—逼近区间;xx——欲求的逼近点%n——逼近的L多项式的次数(标量时为最高次数,向量时为其所选择的的逼近次数)%输出:poly——所求的逼近多项式系数(降序);yy——逼近店的值;delta——逼近误差N=numel(n);ifN>1id=n+1;elseN=n+1;id=1:N;enddelta=quad(@myfun,-1,1,[],[],f,a,b);c=zeros(1,N);poly=zeros(1,id(N));fork=1:Nc(k)=(2*id(k)-1)*quad(@fLegPoly,-1,1,[],[]
4、,f,id(k)-1,a,b)/2;delta=delta-c(k)^2*2/(2*id(k)-1);endifnargin==5t0=(2*xx-a-b)/(b-a);yy=zeros(size(xx));fork=1:Np=LegPoly(id(k)-1);yy=yy+c(k)*polyval(p,t0);poly(id(N)-id(k)+1:(id(N)))=poly(id(N)-id(k)+1:(id(N)))+c(k)*p;endelsefork=1:Np=LegPoly(k-1);poly(N-k+1:N)=
5、poly(N-k+1:N)+c(k)*p;endendM文件2:functiony=myfun(t,f,a,b)%功能:GLAppro子函数,变换到区间[-1,1]x=(b-a)*t/2+(b+a)/2;y=f(x).*f(x);M文件3:functionf=fLegPoly(t,f1,n,a,b)%功能:GLAppro子函数,求变换后的积分函数p=LegPoly(n);x=(b-a)*t/2+(b+a)/2;f=f1(x).*polyval(p,t);M文件4:functionp=LegPoly(n)%功能:递归法求n
6、次GaussLegendre多项式%输入:n——多项式次数%输出:p——降幂排列的多项式系数p0=1;p1=[1,0];ifn==0p=p0;elseifn==1p=p1;elsep=((2*n-1)*[LegPoly(n-1),0]-(n-1)*[0,0,LegPoly(n-2)])/n;endM文件5:%文件名:homework2.mf=@(x)(x.*cos(x));n=cell(3,1);n{1}=2;n{2}=3;n{3}=4;a=0;b=4;x0=linspace(a,b)';color=['k','g','
7、b'];y=f(x0);plot(x0,y,'r-','linewidth',1.5);holdon;symstx;fori=1:3[poly,py,delta]=GLAppro(f,n{i},a,b,x0);pt=vpa(poly2sym(poly,t),4);poly=simple(subs(pt,t,(2*x-a-b)/(b-a)));poly=vpa(poly,4);disp(['所求的最佳评分那个逼近多项式为(n='int2str(n{i})'):']);disp(poly);disp(['误差为:'num2s
8、tr(delta)]);plot(x0,py,color(i),'linewidth',1.5)end分别求两次、三次和四次最佳平方逼近函数s(x)输入:homework2输出:所求的最佳评分那个逼近多项式为(n=2):-0.1599*x^2-0.572*x+0.8268误差为:0.45032所求的最佳评分那个逼近多