問題タブ [integrator]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - n 体重力シミュレーション (速度と精度) に最適な積分法はどれですか?
私は現在、大きな n (> 1Mio. 粒子の進行状況に応じて) の n 体シミュレーション (重力/3D) を実装しており、どの統合方法を使用するか疑問に思っています。エラーを最小限に抑えるには、可変のステップサイズが必要だと思います。
私は barnes-hut-algorithm と boost/odeint を使用していますが、おそらくオーバーヘッドを削減するために独自のインテグレータを作成する予定です (これは汎用であるため、boost にはおそらくあります)。barnes-hut 以外の方法を使用してパフォーマンスをさらに改善するかどうかはまだわかりません。
このように多くの粒子を使用した ODE 関数の評価は非常にコストがかかるため、できるだけ関数評価を使用しない積分器が最適であると思います。しかし、積分器に関する良い情報を見つけることができませんでした (特に大きな n を持つ n 体シミュレーションの場合)。私にとっては、精度よりもパフォーマンスの方が重要です (精度が合理的である限り)。
では、この種の問題に適したインテグレーターは何か教えてもらえますか? 現在、runge-kutta dormand-prince (4/5次) を使用しており、時々 fehlberg (7/8) に切り替えています...