如何在 sympy 中隔离多项式中项的系数?

How to isolate the coefficients of the terms in a polynomial in sympy?

在 Python 中,我进行了一些 SymPy 计算,生成了一个充满多项式的数组,例如:

a*(a*(a*(a + b) + b*(a + b)) + b*(a*(a + b) + b*(a + b))) + b *(a*(a*(a + b) + b*(a + b)) + b*(a*(a + b) + b*(a + b)))

请注意,此示例恰好简化为 (a+b)**4,但显然情况并非总是如此。那么如何将此表达式转换为以下形式:

c_1*a**4 + c_2*a**3*b + ... + c_n*b**4

一旦有了这样的表达式,我将如何提取指数 c_1, ..., c_n? 我只有 .exp 命令,但它只适用于 a**n 形式的表达式(即 a 和 b 的混合以及系数 1)。

非常感谢任何帮助。

Poly class 很有用 (运行 isympy)

from sympy import Poly
from sympy.abc import a, b

expr = a*(a*(a*(a + b) + b*(a + b)) + b*(a*(a + b) + b*(a + b))) + b*(a*(a*(a + b) + b*(a + b)) + b*(a*(a + b) + b*(a + b)))

poly = Poly(expr)
poly.as_expr()

输出:

 4      3        2  2        3    4
a  + 4⋅a ⋅b + 6⋅a ⋅b  + 4⋅a⋅b  + b 

并提取系数 c_1, ..., c_n,我会这样做:

poly.coeffs()

输出:

[1, 4, 6, 4, 1]