拉格朗日的插值编码故障结果

时间:2016-11-15 14:38:14

标签: matlab interpolation numerical-methods

我试图在MATLAB中为y=x^2+xe^(x)计算拉格朗日插值方法。我写了以下代码:

clc
clear
close all

x0=4.7;
n=10;
x=linspace(0,5,n);
y=x.^2+x.*exp(x);

syms t
L=sym(ones(1,n));
P_x=sym(0);
for i=1:n
    for j=1:n
        L_improcess=(t-x(j))/(x(i)-x(j));
        if(i==j)
            continue
        end
        L(i)=L(i)*L_improcess;
        P_x=y(i)*L(i)+P_x;
    end
end
P=double(subs(P_x,t,x0));
disp(['Lagrange interpolation: P= ',num2str(P)])
disp(['the real value from original function is:' num2str(x0^2+x0*exp(x0))])

所以x0=4.7的结果是:

Lagrange interpolation: P= 20195.8626
the real value from original function is:538.8417

我想知道两个结果之间的差异(两者都必须几乎相同) f(x)的拉格朗日插值方法是这样的:

enter image description here

有关拉格朗日插值的更多信息可用 here

1 个答案:

答案 0 :(得分:1)

这一行:

P_x=y(i)*L(i)+P_x;

应该在i上循环,而不是j。