2016-07-20 71 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循环? –