如何减少 Runge Kutta 方法的编译时间

How to get less compile time for Runge Kutta Method

我想用Runge Kutta四阶法模拟8个微分方程,迭代次数在60,000,000左右(时间步长0.001 ms,总时间60s),这样编译会比较少是时候解这些方程了? (我试过用欧拉法用 600 万次迭代求解这些方程,大约需要 3 天才能求解)

Fortran 或 C++ 是执行此类操作最快的语言之一。

这个问题没有意义。如果你优化,你就优化了一切。除了语言之外,您还应该使用允许您采用更大步长的高阶方法。你应该使用自适应步长策略,这样你就可以跳过大段“无聊”的动态。

仅在相对较短的段上使用固定步长 RK4 来感受系统并校准高阶方法。

至于编程语言的选择,如果直接实现矢量运算等所有细节,在编译语言中,相同算法的性能应该大致相同。只有在使用矢量抽象和矢量运算时,您可能会发现由实现选择引起的差异。

例如,在向量加法中,必须决定是只实现 addto 就地加法,还是实现构造新对象的变体,这意味着中间结果的频繁分配等。但是对于 RK 实现,只需要 axpy 类型的操作而无需任何中间结果。对于导数向量的计算,这可能又有所不同。