2013-06-02 141 views
3

我從sympy python lib開始。sympy:表達式簡化

如果,我有這樣的表達

from sympy.abc import a,b,c,p,q 
e = p * (a + b) + q * (a + c) 

我如何使用a,b,c的因素是什麼?像

a(p+q) + b*p + c*q 

回答

5
from sympy.abc import a,b,c,p,q 
from sympy import collect, expand 
e = p * (a + b) + q * (a + c) 

print e 
print expand(e) 
print collect(expand(e),a) 
2

collect確實是你想要的功能。您可以傳遞多個符號作爲收集變量來收集全部。正如你注意到的,collect不會首先擴展你的表情,所以如果你想要的話,你必須用expand來自己動手。

In [15]: collect(e.expand(), [a, b, c]) 
Out[15]: a⋅(p + q) + b⋅p + c⋅q