2016-07-20 100 views
0

功能二重積分假設3個變量的函數爲F(T,x,y)=ln(T-x)exp(T+y^3),我想計算像涉及3個變量

H(T)=\int_0^T \int_0^x ln(T-x)exp(T+y^3) dy dx

事情我想的是,對於T的不同值,比如0:0.25: 2,我可以立即獲得H(0:0.25:2)。我使用的代碼如下:

[email protected](T,x,y) ln(T-x)exp(T+y^3) 
[email protected](x)x 
[email protected](T)arrayfun(@(s)integral2(fun,0,s,0,ymax),T) 

但它不起作用。 Matlab給出錯誤。如何解決這個問題呢?

回答

0

在Matlab中,自然對數不是ln(),而是log()

首先,改變你的功能如下圖。

[email protected](x,y) log(T-x).*exp(T+y.^3) 

在這裏,我用於產品的操作者*,並且爲了描述矩陣乘積在*^前加入.

一個例子是下面,根據T.獲得積分

T=0:0.25:5; 

N=length(T); 

all_H=zeros(1,N); 

s=2; 

for k=1:N; 

    [email protected](x,y) log(T(k)-x).*exp(T(k)+y.^3) 
    [email protected](x)x 
    H=integral2(fun,0,s,0,ymax) 

    all_H(k)=H; 

end 

plot(abs(all_H)) 
+0

是否有可能不進行循環寫?就像我們定義f = @(t)t。^ 2一樣,f([0,1,2])可以在不使用for循環的情況下計算出來。 –

+0

我想如果你不想使用for循環,'integral2'函數是不正確的。 – KKS

+0

使用integral2不是必須的,如果它不受限制,是否仍然可以將問題簡化爲我的目標,即不使用for循環? –