MATLAB 牛顿插值法程序

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

    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章