代码改变世界

牛顿插值法,matlab编程计算

2018-10-14 12:20  a往南向北  阅读(6026)  评论(0)    收藏  举报

%保存文件名为New_Int.m

%Newton基本插值公式

%x为向量,全部的插值节点

%y为向量,差值节点处的函数值

%xi为标量,是自变量

%yi为xi出的函数估计值

function yi=New_Int(x,y,xi)

n=length(x);

m=length(y);

if n~=m

    error('The lengths of X ang Y must be equal!');

    return;

end

%计算均差表Y

Y=zeros(n);

Y(:,1)=y';

for k=1:n-1

    for i=1:n-k

        if abs(x(i+k)-x(i))<eps

            error('the DATA is error!');

            return;

        end

        Y(i,k+1)=(Y(i+1,k)-Y(i,k))/(x(i+k)-x(i));

    end

end

%计算牛顿插值公式

yi=0;

for i=1:n

    z=1;

    for k=1:i-1

        z=z*(xi-x(k));

    end

    yi=yi+Y(1,i)*z;

end