Hatena::ブログ(Diary)

小人さんの妄想 このページをアンテナに追加 RSSフィード Twitter

2008-11-12

3つの星の行方

-- 地球は太陽の周りを回っている --

引力で引き合っている2つの星は、互いに楕円軌道を描いて回ります。

それでは、星が3つだったら、どんな運動になるでしょうか?

実はこれ、計算して答を出すことができないと言われている超難問なんです。

>> wikipedia:多体問題

えーっ、たった3つで解けないの?

はい、確かに解けません。

ここで言う「解けない」とは、紙と鉛筆を使って Sinとか、Cosとか、積分とかを駆使して厳密に解く、という意味です。

今日では、紙と鉛筆の代わりに、パソコンという強い身方がいます。

厳密解は無理としても、雰囲気をつかむだけであれば、パソコンでわりと手軽にシミュレートできます。

さっそくパソコンを使って、3つの物体の運動について、いくつかのパターンを試してみました。

(物体が最初に置かれた位置とスピードは乱数で振ってあります。

 画面を再読込すれば、違った値でシミュレーションがスタートします。)


1.規則的な連成振動。

まず最初のパターンがこれ

>> http://brownian.motion.ne.jp/memo/ThreeBalls_LinRK.html

X方向(横方向)とY方向(縦方向)について、それぞれ独立にバネで結んだ物体の運動。

これは計算で解ける規則的なパターンです。

しばらく見ていると、一定の周期で巡回していることがわかるでしょう。

これが規則的で計算で解けるのは

・バネの力が、バネの伸びに比例している。

・X方向とY方向の運動に相互作用がなく、独立している。

といった理由によります。

実際にバネとボールを使って、ここにあるような運動を作り出すのはかなり面倒です。

縦横が独立ということなので、例えばボールをそろばん玉のように棒に串刺しにして、

その串と串と間をバネで結ぶ、といった仕掛けになるでしょう。

つまり、こうした計算で解けるようなパターンを現実に用意するのは、むしろ難しいことなのです。


2.連成振動が崩れた形。

次のパターンがこれ

>> http://brownian.motion.ne.jp/memo/ThreeBalls_BaneKnot.html

3つのボールを互いに線形なバネで結んだ物体の振動。

上の解けるパターンの振動と似ています。

でもしばらく見ているうちに、だんだん振動がずれてきて、必ずしもピッタリ周期的ではないことがわかります。

振動運動なので基本的には予想の範囲内ではあるのですが、

少しずつずれが生じているので正確な答は計算から外れてしまう、といった感じです。

なぜ軌道が少しずつずれてゆくのか。

それは「斜めに引っ張る力」が働いているからです。

上の規則的なパターンでは(不自然ではありますが)、縦と横の力がそれぞれ別々のものでした。

今回は縦横の区別がないので、縦方向の運動が横方向にも影響しています。(むしろそれが自然な姿です)

この影響が累積して、単純な振動に「だんだん狂いが生じる」といった運動になるわけです。


3.カオス運動。

最後のパターンが、本当に解けない、いわゆる多体問題。

>> http://brownian.motion.ne.jp/memo/ThreeBallsC.html

3つの星が、互いに引力で引き合っている運動。

星が近づくと小さく速くクルクルっと回って、時々大きくポーンと跳ねる。

なんとも言えない、複雑な運動になります。

これを見ていると、なぜ計算で答が出ないのか、わかりますよね。


この3つの星の運動、正確にシミュレーションするのが難しくって、けっこうズルしてます。

・ずるっこ その1. 壁で反射する。

 星は画面の端で跳ね返ります。

 これが無いと、星が画面からはみ出して遠くまで飛んでいって、戻ってこなくなるからです。

 星が2つの場合は、遠くに飛んでいった星であっても、やがては戻ってきます。

 (2つの星が最初に画面内にあって、初速をそれほど与えていないので)

 ところが3つになると、1個の星が遠くまで飛んでいって戻ってこないことがあります。

 むしろ、その場合の方が大多数のように見えます。


・ずるっこ その2. 星の大きさ。

 星の大きさをどうするか?

 引力は、星と星の距離の二乗に反比例するので、距離が0になると、引力が無限大!になってしまいます。

 これが困った問題で、距離がとても近くになると、引力がとてつもなく大きくなります。

 コンピュータの中の話なので、ここで計算が狂ってしまうわけです。

 ここでは、ある程度以下の距離では引力が働かなくなる、という特別ルールを入れて問題を回避しています。


・ずるっこ その3. だんだん止まる、摩擦力。

 たぶん上の問題の影響だと思うのですが、放っておくと、星のスピードがなぜかだんだん速くなってゆくんですよね。

 (正確な原因はよくわかんないです)

 仕方ないので、ここではちょっとだけ摩擦力を入れて(速度を0.4%減)、放っておくと星がだんだん止まるようにしました。

 結果、星のスピードが落ちてくると近くに集まってきて、小さくクルクル回転し、

 そこでなぜか(たぶん計算誤差の累積で)エネルギーを稼ぎ出し、再び遠くに跳ねる、といった運動を繰り返すようになりました。


やはり正確なシミュレーションって、けっこう難しいですね。。。


スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/rikunora/20081112/p1