我们如何定义数值微分方程求解器所需的精度?我必须优化什么才能知道?我怎么知道我处于足够的时间步长值?
例如,在 Mathematica 和 Matlab 等程序中,微分方程求解器如何知道适合您问题的步长?怎么可能自动确定?
对该方法的完整解释会很好(或者可能是一个可以用谷歌搜索的术语)。
我们如何定义数值微分方程求解器所需的精度?我必须优化什么才能知道?我怎么知道我处于足够的时间步长值?
例如,在 Mathematica 和 Matlab 等程序中,微分方程求解器如何知道适合您问题的步长?怎么可能自动确定?
对该方法的完整解释会很好(或者可能是一个可以用谷歌搜索的术语)。
ODE 的典型做法是在每个时间步使用两种不同阶的方法求解。然后使用结果之间的差异来估计误差,然后决定是减少还是增加时间步长。
您可以在此处找到有关该主题的更多信息。这些类型的方案的两个示例是RKF45和Dormand-Prince。
对于一维传输问题,在隐式方法下,我们使用无量纲数Courant number 来选择合适的时间步长:
应该小于 1,如果我们把它设为 1,我们得到
基本思想是,在一个时间步,放置在问题域中的粒子不应该通过定义求解属性的两个节点传输。
对于二维,可以将其扩展为: