用于行星模拟的'修复'性能
我已经使用写入使用欧拉辛方法太阳系外行星的仿真和实现此一) repa
和b)使用yarr
。
yarr
似乎比快约X30执行repa
。
鉴于此,我甚至没有尝试使用并行性。 有没有在我任何明显的性能问题repa
代码? 存储库在github上。 我能产生切下来repa
-只版本,如果这是有帮助的,但你不会得到对性能比较yarr
。
或者,我如何调试repa
性能问题?
大多数欧拉数值积分方法遭受累积舍入误差,最终会导致模拟“爆炸”。 您可能需要研究高级数值积分方法,例如四阶龙格库塔或预测校正器。
另一个n体问题模拟变得粘滞的地方是当两个物体变得非常接近时,例如一个绕其行星非常偏心的月球。 如果使用固定的时间增量进行模拟,那么在角速度变化较大时的误差可能会导致零除误差或导致模拟爆炸的非常小的值分裂。 使用取决于角速度的变量Δ-t可能是有益的。
这些建议是基于我在1973年进行的本科物理课程中运行许多这样的模拟,同时测试各种数值积分方法。 自数字计算开始以来,Runge-Kutta和预测校正方法就已出现,并且有许多书籍可供使用。 参见例如由William H.Press,Brian P.Flannery,Saul A.Teukolsky和William T.Vetterling撰写的Numerical Recipes:The Art of Scientific Computing 。 (剑桥大学出版社,1989)
链接地址: http://www.djcxy.com/p/59979.html