关于 scipy 的 ivp 求解器的问题

计算科学 Python
2021-12-27 14:17:40

有一件事我不明白。是在每个时间步更新或在所有时间步固定计算步长的容差。此外,当我们查看文档以及如何计算容差(见图)时,我们会计算 abs(y)。在这种情况下,y 是当前时间步的 y 值还是到该点的整个解决方案系列。谢谢

在此处输入图像描述

1个回答

用于时间步长自适应的误差估计是局部误差的估计,即时间方案在一个时间步上的截断误差指数。为了确保给定的相对精度,您需要将当前的解决方案作为参考,因此术语rtol * abs(y). 请注意,如果您的解决方案变化不大并且接近初始解决方案,那么使用abs(y0)也可能有意义。

例如,您可以在 Haired 和 Wanner 的“求解常微分方程”一书中找到有关时间步长适应的更多背景信息(使用嵌入式 Runge-Kutta 作为大多数solve_ivp 的方案)。