我在Sympy中有一个级数展开,它包含一个大的O项,例如
x = sp.Symbol("x")
expr = 1/x + 2*x + 3*x**(3/2) + 4*x**2 + sp.O(x**3)
并且我希望获得x
的幂的系数作为字典
{-1: 1, 1: 2, 1.5: 3, 2: 4}
stackoverflow上的其他帖子建议使用sp.Poly(expr, x).coeffs()
并将其转换为词典。然而,Poly
函数由于1/x
、x**(3/2)
和sp.O(x**3)
项而引起误差。
如注释所示:
{v[1]: v[0] for v in [e.as_coeff_exponent(x) for e in expr.removeO().as_ordered_terms()]}
# out: {3/2: 3, 2: 4, 1: 2, -1: 1}
注意removeO()
的使用。