0

我在 SymPy 0.7.3 中尝试了以下积分:

import sympy
from sympy import cos, sin, pi
sympy.var('x, L')
sympy.var('i, k', integer=True)

integrand = cos(pi*i*x/L)**2*cos(pi*k*x/L)**2*sin(pi*i*x/L)*sin(pi*k*x/L)

print(sympy.integrate(integrand, (x, 0, L), conds='none'))

我已经尝试过不使用conds参数,并且在没有成功integer=True声明时不使用。i, k

有没有其他解决方法来解决这个积分?

这个积分的解是0.

注意:如果有人感兴趣,SymPy 还会挂起其他类似的被积函数。我注意到当沿集成的简化导致0术语时,SymPy 的趋势是挂起,所以问题可能出在沿集成应用的简化算法中。

4

1 回答 1

1

不幸的是,目前 SymPy 处理三角积分的能力并不是那么好。它可能会比其他形式更好地处理某些形式(您可以使用 trigsimp'ing 输入来查看它是否有帮助)。

如果您不介意处理输出,则可以根据复指数重写被积函数。SymPy 在集成这些方面要好得多。使用.rewrite(exp). 不过,您必须使用.rewrite(sin)andsimplify最后才能将其恢复为三角函数。不幸的是,它对这个特殊的积分并没有真正的帮助:(

更好的三角积分即将到来。来自https://github.com/sympy/sympy/pull/2380的工作需要完成,并且需要实现另外一种算法。

于 2013-10-04T00:33:02.907 回答