Matlab语言-关于拉格朗日插值法实现求值

拉格朗日插值法

拉格朗日插值法:给定n个插值节点x1,x2,…,xn和各个节点对应的函数值y1,y2,…yn,利用拉格朗日插值多项式公式L_{n}(x)=\sum y_{i}l_{i}(x),则可以得到在插值区间内的任意X的函数的值y
当用插值基函数lk(x)表示n次插值多项式L(x)时,这一过程称为n次拉格朗日插值。
拉格朗日插值法的构造方法是在线性插值和抛物线插值的基础上慢慢深化起来的。
基函数的性质

  1. n+1个节点的基函数是n次代数多项式。
  2. 基函数在节点取值为0或者1,即第i个节点xi基函数为1,其他都为0
  3. 基函数和每个节点有关,与被插值函数无关
    代码
    网上有许多大神写的代码,都大同小异。我这稍微改了一下,写的啰嗦一点,多多大家指教
function yn=Lan(x,y,xi)
%UNTITLED Summary of this function goes here
%   Detailed explanation goes here
m=length(x);
n=length(y);
t=ones(1,xi);%生成基函数
s=0;
if m~=n
    error('输入错误,x,y长度不一致');%检查输入是否完整
end
for i=1:n;%利用2层for循环将公式用代码实现
    for j=1:n
        if j~=i%当j不等于i时,进行连乘
            t=t.*(xi-x(j))/(x(i)-x(j));
        end
    end
    s=s+t*y(i);%进行连续相加
end
yn=s;%得出结果

end

你可能感兴趣的:(数值计算)