我正在使用以下功能:
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) 等。我需要在这里做任何预处理吗?我迫切需要这个解决方案。我很欣赏快速回复,这至少可以指出正确的方向。
解决了!它在mathematica中有效,在Matlab中失败。
从 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)