python - Python (+SymPy):如何获得与 Mathematica 相同的结果?
问题描述
我使用Mathematica和Python计算了以下内容。
使用以下代码的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]}]]
给出了一个相当不错的结果:
但是,以下 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)))
产生一个相当混乱的结果:
为了在 Mathematica 中获得相同的结果,我在 Python 代码中缺少什么?或者有可能吗?
解决方案
该函数cancel
可用于取消分数:
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)
推荐阅读
- javascript - 如何停止 React.useEffect 的副作用?
- reactjs - 如何在 react-router 中使用链接
- python - 如何找到列表中的最小整数?
- flutter - Chrome 扩展程序是否可以在 Flutter Web 应用程序的运行时添加/删除小部件?
- ansible - Ansible Tower 未找到集合
- c# - EF Core 3.1 组合连接和分组时意外 SQL 生成
- wordpress - 在商品档案中向用户显示每个购买商品的数量
- amazon-web-services - AWS DynamoDB 中 PointInTimeRecoveryEnabled 的默认设置是什么?
- git - 如何获取对本地编辑器的拉取请求更改?
- python - 如何用数字列表替换满足条件的数组的某些值