收集涉及sympy中所有因素的术语

时间:2020-08-05 21:06:37

标签: sympy

我有一个表达式,其中三个术语涉及r**2,我想将它们收集在一起并分解出r**2

>>> foo = a**2*r**2 + 2*a*b*x*r + 2*a*b*r**2 + b**2 + 2*b**2*r + b**2*r**2
>>> foo
 2  2          2                2  2      2      2
a ⋅r  + 2⋅a⋅b⋅r  + 2⋅a⋅b⋅r⋅x + b ⋅r  + 2⋅b ⋅r + b

simplify完全不会改变表达式。

在我的实际用例中,foo实际上是一个子表达式:我除以r ** 2的系数,因此该项将被抵消,并且所有内容都在平方根下。 / p>

所以一般的问题是:如果我想对子表达式进行转换,例如考虑到某些术语,我该如何在子表达式上而不是整个表达式上做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以使用collect

In [84]: collect(foo, r**2)
Out[84]:
               2      2    2 ⎛ 2            2⎞
2⋅a⋅b⋅r⋅x + 2⋅b ⋅r + b  + r ⋅⎝a  + 2⋅a⋅b + b ⎠