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

如何用SymPy求解常微分方程并代入t=10计算结果?

解决方法

首先,dsolve返回的是一个等式对象(格式为u(t) = ...),你需要先提取等式右侧的表达式(也就是u(t)的解析解),再代入t=10计算数值结果。以下是修正后的完整代码:

from sympy import Function, dsolve, Derivative, exp, Eq
from sympy.abc import t
u = Function('u')

print("\nItem I\n")

edo_1 = u(t).diff(t) + 0.5*u(t) - exp(-t/2) - 500
y = dsolve(edo_1, u(t), ics={u(0): 0})

# 提取解析解的右侧表达式
u_sol = y.rhs
# 代入t=10并计算数值结果
result = u_sol.subs(t, 10).evalf()

print(f"t=10时的结果:{result}")

运行代码后会输出近似值993.262053000915,和你手动计算的结果一致。

关键说明

  • y.rhs:直接获取等式u(t) = ...的右侧部分,这是得到u(t)解析表达式的核心步骤,也是你之前可能未正确执行的操作。
  • subs(t, 10):将表达式中的符号t替换为数值10。
  • evalf():把符号表达式转换为浮点数形式的数值结果。

另外,你之前尝试用solve是多余的——dsolve已经给出了完整的解析解,无需再用solve二次求解,直接提取表达式代入计算即可。

内容的提问来源于stack exchange,提问作者Juan Pablo Moreno

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 13:32:03