文档库 最新最全的文档下载
当前位置:文档库 › 牛顿插值法matlab代码

牛顿插值法matlab代码

function [p2,z]=newTon(x,y,t) %输入参数中x,y为元素个数相等的向量,t为待估计的点,可以为数字或向量。 %输出参数中p2为所求得的牛顿插值多项式,z为利用多项式所得的t的函数值。
n=length(x);
chaS(1)=y(1);
for i=2:n
x1=x;y1=y;
x1(i+1:n)=[];
y1(i+1:n)=[];
n1=length(x1);
s1=0;
for j=1:n1
t1=1;
for k=1:n1
if k==j
continue;
else
t1=t1*(x1(j)-x1(k));
end
end
s1=s1+y1(j)/t1;
end
chaS(i)=s1;
end
b(1,:)=[zeros(1,n-1) chaS(1)];
cl=cell(1,n-1);
for i=2:n
u1=1;
for j=1:i-1
u1=conv(u1,[1 -x(j)]);
cl{i-1}=u1;
end
cl{i-1}=chaS(i)*cl{i-1};
b(i,:)=[zeros(1,n-i),cl{i-1}];
end
p2=b(1,:);
for j=2:n
p2=p2+b(j,:);
end
if length(t)==1
rm=0;
for i=1:n
rm=rm+p2(i)*t^(n-i);
end
z=rm;
else
k1=length(t);
rm=zeros(1,k1);
for j=1:k1
for i=1:n
rm(j)=rm(j)+p2(i)*t(j)^(n-i);
end
z=rm;
end
end
plot(t,z,'y',x,y,'*r')
axis([0,151,0.04,0.04])

相关文档