我有一个表达式,其中三个术语涉及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>
所以一般的问题是:如果我想对子表达式进行转换,例如考虑到某些术语,我该如何在子表达式上而不是整个表达式上做到这一点?
答案 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 ⎠