MATLAB实现拉格朗日插值精编版_第1页
MATLAB实现拉格朗日插值精编版_第2页
MATLAB实现拉格朗日插值精编版_第3页
MATLAB实现拉格朗日插值精编版_第4页
MATLAB实现拉格朗日插值精编版_第5页
免费预览已结束,剩余4页可下载查看

下载本文档

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

文档简介

1、最新资料推荐数值分析上机报告题目:插值法学号:201014924姓名:靳会有i最新资料推荐一、调用MATLA的带函数插值1、MATLA的带插值函数列举如下:interp1 interpft interp2 interp3 interpn spline meshgrid ndgrid griddata一维数据内插(查表法)使用FFT方法的一维数据内插 二维数据内插(查表法) 三维数据内插(查表法) 多维数据内插(查表法) 三次样条内插为三维绘图产生X和Y阵 为多维函数和内插产生阵列 数据网格2、取其中的一维数据内插函数(interpl)为例,程序如下: 其调用格式为:yi=interp1(x,

2、y, xi)yi=interp1(x, y, xi, method)举例如下:x=0:10:100y=40 44 46 52 65 76 80 82 88 92 110;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

3、) 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,;Y1VY2, 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=meshgr

4、id(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文件:function f = Language(x,y,x0) syms t l;if(length(x) = length(y)n = length(x);elsedisp(x和y的维数不

5、相等!);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=18 31 66 68 70 72 70;y=23 33 52 51 43 40 4

6、6;f=Language(x,y)plot(x,y)结果为:f =Inf + (-t)*Inf - 54329.8*tA2 + 1503.75*tA3 - 22.2065*tA4 + 0.16789*tA5 -0.000512106*tA6图形如下:MATLAB实现拉格朗日插值建立如下拉格朗日插值函数:function y=lagrange(x0,y0,x);n=length(x0);m=length(x);for i=1:mz=x(i);s=0.0;for k=1:np=1.0;for j=1:n if j=kp=p*(z-x0(j)/(x0(k)-x0(j);endends=p*y0(k)

7、+s;endy(i)=s;end画图程序如下:x=-5:1:5;y=1./(1+x.A2); x0=-5:0.001:5; y0=lagrange(x,y,x0); y1=1./(1+x0.A2); plot(x0,y0,r,) hold on plot(x0,y1,g)注:画出的图形为n =10的图形得到图形如下:牛顿K次插值多项式、实验目的:1、掌握牛顿插值法的基本思路和步骤。2、培养编程与上机调试能力。二、牛顿插值法基本思路与计算步骤:给定插值点序列(x,f(xj) ,i =0,1, ,n,o构造牛顿插值多项式 Nn(u)。输入要计算的函数点x,并计算Nn(x)的值,利用牛顿插值公式,当

8、增加一个节点时,只需在后面多计算 一项,而前面的计算仍有用; 另一方面Nn(x)的各项系数恰好又是各阶均差,而各阶均差可用均差公式来计算。居F为3的一阶均差。的k阶均差。均差表:xk零阶均一阶均差二阶均差三阶均差差X)f(X )Xf(X 1)fX 0, X 1X2f(X 2)fX 1, X 2fX 0,X1, X 2X3f(X 3)fX 2, X 3fX 1, X 2,X3fX 0,X1, X 2X3MMMMM牛顿插值法计算步骤:1 .输入n值及(xi, f(Xi),i =0,1,,n,;要计算的函数点x。2 .对给定的x,由Nn(x) = f(X0)(x -X0) f lx0,Xi 1 (x

9、 -X0)(X -x1)f 必,。x? 1 |l| (x- x(o) (x -xi) IH(x -xn3)fx0,xil|l,xn 计算Nn(x)的值。3 .输出 Nn(x)。程序清单:functionc, d=newpoly(x, y)%牛顿插值的MATLAB实现%这里x为n个节点的横坐标所组成的向量,y为纵坐标所组成的向量。%c为所求的牛顿插值多项式的系数构成的向量。n=length(x);% 取 x 的个数。d=zeros(n, n);%构造nXn的空数组。d(: , 1)=y;for j=2 : nfor k=j : nd(k, j)=(d(k, j-1) - d(k-1, j-1)

10、/ (x(k)-x(k-j+1);endendc =d(n, n);for k=(n-1) : - 1 : 1c =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, x 3=0.7, x4=0.7,函数值:丫0=-0.916291,y1=-0.693147,y2=-0.510826, y3=-0.357765,y4=-0.223144建立一个主程序 np.mclcclear-0.223144)newpoly(0.4,0.5,0.6,0.7,0.8, -0.9

温馨提示

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

评论

0/150

提交评论