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

如何获取Python中ODE求解器的中间轨迹(scipy odeint)

解决scipy.integrate.odeint获取ODE求解中间轨迹的问题

你现在只得到初始和最终状态,核心原因是传入的tspan仅包含起始和结束两个时间点——odeint的输出数组行数和tspan的长度完全对应,每一行对应tspan中一个时间点的状态。

要获取中间步骤,只需要让tspan包含你需要的所有时间点即可,常用方法有两种:

方法一:用numpy生成均匀间隔的时间点

使用numpy.linspace生成指定数量的均匀分布时间点,示例代码如下:

from scipy.integrate import odeint
import numpy as np

# 定义你的ODE函数(示例为简单一阶ODE,按需修改)
def fun(y, t):
    return -y

initial_values = [0.5, -0.5]
# 生成从0到10的100个均匀间隔时间点(包含起始和结束)
tspan = np.linspace(0, 10, 100)
# 求解后,solution会有100行,对应每个时间点的状态
solution = odeint(fun, initial_values, tspan)

# 查看前5个时间点的状态
print(solution[:5])

方法二:手动指定自定义时间点

如果需要非均匀间隔的中间时间点,直接手动构建tspan列表即可:

tspan = [0, 0.5, 2, 5, 10]  # 自定义包含中间时刻的时间序列
solution = odeint(fun, initial_values, tspan)
# 输出将对应这5个时间点的状态
print(solution)

补充说明

如果需要更灵活的输出控制(比如按需触发状态记录),也可以使用scipy.integrate.ode类配合回调函数,但对于大多数场景,直接扩展tspan是最简便的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:01:21