我从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
答案 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