2017-10-04 125 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)