如何在 matlab 中对函数进行符号积分,我知道输出必须包含贝塞尔函数?

问题描述 投票:0回答:2

我正在使用以下功能:

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) 等。我需要在这里做任何预处理吗?我迫切需要这个解决方案。我很欣赏快速回复,这至少可以指出正确的方向。

matlab symbolic-math symbolic-integration
2个回答
0
投票

解决了!它在mathematica中有效,在Matlab中失败。


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)
© www.soinside.com 2019 - 2024. All rights reserved.