2013-12-03 59 views
0

我試圖編寫計算差商的函數。我需要這個多項式插值。給定節點x = linspace(a,b,n+1),節點y = func(x)處的函數值我想查找差異商f[x0], f[x_0,x_1], ..., f[x_0,x_1,...,x_n]的值。要計算f[x_0,x_1,...,x_n]我需要f[x_0,x_1,...,x_(n-1)]等,因此這是一個好主意,保存中途步驟到f[x_0,x_1,...,x_n],這樣在我去f[x_0,x_1,...,x_n]的路上,我會將前面的差商保存爲向量的元素。保存遞歸函數的中間變量值

有人能告訴我如何糾正我的代碼,以保存適當的差商值?下面的代碼:

function [fx, all_fx] = ilo2(a,b,x,y,fx,all_fx) 
    if a == b 
     fx(end+1) = y(a); 
     if a == 1 
      all_fx(end+1) = fx(end); 
     end 
     return 
    end 
    a; 
    b; 
    [c, all_fx] = ilo2(a+1,b,x,y,fx,all_fx); 
    [d, all_fx] = ilo2(a,b-1,x,y,fx,all_fx); 
    fx(end+1) = (c-d)/(b-a); 
    if a == 1 
     all_fx(end+1) = fx(end); 
    end 
end 

的差商,我需要的條件下,「if a == 1」。

回答

0

好吧,我想我固定它:

function [all_fx,fx] = ilo(a,b,x,y,all_fx,fx) 
    if a == b 
     fx(end+1) = y(a); 
     if a == 1 
      all_fx(end+1) = fx(end); 
     end 
     return 
    end 
    [all_fx,c] = ilo(a+1,b,x,y,all_fx,fx); 
    [all_fx,d] = ilo(a,b-1,x,y,all_fx,fx); 
    fx(end+1) = (c-d)/(b-a); 
    if a == 1 
     all_fx(end+1) = fx(end); 
    end 
end