機械で「心」を作る~「AIの父」ミンスキー氏が早稲田大学で講演
コンピュータサイエンスは重要だがコンピュータそのものが重要なわけではない、とミンスキー氏は強調した。それは解けない方程式があっても、コンピュータを使うことで何が起こるかを見る事ができるからだ。それがコンピュータがなく数学しかなかった時代との違いだとミンスキー氏はいわゆる「3体問題」など力学の問題を例に出して説明した。
「3体問題」の有名なものに、ピタゴラス3体問題があります。図のような3:4:5の直角三角形の頂点上に静止させた、質量3, 4, 5の質点の運動を調べるというものです。
この問題は1893年には知られていましたが、数値的にでさえ、解決は1966年になってからです。ディアク,ホームズ『天体力学のパイオニアたち』によれば、粒子の2つが連星を形成し、第3体が高速度ではじき飛ばされるという結論は、驚くべきものだったそうです。
これを数値的に解くのは、コンピュータ無しではまあ無理ですよね。ちょうど、Mathematicaならケプラー問題の数値解を簡単に求められるという記事に対して、「でも、計算精度は大丈夫でしょうか」と訊かれたところだったので、コンピュータがあれば簡単だということを確認してみましょう。
必要な精度は状況によるので、絶対大丈夫とは言えませんが、たいていの場合には、十分よい精度で計算すると思います。有名なピタゴラス3体問題で調べてみましょう。
下の動画は、重力定数を1とした場合の計算結果の最初の70秒の様子です。
計算の準備は簡単です。運動エネルギーとポテンシャルエネルギーからラグランジアンを計算し、運動方程式を導きます。

運動方程式を解くのも簡単です。

この解の軌跡は、上で紹介した動画における軌跡とは明らかに違っています。
「この問題をちゃんと解くのは大変ですよ。(よく知られた微分方程式の数値解法である)ルンゲ・クッタじゃぜんぜんだめですよ」と言っていた天体力学の教授の言葉が思い出されます。
うまくいっていないことは、エネルギーを調べるとわかります。保存されているはずのエネルギーがかなり変化しているのです。

MathematicaのNDSolveは、保存量を指定することもできるので、それを試してみましょう。(参考:NDSolveのProjection法)

運動量と全エネルギー、角運動量を保存させながら計算すると、なんとなく似てきたような気もしますが、まだずいぶん違います。
下のように、手法も指定すれば、正しく計算できます。この記事の最初の動画が計算結果です。

この結果は、Burrau's problem of three bodiesで紹介されているものとあっています。(リンク先にはこの問題を数値的に解いたSzebehelyの論文があります。)
コメントする