好文档 - 专业文书写作范文服务资料分享网站

MATLAB实现拉格朗日插值

天下 分享 时间: 加入收藏 我要投稿 点赞

数值分析上机报告

题目:插值法学号:姓名:靳会有

4

一、调用MATLAB内带函数插值

1、MATLAB内带插值函数列举如下:

interp1 interpft interp2 interp3 interpn spline meshgrid ndgrid griddata 一维数据内插(查表法) 使用FFT方法的一维数据内插 二维数据内插(查表法) 三维数据内插(查表法) 多维数据内插(查表法) 三次样条内插 为三维绘图产生X和Y阵 为多维函数和内插产生阵列 数据网格 2、取其中的一维数据内插函数(interp1)为例,程序如下:

其调用格式为:

yi=interp1(x, y, xi)

yi=interp1(x, y, xi, method)

举例如下:

x=0:10:100

y=[40 44 46 52 65 76 80 82 88 92 110]; xi=0:1:100

yi=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 文件:

function f = Language(x,y,x0)

syms t l;

if(length(x) == length(y)) n = length(x); else

disp('x和y的维数不相等!'); return; %检错 end h=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; end

simplify(h); if(nargin == 3)

f = subs (h,'t',x0); %计算插值点的函数值 else

f=collect(h);

f = vpa(f,6); %将插值多项式的系数化成6位精度的小数 end

在MATLAB中输入:

x=[18 31 66 68 70 72 70;] y=[23 33 52 51 43 40 46];

f=Language(x,y) plot(x,y)

结果为:

f =Inf + (-t)*Inf - *t^2 + *t^3 - *t^4 + *t^5 - *t^6

图形如下:

MATLAB实现拉格朗日插值

建立如下拉格朗日插值函数: function y=lagrange(x0,y0,x); n=length(x0); m=length(x); for i=1:m z=x(i); s=;

for k=1:n p=;

for j=1:n if j~=k

9ftad96xcb83hrt8bf1m52amw9lhy700897
领取福利

微信扫码领取福利

微信扫码分享