打ち上げた衛星を、低軌道から静止軌道など別の軌道へ運ぶ——そのいちばん燃料効率のよい方法がホーマン遷移軌道です。この記事ではPythonで、低軌道(LEO)から静止軌道(GEO)への遷移に必要な速度変化(Δv)を計算します。軌道速度の続きとして、軌道を"乗り換える"数字を掴みます。
しくみ: 2回の噴射で乗り換える
ホーマン遷移は、内側の円軌道と外側の円軌道に接する楕円軌道を経由します。
- 出発点で加速(1回目の噴射)→ 楕円軌道に乗る
- 楕円の遠い側(目標高度)で再び加速(2回目の噴射)→ 外側の円軌道に乗る
この2回のΔvの合計が、遷移に必要な"燃料の量"に直結します。
2回の噴射で軌道を上げる
噴射1
楕円軌道へ
惰性
楕円を半周
噴射2
外側の円へ
準備
pip install numpy① ホーマン遷移のΔvを計算する
出発・到着それぞれの円軌道速度と、楕円軌道の速度の差からΔvを求めます。
import numpy as np
GM = 3.986e14
R_earth = 6.371e6
def hohmann(alt1_km, alt2_km):
r1 = R_earth + alt1_km * 1000
r2 = R_earth + alt2_km * 1000
a = (r1 + r2) / 2 # 遷移楕円の長半径
v1 = np.sqrt(GM / r1) # 出発の円軌道速度
v2 = np.sqrt(GM / r2) # 到着の円軌道速度
v_peri = np.sqrt(GM * (2/r1 - 1/a)) # 楕円の近地点速度
v_apo = np.sqrt(GM * (2/r2 - 1/a)) # 楕円の遠地点速度
dv1 = v_peri - v1 # 1回目の噴射
dv2 = v2 - v_apo # 2回目の噴射
return dv1, dv2, dv1 + dv2
dv1, dv2, total = hohmann(400, 35786) # LEO(400km) → GEO(静止軌道)
print(f"1回目Δv: {dv1:.0f} m/s")
print(f"2回目Δv: {dv2:.0f} m/s")
print(f"合計Δv : {total:.0f} m/s")出力はおおよそ:
1回目Δv: 2399 m/s
2回目Δv: 1457 m/s
合計Δv : 3857 m/sLEOからGEOへ運ぶのに合計 約3.9 km/s のΔvが必要、とわかりました。この値にロケット方程式を当てはめれば、必要な燃料が計算できます。
遷移にかかる時間も出せる
遷移楕円を半周する時間が到着までの飛行時間です。T_transfer = π * sqrt(a³/GM) で計算でき、LEO→GEOなら約5時間半。a から求めて確かめてみてください。軌道の乗り換えは"時間もコスト"です。
② なぜ「いちばん省エネ」なのか
ホーマン遷移は、2回の噴射で軌道を上げる方法の中でΔvが最小になることが知られています(同一平面・円→円の場合)。だから燃料が限られる宇宙機の定番です。
速さと燃費はトレードオフ
もっと速く着きたいなら、より多くのΔv(燃料)を使う別の遷移もあります。ホーマンは「いちばん省エネだが、いちばん急ぎではない」。ミッションによって、燃料を取るか時間を取るかを選びます。
③ 目的地を変えて試す
for name, alt in [("ISS高度", 400), ("中軌道", 10000), ("静止軌道", 35786)]:
_, _, total = hohmann(400, alt)
print(f"400km → {name}({alt}km): 合計Δv {total:.0f} m/s")行き先が遠いほど合計Δvが増えます。軌道を大きく変えるほど燃料が要る——衛星の軌道計画がなぜ綿密なのか、数字で腑に落ちます。
まとめ
- ホーマン遷移=内外の円軌道に接する楕円を経由し、2回の噴射で乗り換える
- LEO(400km)→GEO(静止軌道)は合計 約3.9 km/s のΔvが必要
- 同一平面・円→円ではΔv最小。省エネだが時間はかかる
- 行き先が遠いほどΔv(燃料)が増える
📚 もう少し詳しく(背景と理論)気になる人向け・タップで開く
この記事のコードをまとめて動かす
この記事のコードは、そのまま実行できる形でGitHubに置いています。手元で動かして数字を変えてみると、理解が早くなります。
- jumpei1228/space-hohmann-transfer-python(MITライセンス)
次の一歩 🌸
前提となる軌道速度は軌道速度をPythonで計算、Δvから燃料へはロケット方程式をPythonで解く、軌道の種類は軌道の種類へどうぞ。
