方法一:Lagrange插值
function [y]=lagrange(x0,y0,x)
n=length(x0);y=zeros(1,length(x));
for k=1:n
t=ones(1,length(x));
for i=1:n
if i~=k
t=t.*(x-x0(i))/(x0(k)-x0(i));
end
end
y=y+t*y0(k);
end
end
方法二:Newton插值
function [y]=newton(x0,y0,x)
n=length(x0);f=zeros(n,n);
for k=1:n
f(k,1)=y0(k);
end
for i=2:n
for k=i:n
f(k,i)=(f(k,i-1)-f(k-1,i-1))/(x0(k)-x0(k+1-i));
end
end
y=f(1,1);
for k=2:n
t=ones(1,length(x));
for j=1:k-1
t=t.*(x-x0(j));
end
y=f(k,k)*t+y;
end