ここまでは、「相互作用をいつ、どうやって計算するか」という話をしてきた。 しかし、実際に数値解を求めるには求まった重力加速度を使って各粒子の軌道 を積分する必要がある。以下、その方法について簡単に述べる。
これは知らない人はいないと思いたいが、ある微分方程式の初期値問題
(2) | |||
(3) |
(4) |
これはセパラブルなハミルトン系、すなわちハミルトニアンが運動量の関数と
位置の関数に分かれるものに対する特別な方法である。通常の、運動量に対す
るハミルトニアンが2次形式である場合には、
(5) | |||
(6) |
(7) |
(8) |
(9) | |||
(10) |
(11) | |||
(12) | |||
(13) |
この公式は局所誤差が 、大域誤差がである。
さて、局所誤差という観点からはこれは決して良い公式というわけではないが、 現実には特に無衝突系の計算ではこの公式は非常に広く使われている。衝突系 の計算で、独立時間刻みを使うような場合にはこの方法は使われないが、それ 以外の非常に多くの問題はこの方法で解かれているといってよい。
これは、別にもっとよい方法を知らないからとかではなく、実はこの方法がい くつかの意味で非常に良い方法であるからである。いくつかの意味とは、例え ば力学平衡の系でエネルギーや角運動量が非常によく保存するということであ る。これらの保存量については多くの場合に誤差がある程度以上増えない。
この、ある程度以上誤差が増えないというのは目覚しい性質である。通常の方 法では、エネルギーの誤差は時間に比例して増えていく。従って、長時間計算 をしようとすればそれだけ正確な計算をする必要がある。ところが、エネルギー の誤差は溜っていかないのならば、かならずしも精度を上げる必要はないとも 考えられる。
もちろん、エネルギーが保存していればそれだけで計算が正しいということに はならない。が、理論的には、いくつかの重要な結果が得られている。まず、
Symplectic method については、以下のようなことが知られている
というわけで、 leap frog が、それよりも局所的には誤差が小さいルンゲ・ クッタとかに比べて良い結果を与えるのは当然のことである。
さて、独立時間刻みを使った場合には、話はそう簡単にはいかない。というの は、 symplectic method の良い点も symmetric method の良い点も失われる からである。このため、通常はより高次の方法が用いられる。まあ、 cosmological な計算なんかでは独立時間刻みで2次の公式を使っている例もな いわけではないが、結果を信用できるかどうかには注意したほうがよいかもし れない。
高次の方法としては、伝統的には Aarseth が60年代に開発した方法が用いら れてきた。これは、いわゆる線形多段法 linear multistep method に基づく ものである。具体的な実現についてはここでは省くが、基本的に、過去数ステッ プの加速度から補外多項式を作り、それを積分して位置と速度を更新する。独 立時間刻みを使うに当たっては、他の粒子の位置は補外多項式で計算する。
Aarseth method は広く使われてきたが、結構面倒であるし高次にしていくと 計算量が増え、また安定性が急激に悪くなる。もう少し簡単な方法はないかと いうことで考えられたのが Hermite method である。これでは、加速度の他に その時間導関数まで直接計算し、それから補外、補間多項式を作る。これは最 近かなり広く使われるようになってきた。