2016-12-02 30 views
0
定義一個函數

我寫下了這樣的代碼來計算積分ParEa在功能J的條款如下:在MATLAB

Laa = 0.01; 
ja = 1; 
De = 0.001; 
J = @(Oma) ja.* Oma .*exp(-Oma/Laa); 
ParEaa = @(Oma) pi.^(-1).*J./(Oma.*(Oma + De)); 
IParEaa = integral(ParEaa, 0, inf) 

但它給人的錯誤:

未定義的函數或方法輸入參數 類型'function_handle'的'整數'。

錯誤==>樣品中的9 IParEaa =積分(ParEaa,0,INF)

我要計算的積分而不代的J明確表達成ParEa?我應該怎麼做?

回答

0

我認爲你在混合符號和數字集成。 我不能用Matlab檢查,但我會建議如下:

數值模擬:

J = @(Oma) ja.* Oma .*exp(-Oma/Laa); 
ParEaa = @(Oma,J) pi.^(-1).*J./(Oma.*(Oma + De)); 
IParEaa = integral(ParEaa, 0, inf) 

對於符號積分:

syms oma 
expr = pi^(-1)*(ja*Oma*exp(-Oma/Laa))/(Oma*(Oma + De)); 
int(expr,oma,0,inf) 

我希望它的工作原理, 邁克爾

+0

謝謝。但數值模擬給出了相同的誤差。至於符號整合,我不想替換這個函數。 – Farhad

+0

你好, 我希望它仍然相關。我檢查了數字,我認爲用J代入ParEaa會更好。這樣該函數只依賴於一個變量。 對於象徵性的,爲什麼你不想替代? 一般來說,你想只有一個「價值」,或者你想擁有整個表達? Micha –

+0

嘿, 我終於有機會用Matlab進行檢查。以下代碼在我的機器上運行: 'Laa = 0.01; ja = 1; De = 0.001; J = @(Oma)ja。* Oma。* exp(-Oma./Laa); (Oma)pi( - 1)。* J(Oma)./(Oma。*(Oma + De)); IParEaa =整數(ParEaa,0,inf)' –