首页 > 解决方案 > 如何在 sympy 表达式/ Python 中获取系数

问题描述

如何在 sympy 表达式中获取系数

b = sympy.Symbol('b')
a = sympy.Symbol('a')
x = sympy.Symbol('x')

y = 2*x**3 + a*x**2 +b*x

结果应该是:

coeff for x**3 =2 coeff for x**2 = a coeff for x = b

标签: pythonsympycoefficients

解决方案


It is surprisingly awkward to get the expression form of the terms in the polynomial but you can do it like this:

In [28]: b = sympy.Symbol('b') 
    ...: a = sympy.Symbol('a') 
    ...: x = sympy.Symbol('x') 
    ...:  
    ...: y = 2*x**3 + a*x**2 +b*x

In [29]: p = Poly(y, x)

In [30]: p
Out[30]: Poly(2*x**3 + a*x**2 + b*x, x, domain='ZZ[a,b]')

In [31]: {x**m[0]:p.coeff_monomial(m) for m in p.monoms()}
Out[31]: 
⎧       2      3   ⎫
⎨x: b, x : a, x : 2⎬
⎩                  ⎭

推荐阅读