Verlet 積分が Euler 積分より優れている理由を誰か説明してもらえますか? そして、なぜ RK4 は Verlet よりも優れているのでしょうか? なぜそれがより良い方法なのか理解できません。
3 に答える
Verlet 法は、エネルギー保存を伴うシステムのシミュレーションに適しています。その理由は、シンプレクティックであるためです。このステートメントを理解するには、シミュレーションの時間ステップを、状態空間をそれ自体にマッピングする関数 f として記述する必要があります。つまり、各タイムステップは次の形式で記述できます。
(x(t+dt), v(t+dt)) = f(x(t),v(t))
Verlet 法の時間ステップ関数 f には、状態空間の体積を保存するという特別な特性があります。これを数学的に書くことができます。状態空間に状態の集合 A がある場合、f(A) を次のように定義できます。
f(A) = {f(x)| for x in A}
ここで、セット A と f(A) が滑らかで適切であると仮定して、ボリュームを定義できるようにします。次に、シンプレクティック マップ f は、f(A) のボリュームが A のボリュームと同じであることを常に満たします (これは、A のすべての適切でスムーズな選択に対して満たされます)。これは Verlet 法のタイム ステップ関数によって満たされるため、Verlet 法はシンプレクティック法です。
では最後の質問です。エネルギー保存を伴うシステムのシミュレーションにシンプレクティック法が適しているのはなぜですか。残念ながら、これを理解するには本を読む必要があります。
オイラー法は一次積分法です。つまり、総誤差はステップ サイズに比例します。ただし、数値的に不安定になる可能性があります。つまり、累積誤差が計算を圧倒し、意味をなさない可能性があります。この不安定性は、ステップ サイズをどれだけ小さくしても、システムが線形であるかどうかに関係なく発生する可能性があることに注意してください。私はベルレットの統合に精通していないので、その有効性について話すことはできません. しかし、ルンゲ・クッタ法とオイラー法との違いは、ステップ サイズだけではありません。
本質的に、それらは導関数を数値的に近似するより良い方法に基づいています。正確な詳細は現時点ではわかりません。一般に、4 次のルンゲクッタ法は統合スキームの主力と考えられていますが、いくつかの欠点があります。これはわずかに散逸的です。つまり、追加の摩擦に似た小さな一次導関数依存項が計算に追加されます。また、ステップ サイズが固定されているため、希望する精度を達成することが難しくなる可能性があります。または、 Runge-Kutta-Fehlberg 法などの適応ステップサイズ スキームを使用することもできます。これにより、追加の 6 つの関数評価に対して 5 次の精度が得られます。これにより、ここに示すように、精度を向上させながら計算の実行に必要な時間を大幅に短縮できます。
すべてが直線的に進むだけであれば、どの方法を使用しても問題はありませんが、何か興味深いこと (つまり、非線形) が発生した場合は、非線形性を直接考慮することによって、より注意深く調べる必要があります (verlet)。または、タイムステップを小さくする (rk4)。