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标准。因此,==运算符与表达式的粗鲁结构匹配,而不执行任何数学变换(除了在表达式构造中发生的以前的次要自动变换之外)。