牛顿前差公式
%Newton向前插值的MATLAB程序function yi=newton1(x,y,xi)%等距节点的Newton向前插值公式,x为等距插值节点向量,按行输入% y为插值节点函数值向量,按行输入,xi为标量,自变量%计算初始值h=x(2)-x(1);t=(xi-x(1))/h;%计算差商表Yn=length(y);Y=zeros(n);Y(:,1)=y';%差分表第一列为 y,插值节点函数值for k=1:n-1 Y(:,k+1)=[diff(y',k);zeros(k,1)];end%Y %输出向前差分表%计算向前插值公式yi=Y(1,1);for i=1:n-1 z=t; for k=1:i-1 z=z*(t-k);%差分多项式 end yi=yi+Y(1,i+1)*z/prod([1:i]); %prod向量每个元素相乘endyi=vpa(yi,6);
例子
x=0:0.1:0.5;y=[1 0.995 0.98007 0.95534 0.92106 0.87758];xi=0.048;yi=newton1(x,y,xi)Y = 1.0000 -0.0050 -0.0099 0.0001 0.0001 -0.0000 0.9950 -0.0149 -0.0098 0.0003 0.0001 0 0.9801 -0.0247 -0.0095 0.0003 0 0 0.9553 -0.0343 -0.0092 0 0 0 0.9211 -0.0435 0 0 0 0 0.8776 0 0 0 0 0 yi = 0.998842