节点大于28时拉格朗日插值函数图有偏差

问题描述

我不知道这是问这个问题的合适地方。但是我有以下代码基于节点 x 插入函数 y,该节点基于 termNumber

termNumber = 28;
x = (2.*(0:termNumber)./termNumber)-1;
y = exp(3.*x).*cos(3.*x);

sum=0;
for i=1:length(x)
    p=1;
    for j=1:length(x)
        if j~=i
            c = poly(x(j))/(x(i)-x(j));
            p = conv(p,c);
        end
    end
    term = P*y(i);
    sum= sum + term;
end
disp(sum);
K=flip(sum);

for  g=length(x):-1:2 %display the coefficient on polynomial form
    fprintf('+(%.2fx^%d)',K(g),g-1);
end

fprintf('+(%.2f)',K(1));

v=linspace(-1,1,100);
b = polyval(sum,v);
b1 = exp(3.*v).*cos(3.*v);
plot(v,b,'o') %display lagrange polynomial
hold on
plot(v,b1) %display actual function

termNumber 小于 28 时,使用上述方法正确显示图形:见下图:graph when termNumber = 28 其中红色曲线是实际函数(蓝色是拉格朗日插值多项式)。但是当 termNumber >= 29 时,两条曲线开始分离: termNumber = 29 。当 termNumber 变大时,两条曲线都不再可重新调整termNumber = 40。由于我根据教科书对方法进行了编码,因此我似乎无法弄清楚我做错了什么。任何输入表示赞赏。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)