三体問題とカオス軌道・ラグランジュ点
3つの星が引き合うだけで解けない宇宙の謎 — ポアンカレの発見と現代天文学
- 1
- 二体問題(太陽と地球など)は楕円軌道として解析的に厳密解が得られるが、天体が3つになると一般解が存在せず軌道がカオス(予測不能)になる
- 2
- 制限三体問題では、2つの大質量天体の公転遠心力と万有引力が釣り合う『ラグランジュ点(L1〜L5)』が存在し、ジェームズ・ウェッブ宇宙望遠鏡などが停留している
- 3
- 1993年には3つの天体が同一の8の字型ループを永久に巡り合う『8の字解』など、特殊な周期安定解が計算機探索によって奇跡的に発見された
なぜこれを学ぶのか? — 現実社会とテクノロジーでの価値
なぜ生まれたのか?
19世紀末、アンリ・ポアンカレが三体問題の解析を通じて『決定論的カオス(初期値のわずかな差が未来を全く別物に変えてしまう現象)』を発見し、現代数学と複雑系科学の幕が開きました。SF小説の金字塔『三体』の原点でもあり、JAXAやNASAが探査機(はやぶさ2・JWSTなど)を飛ばす上で避けて通れない深宇宙軌道設計の基礎です。
身につく武器・思考力
万有引力連立微分方程式のモデリング能力、Velocity Verlet法などシンプレクティック数値計算アルゴリズムの理解、カオスと安定性の直感
実社会・ITでの活躍現場
- •ジェームズ・ウェッブ宇宙望遠鏡(JWST)の太陽-地球L2ラグランジュ点ハロー軌道維持
- •木星のトロヤ群小惑星探査機(NASA Lucyミッション)の軌道計算
- •連星系(太陽が2つある星系)における太陽系外惑星の生存可能領域(ハビタブルゾーン)シミュレーション
- •地球近傍小惑星(NEO)の将来衝突リスク評価とカオス軌道予測
Layer 1 — 直感・シミュレーター
上部のプリセットから『8の字解(奇跡の安定解)』『太陽・地球・ラグランジュ点』『カオス相互作用』を切り替えてみてください。3つの天体の引力計算(Velocity Verlet数値積分)がリアルタイムに実行され、カオスモードではわずかな位置関係から1体が突如猛烈なスピードで弾き飛ばされる様子が観察できます。
太陽と地球を結ぶ直線上で、太陽の強大な引力と地球の引力・公転遠心力が釣り合い、宇宙望遠鏡(SOHO等)の観測拠点となっているラグランジュ点はどれか?
Layer 2 — 定義・受験・証明
定義
**三体問題(Three-Body Problem)**とは、ニュートンの万有引力に従って相互に引き合う3つの質点の運動を記述するニュートン力学の方程式系である。1887年にポアンカレにより、代数的な初等関数による一般解析解が存在しない(可積分でない)ことが証明された。
公式・数理モデル
証明・導出
**二体問題と三体問題の自由度と保存則の比較** 空間の 個の質点運動は、各粒子につき位置3自由度・速度3自由度の計 次元の相空間を持つ。
1. **二体問題 (, 12自由度)**: 重心運動の保存(6自由度)、全エネルギー保存(1自由度)、角運動量ベクトル保存(3自由度)、ルンゲ・レンツ・ベクトル(保存量)により、自由度を1次元の等価1体問題にまで完全縮約でき、ケプラー楕円軌道として厳密解が積分できる。
2. **三体問題 (, 18自由度)**: 古典力学の10個の保存則(エネルギー1、運動量3、重心位置3、角運動量3)をすべて差し引いても、自由度が余る。 ポアンカレは、摂動論を展開した際に現れる分母(小分母問題)が共鳴によって発散することを示し、第一積分(代数的な保存量)がこれ以上存在しないことを証明した。この結果、相空間の軌道はアトラクターやホモクリニック交差を起こし、決定論的でありながら長期予測不可能な『カオス』が必然的に生じる(Q.E.D.)。
押さえておきたいポイント
- 二体問題は楕円・放物線・双曲線で完全に解けるが、天体が3つ以上になると一般解は存在しない
- 制限三体問題(1体の質量が極小)では、回転座標系において平衡点となるラグランジュ点(L1〜L5)が定常解として現れる
- L4・L5は正三角形を形成し、質量比条件(主星質量の約96%以上)を満たすと重力ポテンシャルの山でありながらコリオリ力によって安定化する
本トピックの内容・数理モデルは、文部科学省学習指導要領(算数・数学・情報)および国際標準カリキュラムに準拠し、エンジニアリング現場の実装事例と照らし合わせてMath World Lab編集部により検証・作成されています。
Layer 3 — 工学応用・現場実装
Velocity Verlet法による三体軌道シミュレーター
エネルギー保存則を高精度に保つシンプレクティック数値積分アルゴリズム(Velocity Verlet法)を用いたPythonシミュレーションコードです。
1import numpy as np23# 万有引力定数と天体質量4G = 1.05masses = np.array([1.0, 1.0, 1.0])67# 初期位置 (N=3, 2D) - 8の字解の初期値8pos = np.array([9 [0.97000436, -0.24308753],10 [-0.97000436, 0.24308753],11 [0.0, 0.0]12])1314# 初期速度15v3 = np.array([-2.0 * -0.93240737 / 2, -2.0 * -0.86473146 / 2])16vel = np.array([17 [-0.93240737, -0.86473146],18 [-0.93240737, -0.86473146],19 v320])2122def compute_accelerations(p, m, eps=1e-4):23 """万有引力加速度の計算(軟化定数epsで特異点回避)"""24 N = len(m)25 acc = np.zeros_like(p)26 for i in range(N):27 for j in range(N):28 if i != j:29 diff = p[j] - p[i]30 dist = np.linalg.norm(diff) + eps31 acc[i] += G * m[j] * diff / (dist**3)32 return acc3334dt = 0.00135acc = compute_accelerations(pos, masses)3637# Velocity Verlet による時間ステップ更新38for step in range(1000):39 # 1. 位置の更新: r(t + dt) = r(t) + v(t)*dt + 0.5*a(t)*dt^240 pos += vel * dt + 0.5 * acc * (dt**2)41 # 2. 新しい位置での加速度42 new_acc = compute_accelerations(pos, masses)43 # 3. 速度の更新: v(t + dt) = v(t) + 0.5*(a(t) + a(t + dt))*dt44 vel += 0.5 * (acc + new_acc) * dt45 acc = new_acc
次に学ぶならコレ!おすすめトピック
この単元と深い繋がりを持つ、あわせて学ぶと理解が深まるおすすめ単元