You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除SymPy方程中的O()项?解决'Equality'对象无removeO属性问题

解决SymPy中移除解的O()项报错问题

Hey there! Let's figure out why you're getting that AttributeError and fix it up.

问题根源

你调用.removeO()时出错,是因为dsolve()返回的fungsi_eksak是一个**Equality对象**(也就是代表y(t) = 级数表达式这样的等式),而removeO()是SymPy里Series(级数)对象独有的方法——直接在等式上调用当然会报错啦。

解决方法

我们只需要先提取等式中等号右侧的级数表达式,再对它调用removeO(),之后如果需要还能重新构造完整等式:

import sympy as sy
from IPython.display import display
t=sy.symbols('t')
y = sy.Function('y')
pdb=sy.Eq(y(t).diff(t)-5*sy.exp((-0.2)*t**2)+y(t)**2,0)
fungsi_eksak=sy.dsolve(pdb,y(t), ics={y(0): 0})

# 提取等式右侧的级数表达式
series_part = fungsi_eksak.rhs
# 移除O()项
clean_expression = series_part.removeO()
# 重新构造不带O()项的等式(如果需要保留y(t)=...的形式)
clean_solution = sy.Eq(y(t), clean_expression)

display(clean_solution)

简化写法

要是你不需要保留等式形式,直接显示处理后的表达式也完全可以:

display(fungsi_eksak.rhs.removeO())

这样执行后,输出就不会带有O(t^6)项啦!

内容的提问来源于stack exchange,提问作者Adhi Aryadi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 23:29:08