sympy中的语句返回false时,它不应该是
问题描述:
对于上下文:我在python 2.7中使用sympy。我的项目的一部分涉及简化的数学表达式,但我用sympy时遇到了一个问题:sympy中的语句返回false时,它不应该是
from sympy import *
x = symbols ("x")
(-x*exp(-x) + exp(-x)) == (1-x)*(exp(-x))
上面的代码返回我
False
两个我自己的数学和WolframAlpha的并不同意这种看法 - 做我输入了错误的东西,或者这是我还没意识到的sympy的一些缺点?
答
从文档页面: http://docs.sympy.org/dev/gotchas.html
如果你想测试象征性的平等,一个方法是从其他减去一个表达,并通过功能运行likeexpand(),简化了(),和如果你想创建一个象征性的平等trigsimp(),看看公式降低为0。
答
,使用Eq
:
In [1]: Eq((-x*exp(-x) + exp(-x)), (1-x)*(exp(-x)))
Out[1]:
-x -x -x
- x⋅ℯ + ℯ = (-x + 1)⋅ℯ
==
运算符必须立即返回一个布尔表达式,这是一个Python标准。因此,==
运算符与表达式的粗鲁结构匹配,而不执行任何数学变换(除了在表达式构造中发生的以前的次要自动变换之外)。