2013-06-02 110 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