让 sympy 以多项式形式写出一个表达式
Make sympy write out an expression in polynomial form
目前,我有一个
形式的表达式
(a+x^2) / b + x /c + xd + k
如何让 sympy
以 x
的多项式形式写出
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
目前,我有一个
形式的表达式(a+x^2) / b + x /c + xd + k
如何让 sympy
以 x
的多项式形式写出
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