假设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给出了错误。如何解决这个问题?
答案 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))