使用 sympy 更有效地集成表达式
Integrate expression more effectively with sympy
我正在尝试与 Sympy 进行以下集成:
import sympy as sp
sp.var('a e nu lamb omeg')
r = a*(1.-e**2)/(1. + e*sp.cos(lamb-omeg))
I = sp.integrate(r**2, lamb)
然后发生的事情是处理器保持在 100% 的状态几分钟,我的笔记本电脑变热,最后我厌倦了等待并放弃了。
令人惊讶的是,当我与 Maxima 进行相同的集成时,我几乎立即得到了结果。唯一的区别是 Maxima 问我 e**2-1
是正数还是负数。
如何使用 Sympy 获得相同的功能?为什么这不会自动发生?
显然,可以通过对常数进行假设来完成,尽管这与 Maxima 使用的假设不同:
import sympy as sp
sp.var('a e nu lamb omeg', positive=True, real=True)
r = a*(1.-e**2)/(1. + e*sp.cos(lamb-omeg))
I = sp.integrate(r**2, lamb)
我正在尝试与 Sympy 进行以下集成:
import sympy as sp
sp.var('a e nu lamb omeg')
r = a*(1.-e**2)/(1. + e*sp.cos(lamb-omeg))
I = sp.integrate(r**2, lamb)
然后发生的事情是处理器保持在 100% 的状态几分钟,我的笔记本电脑变热,最后我厌倦了等待并放弃了。
令人惊讶的是,当我与 Maxima 进行相同的集成时,我几乎立即得到了结果。唯一的区别是 Maxima 问我 e**2-1
是正数还是负数。
如何使用 Sympy 获得相同的功能?为什么这不会自动发生?
显然,可以通过对常数进行假设来完成,尽管这与 Maxima 使用的假设不同:
import sympy as sp
sp.var('a e nu lamb omeg', positive=True, real=True)
r = a*(1.-e**2)/(1. + e*sp.cos(lamb-omeg))
I = sp.integrate(r**2, lamb)