function p = newton(x,xi,yi,n)
%ton(n,n)是一个二位数组,用来保存Newton插值多项式的表。
%ton第一列保存的是yi,函数值。
%x=11.5;
%n=5;
%x1=10;
for i = 1: 1 :n
%xi(1,i)=x1;
ton(i,1)=yi(1,i);
% ton(i,1)=log(x1);
%x1=x1+1;
end
%tx一维数组保存的是课本中P109页表5-2 右端的乘子乘积
%第一个是1
tx(1,1) = 1;
for j = 2 : 1 : n
tx(1,j) =tx(1,j-1)*(x-xi(1,j-1)) ;
end
%循环生成每阶差商, ton数组第二列保存的是第一阶差商,第三列保存的是第二阶差商。以此类推,直到N-1阶差商。
for i = 2: 1 : n
m=1;
for j = i : 1 : n
ton(j,i) = ( ton(j-1,i-1) - ton(j,i-1) )/( xi(1,m) - xi(1,j) );
m = m + 1;
end
end
%用P来保存计算结果。Newton多项式Nn(x) 为ton二维数组表示的矩阵的对角线上的差商值与右端乘子乘积的和即tx()数组的乘积的和。
p = 0;
for i = 1: 1 : n
p = p + ( ton(i,i) * tx(1,i) ) ;
end
%ton(n,n)是一个二位数组,用来保存Newton插值多项式的表。
%ton第一列保存的是yi,函数值。
%x=11.5;
%n=5;
%x1=10;
for i = 1: 1 :n
%xi(1,i)=x1;
ton(i,1)=yi(1,i);
% ton(i,1)=log(x1);
%x1=x1+1;
end
%tx一维数组保存的是课本中P109页表5-2 右端的乘子乘积
%第一个是1
tx(1,1) = 1;
for j = 2 : 1 : n
tx(1,j) =tx(1,j-1)*(x-xi(1,j-1)) ;
end
%循环生成每阶差商, ton数组第二列保存的是第一阶差商,第三列保存的是第二阶差商。以此类推,直到N-1阶差商。
for i = 2: 1 : n
m=1;
for j = i : 1 : n
ton(j,i) = ( ton(j-1,i-1) - ton(j,i-1) )/( xi(1,m) - xi(1,j) );
m = m + 1;
end
end
%用P来保存计算结果。Newton多项式Nn(x) 为ton二维数组表示的矩阵的对角线上的差商值与右端乘子乘积的和即tx()数组的乘积的和。
p = 0;
for i = 1: 1 : n
p = p + ( ton(i,i) * tx(1,i) ) ;
end