scipy solve_ivp()中的访问时间点

2024-06-01 10:23:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个用scipy的solve_ivp()函数求解的ODEs系统。它工作得很好,但我在访问每个步骤中使用的时间点时遇到了问题。我知道solve_ivp()将当前时间传递给用户定义的函数,但我需要使用的时间步长,而不是当前时间。为了解决这个问题,我将solve_ivp()min_step和max_step参数设置为

min_step = max_step = my_time_step

所以我知道时间步长。但肯定有更好的方法吗?我在solve_ivp()文档中看不到任何允许我访问给定步骤的时间点的方法。以上的解决方案是最好的方法还是我错过了一个更简单的解决方案?在

其他信息:

我使用solve_ivp()来计算金属珠在空气中移动时的演化。空气成分、颗粒半径和颗粒速度都随时间变化。金属珠被空气迅速氧化

^{pr2}$

对于速率常数k和空气摩尔浓度[air],其单位为摩尔m-3。每秒遇到的空气量由下式得出

vol_s = pi*radius**2*velocity #vol_s has units [m3 s-1]

其中,radius是珠子的半径(m),而velocity是珠子的速度(ms-1)。为了从速率中得到与珠子反应的空气总量,我需要知道体积。vol_s*time_步长表示体积,因此rate*vol_s*time_step是每秒反应生成的产物量。因此需要知道时间步长。在


Tags: 方法函数timestep时间步骤解决方案min