matlab实现newton插值

matlab实现newton插值_第1张图片
matlab实现newton插值_第2张图片
matlab实现newton插值_第3张图片
matlab实现newton插值_第4张图片

newton.m

function s=newton(x,y,t)
%计算输入的x y是否长度相等
if(length(x)==length(y))
    n=length(x);
else
    disp('x和y的维数不相等!');
    return;  
end
 
syms p;
s=y(1);
dd=zeros(1,100);
dxs=1;
 
 
for i=1:n-1
    for j=i+1:n
        dd(j)=(y(j)-y(i))/(x(j)-x(i));  %用来构造均差
    end
    temp(i)=dd(i+1);
    dxs=dxs*(p-x(i));
    s=s+temp(i)*dxs;
    y=dd;     %第一次将一阶均差赋给y,然后通过上面的dd(j)来构造二阶均差
    s=simplify(s);
    s=subs(s,'p',t);
    s=vpa(s,6);
end

你可能感兴趣的:(matlab)