2017-10-04 85 views
1

我不明白为什么表达式a * (... + 1) - a在简化时未被删除。下面的例子示出了错误:Sympy:简化基本表达式失败

import sympy as sy 

a,b,c = sy.symbols('a b c') 
expr = a * (b - c + 1) - a + (b - c) * (a - b) 
print expr    # printed: a*(b - c + 1) - a + (a - b)*(b - c) 
print expr.simplify() # printed: a*(b - c + 1) - a + (a - b)*(b - c) 

另一方面,如果我通过

expr = a * (b - c + 1) - a 

改变表达和呼叫simplify(),我将得到预期的结果a * (b - c)

Sympy版本是1.1rc1。

回答

0

simplify通常只能做有限的魔法。在这种情况下,可能会更多,但如果您需要,您需要提出功能请求。无论如何,最好告诉SymPy你想做什么样的修改。

这里,下面可能会满足你:

print(expr.factor()) # (2*a - b)*(b - c)