解くべき常微分方程式系は式1で与えられるので、初期条件を作 ればあとは各粒子の位置からそれぞれへの重力を計算するサブルーチンを書き、 それを適当な数値計算ライブラリに渡して数値積分すればそれでおしまいと行 けば話は簡単だが、それでは今日わざわざこの講義をする必要はない。そうう まく行かないのには2つの理由がある。
第一の理由は、ナイーブな方法では1ステップ当たりの計算量が粒子数の2乗に 比例して増えてしまうということである。もちろんもっとうまい方法がなけれ ばしょうがないが、残念なことに計算量を から ない しは に落とす方法が知られている。これらの原理は、基本的には遠く の粒子からの力は適当にまとめるということである。
もう一つの理由は、すべての粒子を同じ時間刻みで積分すると、ステップ数が 非常に大きくなってしまうということである。例えばたくさんの微惑星が太陽 のまわりをまわっているという計算をしたとする。ほとんどの粒子に対しては、 太陽からの重力が圧倒的であり、また軌道は円軌道に近い。従って、例えば一 周期を100ステップとかそれくらいで刻んでやれば十分正確に軌道を追いかけ ることができる。しかし、いくつかの微惑星は他の微惑星と近接遭遇をしてい るかもしれない。するとこの近接遭遇をちゃんと計算するためには時間刻みを 短くする必要がある。このときに、すべての粒子の軌道を同じ時間刻みで積分 していると、別に近接遭遇中でもなんでもない粒子もすべて短い時間刻みで計 算されることになり、ステップ数が非常に大きくなる。この問題は、粒子毎に バラバラな時間刻みを与え、必要に応じてそれらを独立に変化させることがで きれば解決できる。
なお、第二の問題、すなわち近接遭遇の問題には、別の対応もある。それは、 相互作用のポテンシャルを変えて、近接遭遇が起きても時間刻みを短くしなく てもいいようにすることである。具体的には、ふつうの重力ポテンシャルは で与えられるが、これを例えば といった 形にしてしまう。このようにすれば、 より小さいところでは重力 が大きくならないので、粒子の典型的な速度を とすれば時間刻みを にくらべて十分小さく取っておけばいい。これをソフトニングと いう。
ソフトニングをしていいかどうかは問題による。例えば微惑星の計算では、近 接遭遇で軌道が変化する、あるいは物理的に衝突して合体するといった過程を 計算したいので、ソフトニングをしたのではなんだかわからなくなってしまう。 これにたいして銀河のシミュレーションとかいった場合には、近接遭遇で軌道 が変化するといった効果は非常に小さく、ソフトニングが有効となる。