% Newton.m
function s=newton(x,y,x0,nn)
% Newton(牛顿)插值,x与y为已知的插值点及其函数值
% x0为需要求的插值点的x坐标值。nn为newton插值多项式的次数,即nn次newton插值多项式
nx=length(x);
ny=length(y);
if nx~=ny
warning('向量x与y的长度应该相同')
return;
end
m=length(x0);
% 按照公式,对需要求的插值点x0的每个元素进行计算
for i=1:m
t=0.0;
j=1;
yy=y;
kk=j;
% 求各级均差
while(kk kk=kk+1;
for k=kk:nx
yy(k)=(yy(k)-yy(kk-1))/(x(k)-x(kk-1));
end
end
% 求插值结果
t=yy(1);
for k=2:nn
u=1.0;
jj=1;
while(jj u=u*(x0(i)-x(jj));
jj=jj+1;
end
t=t+yy(k)*u;
end
s(i)=t;
end
return