
楕円軌道の速度をPythonで計算|vis-viva方程式で近地点・遠地点を知る
2026-09-13 ・ 実践
実際の軌道は真円ではなく楕円です。楕円軌道のどの位置でも速度を求められる万能式が vis-viva方程式。この記事ではPythonで実装し、「近地点で速く、遠地点で遅い」というケプラーの第2法則を数値で確かめます。円軌道の速度の発展版です。
vis-viva方程式
軌道上の距離 r、軌道の長半径 a のとき、速度は次で決まります。
v = √( GM × (2/r − 1/a) )
円軌道(r = a)ならおなじみの √(GM/r) に戻ります。楕円にも使える一般形です。
準備
pip install numpy
① 楕円軌道の近地点・遠地点速度
近地点高度400km・遠地点高度35786km(GTO=静止トランスファ軌道に近い)の楕円で計算します。
import numpy as np
GM = 3.986e14
R = 6.371e6
r_peri = R + 400e3 # 近地点までの距離
r_apo = R + 35786e3 # 遠地点までの距離
a = (r_peri + r_apo) / 2 # 長半径
def vis_viva(r, a):
return np.sqrt(GM * (2/r - 1/a))
print(f"近地点速度: {vis_viva(r_peri, a)/1000:.2f} km/s")
print(f"遠地点速度: {vis_viva(r_apo, a)/1000:.2f} km/s")
出力:
近地点速度: 10.07 km/s
遠地点速度: 1.62 km/s
近地点では約10.1km/s、遠地点ではわずか1.6km/s。地球に近いほど速く、遠いほど遅い——ケプラーの第2法則が数字で見えました。
② 面積速度が一定なことを確かめる
ケプラーの第2法則は「一定時間に掃く面積が等しい」。近地点・遠地点で r × v がほぼ等しくなるはずです。
print("近地点 r×v:", r_peri * vis_viva(r_peri, a))
print("遠地点 r×v:", r_apo * vis_viva(r_apo, a))
両者はほぼ一致します(近地点・遠地点では速度と半径が直交するため r×v が角運動量に比例)。遅い代わりに遠く、速い代わりに近く——バランスが保たれています。
円軌道は特別な楕円
vis-vivaで r = a とすると √(GM/a)、つまり円軌道速度になります。円は「離心率0の楕円」。1つの式で円も楕円も扱えるのが美しいところです。
遠地点で加速するとどうなる?
遠地点(1.6km/s)でエンジンを噴かして円軌道速度(約3.07km/s)まで上げると、静止軌道に乗ります。これがホーマン遷移の2回目の噴射。vis-vivaは軌道遷移の計算の土台です。
まとめ
- vis-viva
v=√(GM(2/r−1/a))は楕円軌道のどこでも速度を出せる - 近地点で速く、遠地点で遅い(ケプラーの第2法則)
- r×v がほぼ一定=角運動量保存
- 円軌道は r=a の特別な場合。軌道遷移計算の基礎
もう少し詳しく(背景と理論)
ビス・ビバ方程式 v² = GM(2/r − 1/a) は、二体問題におけるエネルギー保存則を軌道の言葉で書き直したものです1。左辺の運動エネルギーと重力ポテンシャルの和が一定であることから導かれ、軌道長半径 a が軌道の全エネルギーを一手に決める(E = −GM/2a)ことを示します2。この一本で、円軌道(r=a)・楕円・放物線(a→∞ で脱出速度)・双曲線をすべて統一的に扱えます。ケプラーの法則を万有引力から導いた Newton の枠組みの帰結であり3、ホーマン遷移など軌道遷移の Δv 計算の土台になります。
次の一歩 🌸
円軌道は軌道速度、軌道の乗り換えはホーマン遷移、軌道の種類は軌道の種類へどうぞ。