让 sympy 以多项式形式写出一个表达式

Make sympy write out an expression in polynomial form

目前,我有一个

形式的表达式
(a+x^2) / b + x /c + xd + k

如何让 sympyx 的多项式形式写出

x^2 (.)+ x() + (.) 

然后我希望能够访问该多项式的系数,即括号中的项。

您可以使用Poly class 和all_coeffs 方法。可在此处访问参考:https://docs.sympy.org/latest/modules/polys/reference.html

假设所有符号都已声明,这就是您的示例给出的内容:

>>> pol = sp.Poly(((a+x**2) / b + x /c + x*d + k), x); pol
Poly(1/b*x**2 + (c*d + 1)/c*x + (a + b*k)/b, x, domain='ZZ(a,b,c,d,k)')
>>> pol.all_coeffs()
[1/b, (c*d + 1)/c, (a + b*k)/b]

之后您可以访问每个系数及其位置。

如果您扩展表达式并在 x 上收集,您就可以请求所需的系数:

>>> eq = d*x + k + x/c + (a + x**2)/b
>>> ex = collect(eq.expand(), x); ex
a/b + k + x*(d + 1/c) + x**2/b
>>> ex.coeff(x**2)
1/b
>>> ex.coeff(x)
d + 1/c
>>> ex.subs(x, 0)  # the constant
a/b + k