2011-11-25 140 views
1

一個遞歸函數的我想計算以下符號積分這是遞歸的:積分在MATLAB

function [y] = myfunc(i,T) 
    s = sym('s'); 
    x= sym('x'); 
    h=[....] %matrix n*n (function of x) 
    d=[....] %matrix n*1 (constants) 
    for k=1:n 
     if (T>0) 
      y= int(exp(-s*x)*h(i,k)*myfunc(k,T-x/d(i)),'x',0,T); 
    end 
end 

我預期MATLAB,而計算的積分,來電myfunc(k,T-x/d(i))爲從0到「x」的不同值T.但是,它將返回錯誤,因爲myfunc將以符號值「x」調用,而不是實際值。確實,它不能確定if (T>0)表達式是真是假。

如果你能提出如何計算這個遞歸積分,我會很感激。謝謝

+0

我不認爲我能夠幫助你,但從試圖理解你的問題,我仍然不清楚'h'和'd'包含什麼。此外,在遞歸方案中,爲什麼當我傳遞函數時不會「更改」? – Vidar

+0

我寫了第一個簡單和小的代碼,只關注這個問題。但正如您所問,我編輯並添加了更多的細節。此外,'h'的元素是'x'函數的概率密度函數,'d'包含常量值...謝謝 – Joseph

+0

符號集成不會通過遞歸調用不同值的myfunc來工作。這種方法只適用於數字正交(顯然,它只是近似於積分,儘管通常很好)。 –

回答

0

如果你想確保在遞歸函數的每一步中使用不同的實際值,你可以定義一個變量來說明你有多深。

假設我們把它叫做depth,並在頂級它等於1。每次你去一個更深一步,你的1

增加depth現在,如果你想獲得對應的數正確的深度,你可以把它叫做y(depth)