求Sympy中多项式的系数,其中表达式包含一个大的O项



我在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/xx**(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()的使用。

最新更新