资源描述:
《matlab在数值分析中的应用》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、1牛顿插值代码%1-1homeworkofsomeone(ID)%创建插值原始数据x,yx=-1:0.2:1;y=1./(1+9.*x.^2);%读取插值维数n=length(x);%定义需要的变量c(1:n)=0.0;symst;f=y(1);y1=0;l=1;%循环生成插值多项式for(i=1:n-1)for(j=i+1:n)y1(j)=(y(j)-y(i))/(x(j)-x(i));endc(i)=y1(i+1);l=l*(t-x(i));f=f+c(i)*l;simplify(f);y=y1;%化简f=collect(f);f=vpa(f,6);end%输出ff
2、%画图symp;q=1/(1+9*p^2);ezplot(q,[-1,1])%标题holdonezplot(f,[-1,1])title('牛顿插值someone(ID)')牛顿插值运行截图:三次样条插值代码%1-1homeworkofsomeone(ID)%创建插值原始数据x0,y0x0=-1:0.2:1;y0=1./(1+9.*x0.^2);yy=spline(x0,y0);%读取插值维数n=length(x0);%创建符号变量xsymsxfori=1:n-1y=yy.coefs(i,1)*(x-x0(i))^3+yy.coefs(i,2)*(x-x0(i))^2+
3、yy.coefs(i,3)*(x-x0(i))^1+yy.coefs(i,4);%因三次样条插值与原图过于相似,为避免重合,分列在两张图里面subplot(2,1,1)ezplot(y,[x0(i),x0(i+1)])title('someone(ID)三次样条')holdonaxis([-1101])endy=1/(1+9*x^2);subplot(2,1,2)ezplot(y,[-1,1]);title('someone(ID)三次样条')三次样条插值截图因三次样条插值与原图过于相似,为避免重合,分列在两张图里面2二次勒让德逼近代码%2homeworkofsomeo
4、ne(ID)%定义逼近原始函数%创建符号变量xsymsx;%定义目标函数,并作等值变换使得自变量的区间为[-1,1]azf=sin(0.5*pi+0.5*pi*x);%定义逼近次数n=2;%定义Legender多项式f1=[1x1.5*x^2-0.5];%通过循环依次计算系数fori=1:n+1g(i)=f1(i)*f;temp(i)=int(g(i),-1,1);a(i)=(2*i-1)*temp(i)/2;end%累加得出插值多项式pf=0;fori=1:n+1pf=pf+a(i)*f1(i);end%化简,取六位有效数字pf=simplify(pf);pf=vpa
5、(pf,6);ezplot(pf,[0,1])holdonezplot(f,[0,1])title('someone(ID)逼近')二次勒让德逼近截图3-1牛顿插值代码:%3-1homeworkofsomeone(ID)%创建插值原始数据x,yx=-5:5;y=1./(1+x.^2);%读取插值维数n=length(x);%定义需要的变量c(1:n)=0.0;symst;f=y(1);y1=0;l=1;%循环生成插值多项式for(i=1:n-1)for(j=i+1:n)y1(j)=(y(j)-y(i))/(x(j)-x(i));endc(i)=y1(i+1);l=l*(
6、t-x(i));f=f+c(i)*l;simplify(f);y=y1;%化简f=collect(f);f=vpa(f,6);end%画图symsp;q=1/(1+p^2);ezplot(q,[-5,5])%标题holdonezplot(f,[-5,5])title('牛顿插值someone(ID)')牛顿插值截屏:3-2拉格朗日插值代码:%3-2homeworkofsomeone(ID)%创建插值原始数据p=0:20;x=5*cos((2*p+1)*pi/42);y=1./(x.^2+1);%创建符号变量symst;n=length(x);f=0.0;%循环生成基函数
7、,分两段以绕过xi=xjfor(i=1:n)l=y(i);for(j=1:i-1)l=l*(t-x(j))/(x(i)-x(j));end;for(j=i+1:n)l=l*(t-x(j))/(x(i)-x(j));end;f=f+l;%化简simplify(f);end;%将插值多项式展开f=collect(f);%将插值多项式的系数化成6位精度的小数f=vpa(f,6);%输出ff%画图ezplot(f,[-5,5]);%标题title('拉格朗日someone(ID)')holdonsymss;q=1/(s^2+1);ezplot(q