如何数值求解每个状态变量具有不同时间步长的多变量 ODE 系统?

计算科学 数字 刚性 自适应时间步长
2021-12-13 09:48:12

如果您有一个大型多变量 ODE 系统,并且某些过程发生在更短的时间尺度上,您如何实现一个求解器,它对快速过程中涉及的状态变量使用较小的时间步,而对于慢速过程中涉及的状态变量使用较大的时间步,同时确保结果在数学上仍然是合理的?

为简单起见,假设我们对每个状态变量使用显式欧拉求解器方法。

我问是因为我担心,例如,确保某些数量保持不变。有很多关于取决于误差估计的可变时间步长的文献,但我问的是为不同的状态变量假设不同的时间步长。

这是一种优化,可减少在运行时自适应时间步进方面表现不佳的计算架构上的运行时间。

2个回答

您将需要阅读运算符拆分方法。本质上,在每个“宏时间步”中,您将通过在算法的一半中执行许多“微时间步”来处理快速进程,然后在另一半中为慢速进程执行单个宏时间步。

对于更高阶,您将需要使用所谓的“Strang 分裂”。