在 matlab 中计算积分

pik*_*eon 0 matlab

我想计算以下积分:

exp(-y^2/(2*a^2))* cosh(y)*log(cosh(y))
Run Code Online (Sandbox Code Playgroud)

y=0y = Inf

我需要为值向量做这个积分a吗?我怎样才能做到这一点?

Dan*_*iel 5

正如 IKavanagh 已经注意到的那样,您无法使用积分来计算积分,integral因为它超出了浮点值的范围。因此,使用符号工具箱可能是唯一的可能性。

%define your function:
syms a y
f=exp(-y^2/(2*a^2))* cosh(y)*log(cosh(y))
Run Code Online (Sandbox Code Playgroud)

现在您可以计算积分:

iF=int(f,y,0,inf);
Run Code Online (Sandbox Code Playgroud)

至少在我的 matlab 版本中,找不到明确的解决方案,引发了警告。因此,我们需要两个步骤,用预期值替换 a,然后使用 解决它vpa。如果最近的 matlab 版本找到了明确的解决方案,则使用vpa是不必要的。

solution=vpa(subs(iF,a,[1,2,3,4]))
Run Code Online (Sandbox Code Playgroud)