首页 > 解决方案 > 如何使用 SymPy 删除高阶项?.removeO() 在这里不起作用

问题描述

我正在尝试使用 SymPy 绘制 ODE 解决方案的系列形式,并且我需要在绘制之前删除“O”项。

from IPython.display import display
from sympy import *
from sympy.plotting import plot

x = Function('x')
t = Symbol('t')
ode = Derivative(x(t),t) + t * x(t) - t**3

sol_series = dsolve(ode, hint='1st_power_series', n=8, ics={x(0): 1})
res = sol_series.removeO()

但是这里来了错误

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-66-2775b6fd4150> in <module>
----> 1 res = sol_series.removeO()
      2 display(res)

AttributeError: 'Equality' object has no attribute 'removeO'

如何解决这个问题呢?

标签: pythonsympyodedifferential-equations

解决方案


那是因为返回 fromdsolve是一个Eq(方程对象) 并且removeO方法是 forExpr所以你应该调用removeO方程的 rhs:

In [5]: res = Eq(sol_series.lhs, sol_series.rhs.removeO())                                                                                                    

In [6]: res                                                                                                                                                   
Out[6]: 
          6      4    2    
         t    3⋅t    t     
x(t) = - ── + ──── - ── + 1
         16    8     2 

推荐阅读