如果不应该是

时间:2017-02-13 04:59:13

标签: python python-2.7 sympy symbolic-math

对于上下文:我在python 2.7中使用sympy。我的项目的一部分涉及简化数学表达式,但在使用sympy时我遇到了一个问题:

from sympy import *
x = symbols ("x")
(-x*exp(-x) + exp(-x)) == (1-x)*(exp(-x))

上面的代码返回我

False

我自己的数学和wolframalpha都不同意这一点 - 我输错了什么,或者这是一些我不知道的同情的缺点?

2 个答案:

答案 0 :(得分:1)

从文档页面: http://docs.sympy.org/dev/gotchas.html

  

如果要测试符号相等性,一种方法是从另一个中减去一个表达式,并通过像expand(),simplify()和trigsimp()这样的函数运行它,看看等式是否减少到0。

答案 1 :(得分:0)

如果要创建符号相等,请使用Eq

In [1]: Eq((-x*exp(-x) + exp(-x)), (1-x)*(exp(-x)))
Out[1]: 
     -x    -x             -x
- x⋅ℯ   + ℯ   = (-x + 1)⋅ℯ  

==运算符必须立即返回一个布尔表达式,这是一个Python标准。因此==运算符匹配表达式的粗糙结构而不执行任何数学转换(除了在表达式构造中发生的先前的小自动转换)。