agui_lagrange.m:
function f=agui_lagrange(x0,y0,x)
% x0为节点向量,y0为节点上的函数值,x为插值点,f为返回插值
n=length(x0);m=length(x);
format long
s=0.0;
for k=1:n
p=1.0;
for j=1:n
if j~=k
p=p*(x-x0(j))/(x0(k)-x0(j));
end
end
s=p*y0(k)+s;
end
f=s;
end
Newton_fun.m:
function p= Newton_fun(x,xi,yi)
%参数说明:
%x:需要计算的近似值
%xi:函数表的x的数组
%yi:函数表的y的数组
%牛顿插值
n=length(xi);
f=zeros(n,n);
% 对差商表第一列赋值
for k=1:n
f(k)=yi(k);
end
% 求差商表
for i=2:n % 差商表从0阶开始;但是矩阵是从1维开始存储!!!!!!
for k=i:n
f(k,i)=(f(k,i-1)-f(k-1,i-1))/(xi(k)-xi(k+1-i));
end
end
%disp('差商表如下:');
%disp(f);
%求插值多项式
p=0;
for k=2:n
t=1;
for j=1:k-1
t=t*(x-xi(j));
disp(t)
end
p=f(k,k)*t+p;
p=vpa(p,5);
disp(p)
end
p=f(1,1)+p;
end