我正在使用scipy.integrate.solve_ivp
在Python语言中运行一个长的ODE集成。是否可以在例程运行时访问集成的状态或检查该例程处于哪个集成步骤?我的集成花费的时间比预期的要长,我想知道是积分器卡在某个步骤上了,还是个别步骤花了很长时间。
对于未来的任务;如果我将与solve_ivp
的集成拆分为子间隔,以便在其间打印状态消息,这是否会影响某些求解器的步长自适应性?
感谢您的反馈!
发布于 2020-11-21 20:35:47
存在向solve_ivp添加详细选项的GitHub拉取请求,但尚未执行此操作。您可以通过修改scipy的solve_ivp函数来实现它(应该很简单),或者只将求解器给出的时间t打印到您的ODE函数。这就是我要做的。如果您的系统不是太小,那么您不会因为打印而浪费太多时间。
以您建议的方式拆分积分可以工作,但是,如果每隔几个时间步拆分一次,则会在求解器重新启动每个平铺时损失时间。影响与隐式算法有关,因为它们在每次开始时都会重新计算系统的雅可比矩阵。
https://stackoverflow.com/questions/64194348
复制相似问题