MATLAB实现拉格朗日插值11_第1页
MATLAB实现拉格朗日插值11_第2页
MATLAB实现拉格朗日插值11_第3页
MATLAB实现拉格朗日插值11_第4页
MATLAB实现拉格朗日插值11_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第页数值分析上机报告题目:插值法学号:201914924姓名:靳会有一、调用MATLAB内带函数插值1、MATLAB内带插值函数列举如下:interp1interpftinterp2interp3interpnsplinemeshgridndgridgriddata一维数据内插(查表法)使用FFT方法的一维数据内插二维数据内插(查表法)三维数据内插(查表法)多维数据内插(查表法)三次样条内插为三维绘图产生X和Y阵为多维函数和内插产生阵列数据网格2、取其中的一维数据内插函数(interp1)为例,程序如下:其调用格式为:yi=interp1(x,y,xi)yi=interp1(x,y,xi,method)举例如下:x=0:10:100y=[40444652657680828892110];xi=0:1:100yi=interp1(x,y,xi,'spline')3、其他内带函数调用格式为:Interpft函数:y=interpft(x,n)y=interpft(x,n,dim)interp2函数:ZI=interp2(X,Y,Z,XI,YI),ZI=imerp2(Z,ntimes)ZI=interp2(Z,XI,YI),ZI=interp2(X,Y,Z,XI,YI,method)interp3函数:VI=interp3(X,Y,Z,V,XI,YI,ZI) VI=interp3(V,ntimes)VI=interp3(V,XI,YI,ZI)VI=interp3(…,method)Interpn函数:VI=interpn(X1,X2,X3,…,V,Y1,Y2,Y3,…) VI=interpn(V,ntimes)VI=interpn(V,Yl,Y2,Y3,…)VI=interpn(…,method)Spline函数:yi=spline(x,y,xi)pp=spline(x,y)meshgrid函数:[X,Y]=meshgrid(x,y)[X,Y]=meshgrid(x)[X,Y,Z]=meshgrid(x,y,z)Ndgrid函数:[X1,X2,X3,…]=ndgrid(x1,x2,x3,…)[X1,X2,X3,…]=ndgrid(x)Griddata函数:ZI=griddata(x,y,z,XI,YI)[XI,YI,ZI]=griddata(x,y,z,xi,yi)[…]=griddata(…method)二、自编函数插值1、拉格朗日插值法:建立M文件:functionf=Language(x,y,x0)symstl;if(length(x)==length(y))n=length(x);elsedisp('x和y的维数不相等!');return;%检错endh=sym(0);for(i=1:n)l=sym(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;h=h+l;endsimplify(h);if(nargin==3)f=subs(h,'t',x0);%计算插值点的函数值elsef=collect(h);f=vpa(f,6);%将插值多项式的系数化成6位精度的小数end在MATLAB中输入:x=[18316668707270;]y=[23335251434046];f=Language(x,y)plot(x,y)结果为:f=Inf+(-t)*Inf-54329.8*t^2+1503.75*t^3-22.2065*t^4+0.16789*t^5-0.000512106*t^6图形如下:MATLAB实现拉格朗日插值建立如下拉格朗日插值函数:functiony=lagrange(x0,y0,x);n=length(x0);m=length(x);fori=1:mz=x(i);s=0.0;fork=1:np=1.0;forj=1:nifj~=kp=p*(z-x0(j))/(x0(k)-x0(j));endends=p*y0(k)+s;endy(i)=s;end画图程序如下:x=[-5:1:5];y=1./(1+x.^2);x0=[-5:0.001:5];y0=lagrange(x,y,x0);y1=1./(1+x0.^2);plot(x0,y0,'r')holdonplot(x0,y1,'g')注:画出的图形为n=10的图形得到图形如下:n=10的图像n=10的图像牛顿K次插值多项式一、实验目的:1、掌握牛顿插值法的基本思路和步骤。培养编程及上机调试能力。二、牛顿插值法基本思路及计算步骤:给定插值点序列(。构造牛顿插值多项式。输入要计算的函数点并计算的值,利用牛顿插值公式,当增加一个节点时,只需在后面多计算一项,而前面的计算仍有用;另一方面的各项系数恰好又是各阶均差,而各阶均差可用均差公式来计算。为的一阶均差。为的k阶均差。均差表:零阶均差一阶均差二阶均差三阶均差X0f(X0)X1f(X1)f[X0,X1]X2f(X2)f[X1,X2]f[X0,X1,X2]X3f(X3)f[X2,X3]f[X1,X2,X3]f[X0,X1,X2X3]MMMMM牛顿插值法计算步骤:输入值及(;要计算的函数点。对给定的由计算的值。3.输出。程序清单:function[c,d]=newpoly(x,y)%牛顿插值的MATLAB实现%这里x为n个节点的横坐标所组成的向量,y为纵坐标所组成的向量。%c为所求的牛顿插值多项式的系数构成的向量。 n=length(x);%取x的个数。 d=zeros(n,n);%构造nXn的空数组。 d(:,1)=y'; forj=2:n fork=j:n d(k,j)=(d(k,j-1)-d(k-1,j-1))/(x(k)-x(k-j+1)); end end c=d(n,n); fork=(n-1):-1:1 c=conv(c,poly(x(k)));%conv求积,poly(x)将该多项式的系数赋给向量。 m=length(c); c(m)=c(m)+d(k,k); end五、测试数据及结果:测试数据:(第三章习题第三题第2题)f(x)=lnx的数值如表所示,构造牛顿插值多项式并求ln0.53的值。X0.40.50.60.70.8lnx-0.916291-0.693147-0.510826-0.357765-0.223144解:由表可知x0=0.4,x1=0.5,x2=0.6,x3=0.7,x4=0.7,函数值:Y0=-0.916291,y1=-0.693147,y2=-0.510826,y3=-0.357765,y4=-0.223144建立一个主程序np.mclcclearnewpoly([0.4,0.5,0.6,0.7,0.8],[-0.916291,-0.693147,-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论