资源描述:
《计算方法第一次上机作业.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、计算方法第一次上机作业姓名:gegebao学院:学号:摘要:程序代码基于MATLAB,包含问题表述、辅助插值的函数、插值函数、表达式、图像和文字说明、分析讨论几个部分一、问题表述对Runge函数R(x)(1/(1+x^2)),利用下列条件做插值逼近,并与R(x)的图像进行比较。1.用等距节点xi=-5+i,i=0,1,2…10,绘出它的10次New通插值多项式的图像;2.用节点xi=5cos2i+142π,i=0,1,2,3…20,绘出它的20次Lagrange插值多项式的图像;3.用等距节点xi=-5+i,i=0,1,2…10,绘出它的分段线性插值函数的图像;4
2、.用等距节点xi=-5+i,i=0,1,2…10,,绘出它的分段三次Hermite插值函数的图像;5.用等距节点xi=-5+i,i=0,1,2…10,,绘出它的三次自然样条插值函数的图像。二、辅助插值的函数1.create(x0)输入一组插值节点,输出函数(1/(1+x0(i)^2))对应的一组函数值y0与导数值c0function[y0c0]=create(x0)l=length(x0);%获取节点个数y0=x0;fori=1:l%逐个求出函数值和导数y0(i)=1/(1+x0(i)^2);c0(i)=-2*x0(i)/(1+x0(i)^2)^2;endend2
3、.output(y,c),输出关于x的多项式y在[-5,-5]上的图像,c表示图像颜色function[]=output(y,c)x1=-5:0.01:5;y1=subs(y,'x',x1);%根据多项式生成对应的大量坐标点plot(x1,y1,c);%根据这些坐标点生成图像,颜色由c决定end三,插值函数1.输出原函数R(x)的代码:x0=-5:0.001:5;y0=create(x0);plot(x0,y0,'b');2.牛顿插值法newton(x0,y0)的代码:输入插值节点和其函数值组成的两个数组(x0,y0)返回插值后多项式表达式function[L]=
4、newton(x0,y0)l=length(x0)-1;%求差商系数,在一个二维的数组中,利用递推关系,生成后面的系数M=zeros(l+1,l+1);M(1:l+1,1)=y0';fork=2:l+1form=2:kM(k,m)=(M(k,m-1)-M(k-1,m-1))/(x0(k)-x0(k-m+1));endendsymsx;%代入系数,生成相应的表达式L=0;fork=1:l+1a=M(k,k);form=1:k-1a=a*(x-x0(m));endL=L+a;endL=expand(L);end3.拉格朗日插值法Lagtange(x0,y0)的代码:输
5、入插值节点和其函数值组成的两个数组(x0,y0),返回插值后多项式表达式function[L]=Lagtange(x0,y0)symsx;l=length(x0);L=0;fori=1:l%依次生成每一项,最后得到其多项式表达式a=y0(i);forj=1:lifi~=ja=expand(a*(x-x0(j))/(x0(i)-x0(j)));endendL=L+a;endL=expand(L);end4.分段线性插值Runge(x0,y0)输入插值节点和其函数值组成的两个数组(x0,y0)。因为这个分段函数相对复杂,就将插值过程与作图过程结合起来。在每一个区间里进
6、行线性插值的到表达式后,直接将绘图所需要的致密的坐标点记录到坐标数组(x1,y1)里,最后直接用plot函数输出图像。function[x1,y1]=Runge(x0,y0)l=length(x0);symsx;x1=x0(1);y1=y0(1);fori=1:l-1xc=x0(i)+0.01:0.01:x0(i+1)-0.01;%生成需要的节点y=y0(i)*(x-x0(i+1))/(x0(i)-x0(i+1))+y0(i+1)*(x-x0(i))/(x0(i+1)-x0(i));%每个区间内的y数表达式x1=[x1xc];y1=[y1subs(y,'x',xc
7、)];%生成相应的坐标点endplot(x1,y1,'r');%一起输出end5.三次Hermite(x0,y0)插值函数输入插值节点和其函数值组成的两个数组(x0,y0),其中c0是在x0点上的函数导数,直接输出图像function[x0,y0]=Hermite(a0,b0,c0)l=length(a0);symsx;x1=a0(1);y1=b0(1);fori=1:l-1%a、b、c、d是其该区间的基函数a=(1+2*(x-a0(i))/(a0(i+1)-a0(i)))*(x-a0(i+1))^2/(a0(i)-a0(i+1))^2;b=(1+2*(x-a0(
8、i+1))