如何使用 SymPy 删除高阶项? .removeO() 在这里不起作用
How can I remove higher order term using SymPy? .removeO() does not work here
我正在尝试使用 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'
如何解决这个问题?
那是因为 dsolve
中的 return 是一个 Eq
(方程对象),而 removeO
方法用于 Expr
,所以您应该调用 removeO
在等式的右侧:
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
我正在尝试使用 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'
如何解决这个问题?
那是因为 dsolve
中的 return 是一个 Eq
(方程对象),而 removeO
方法用于 Expr
,所以您应该调用 removeO
在等式的右侧:
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