0

我正在使用以下功能:

f(x) = a*(1+cos(3*x)) 其中 a 是常数/参数。

y(x) = exp(-b*f(x)) 其中 b 是另一个常数。

我需要计算定积分积分(0,2pi)y(x)dx。

我正在尝试为我们的研究小组实施另一篇研究论文。我知道输出必须包含第一类修改过的贝塞尔函数,它们是“a”的函数。Matlab 只是拒绝评估这个积分。

以下是我的代码(Matlab):

syms x;
syms a;
syms b;

f_x = a*(1+cos(3*x));
y_x = exp(-b*f_x);
z_x = int(y_x, x, 0, 2*pi)

输出:

Warning: Explicit integral could not be found. 

z_x =

int(1/exp(a*b*(cos(3*x) + 1)), x = 0..2*pi)

请求您帮助解决这个问题!我确信积分在很多地方都包含像 I(a) 等贝塞尔函数。我需要在这里做任何预处理吗?我有点迫切需要这个解决方案。我很欣赏可以至少指出正确方向的快速响应。

4

2 回答 2

0

解决了!。它在mathematica中工作,在Matlab中失败。

于 2012-04-12T18:31:21.177 回答
0

从 R2017b 开始,这有效。使用int

>> syms x;
syms a;
syms b;

f_x = a*(1+cos(3*x));
y_x = exp(-b*f_x);
z_x = int(y_x, x, 0, 2*pi)

z_x =
2*pi*exp(-a*b)*besselj(0, a*b*1i)
于 2017-09-25T18:41:47.363 回答