提问人:Spaceman98 提问时间:9/12/2023 最后编辑:jaredSpaceman98 更新时间:9/26/2023 访问量:53
如何强制solve_ivp从它调用的函数中采取较小的时间步长
How do I force solve_ivp to take a smaller time step from within the function it calls
问:
我有一个形式的函数调用
ans = scipy.integrate.solve_ivp(dfdz, zbounds, f0, method='RK45', args=argslist, t_eval = zspan, vectorized=True)
如果求解器采用的时间步长太大,则有时无法收敛。我希望能够强制求解器采取较小的步骤。我该怎么做?dfdz
dfdz
我试图让 return -f(即“在这个时间步长中,所有值都变为零”),希望这会导致不收敛,或者至少让它明显失败。相反,我看到我的输出 ans 跳下来,但不是一直跳到零,然后求解器继续积分,就好像什么都没发生一样。dfdz
答:
0赞
Spaceman98
9/23/2023
#1
Julia 似乎提供了我需要的功能 https://www.youtube.com/live/KPEqYtEd-zY?si=zveHs2rYd518PBoD
我仍在为我的代码制定它,但本教程非常有帮助,所以我在这里发布它,供有相同问题并找到此线程的其他人使用
编辑:我被要求澄清。正如这里所讨论的 https://docs.sciml.ai/DiffEqDocs/stable/basics/faq/ isoutofdomain执行了我在开头问题中要求的操作。
评论
t_eval=None