Python(+SymPy):如何得到与Mathematica相同的结果?

2024-09-27 07:23:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用MathematicaPython计算了以下内容。你知道吗

enter image description here

Mathematica使用以下代码

f[x_] = a*b/(a - b)^2*Exp[-r*x] (Exp[-b*x] - Exp[-a*x]) (a*Exp[-b*x] - b*Exp[-a*x])
Assuming[{a > 0, b > 0, r > 0}, Integrate[f[x], {x, 0, \[Infinity]}]]

给出了一个相当不错的结果:

enter image description here

但是,下面的Python(带SymPy)代码

from sympy import *
init_printing()
x = symbols('x')
a, b, r = symbols('a b r', positive=True)
fun = a*b/((a-b)**2) * exp(-r*x) * (exp(-b*x) - exp(-a*x)) * (a*exp(-b*x) - b*exp(-a*x))
simplify(integrate(fun, (x, 0, oo)))

产生一个相当混乱的结果:

enter image description here

为了在Mathematica中获得相同的结果,Python代码中缺少了什么?还是有可能?你知道吗


Tags: 代码fromimportinitintegratesymbolssympyfun
1条回答
网友
1楼 · 发布于 2024-09-27 07:23:26

函数^{}可用于取消分数:

from sympy import *
init_printing()
x = symbols('x')
a, b, r = symbols('a b r', positive=True)
fun = a*b/((a-b)**2) * exp(-r*x) * (exp(-b*x) - exp(-a*x)) * (a*exp(-b*x) - b*exp(-a*x))
factor(cancel(integrate(fun, (x, 0, oo)))

给予

      a⋅b⋅(2⋅a + 2⋅b + r)
───────────────────────────────
(2⋅a + r)⋅(2⋅b + r)⋅(a + b + r)

相关问题 更多 >

    热门问题