拉格朗日插值的matlab实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2、拉格朗日插值

function[f,f0]=Language(x,y,x0)

%求已知数据点的拉格朗日插值多项式

%已知数据点的x坐标向量:x

%已知数据点的y坐标向量:y

%插值点的x坐标:x0

%求得的拉格朗日插值多项式:f

%x0处的插值:f0

syms t;

if(length(x)==length(y))

n=length(x);

else

disp('x和y的维数不相等!');

return;

end %检错

f=0.0;

for(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

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

运行程序;

x=0:0.5:3;

y=[0 0.4794 0.8415 0.9975 0.9093 0.5985 0.1411];

[f,f0]=Language(x,y,1.6) %计算输出的拉格朗日插值多项式

%计算x=1.6时的插值输出值f0

运行结果

f =

-799/3125*t*(t-1)*(t-3/2)*(t-2)*(t-5/2)*(t-3)+561/500*t*(t-1/2)*(t-3/2)*(t-2)*(t-5/2)*(t-3)-133/75 *t*(t-1/2)*(t-1)*(t-2)*(t-5/2)*(t-3)+3031/2500*t*(t-1/2)*(t-1)*(t-3/2)*(t-5/2)*(t-3)-399/1250*t*(t-

1/2)*(t-1)*(t-3/2)*(t-2)*(t-3)+1411/112500*t*(t-1/2)*(t-1)*(t-3/2)*(t-2)*(t-5/2) f0 =

0.9996

相关文档
最新文档