涉及3个变量的函数的双积分

时间:2016-07-20 07:12:53

标签: matlab

假设3个变量的函数是F(T,x,y)=ln(T-x)exp(T+y^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)。我使用的代码如下:

fun=@(T,x,y) ln(T-x)exp(T+y^3)
ymax=@(x)x
H=@(T)arrayfun(@(s)integral2(fun,0,s,0,ymax),T)

但它不起作用。 Matlab给出了错误。如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

在Matlab中,自然日志不是ln(),而是log()

首先,将您的功能更改为以下模式。

fun=@(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;

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

    all_H(k)=H;

end

plot(abs(all_H))