sympy:表达简化

时间:2013-06-02 01:53:48

标签: python sympy

我从sympy python lib开始。

如果,我有这个表达

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

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:2)

collect确实是你想要的功能。您可以将多个符号作为集合变量传递以收集它们。正如您所注意到的,collect不会首先扩展您的表达式,因此如果您需要,则必须使用expand自行完成。

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