matlab拉格朗日插值程序function [a,d] = Lagrange(x)y=1./(1+x.^2);n=length(x); a=0;syms t lfor(i=1:n)l=1; 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; a=a+l*y(i);end;t=[0.75,1.75,2.75,3.75,4.75];d=subs(a

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/07 06:41:45

matlab拉格朗日插值程序
function [a,d] = Lagrange(x)
y=1./(1+x.^2);
n=length(x);
a=0;
syms t l
for(i=1:n)
l=1;
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;
a=a+l*y(i);
end;
t=[0.75,1.75,2.75,3.75,4.75];
d=subs(a);
end
求大神指点我的程序哪里不对?运算结果偏差很大.

用拉格朗日插值做y=1./(1+x.^2);本来就有很大的偏差,你的插值函数没写错


这是我做过的一个y=1/(1+25x^2)的图像 ,这里取得是11点,你的应该是5点的吧.你的做完是这种么.这样没错,插值法不适合太多点,想做多点的用的是分段插值.你应该是在学计算方法的课程吧,后边就会讲的.