www.gusucode.com > MATLAB实现牛顿插值的源程序 > MATLAB实现牛顿插值的源程序/Newton.m

    function yi=Newton(x,y,xi)
%Newton插值方法,给定一系列插值的点(x,y),得到在x=xi处的,牛顿插值多项的值yi
n=length(x);
m=length(y);
if m~=n
    error('x,y的长度不一样,请重新输入!');
    return
end
A=zeros(n);    %定义差商表
A(:,1)=y;      %差商表第一列为y
for j=2:n               %j为列标
    for i=1:(n-j+1)     %i为行标
        A(i,j)=(A(i+1,j-1)-A(i,j-1))/(x(i+j-1)-x(i));   %计算差商表
    end
end
%根据差商表,求对应的牛顿插值多项式在x=xi处的值yi
N(1)=A(1,1);
for j=2:n
    T=1;
    for i=1:j-1
        T=T*(xi-x(i));
    end
    N(j)=A(1,j)*T;
end
yi=sum(N);   %将x=xi带入牛顿插值多项式,得到的yi的值
end