軌道遷移とデルタV — ホーマン遷移から二重インパルスまで

人工衛星を打ち上げた後、目的の軌道に投入するためにはエンジンを噴射して速度を変える必要があります。たとえば、国際宇宙ステーション(ISS)は高度約400 kmの円軌道にいますが、気象衛星ひまわりは高度約36,000 kmの静止軌道にいます。この10倍近い高度差をどうやって移動するのでしょうか? 答えは「エンジンを適切なタイミングで噴射して、軌道を乗り換える」です。

軌道遷移の計画において最も重要な量がデルタV($\Delta V$)です。デルタVは軌道変更に必要な速度変化量であり、推進剤の消費量に直結します。ロケットの搭載燃料は有限なので、いかに少ないデルタVで目的の軌道に到達するかは、ミッション設計の核心的な問題です。

デルタVの概念を理解すると、以下のような応用が見えてきます。

  • 静止軌道投入: LEO → GTO → GEO という典型的な遷移シーケンスの設計
  • 惑星間航行: 地球から火星への遷移軌道に必要な推進剤量の見積もり
  • 軌道維持: 軌道が摂動で崩れた際の修正噴射量の計算

本記事の内容

  • デルタVの物理的意味とツィオルコフスキーの式
  • ビザビバ方程式を用いた速度計算
  • ホーマン遷移の導出と最適性
  • バイエリプティック(bi-elliptic)遷移
  • 軌道面変更のデルタV
  • Pythonによるホーマン遷移の計算と可視化
  • LEO → GEO 遷移の実例計算

前提知識

この記事を読む前に、以下の記事を読んでおくと理解が深まります。

デルタVとは — 軌道変更の「通貨」

インパルス近似

軌道遷移を考える際、エンジン噴射は瞬間的に行われると近似することが多いです。これをインパルス近似と呼びます。現実のロケットエンジンの噴射時間は数分程度ですが、軌道周期(約90分〜24時間)に比べれば十分短いため、この近似は多くの場合に妥当です。

インパルス近似のもとでは、エンジン噴射の前後で衛星の位置は変わらず、速度だけが瞬間的に変化します。このときの速度変化の大きさがデルタV($\Delta V$)です。

$$ \Delta V = |\bm{v}_{\text{after}} – \bm{v}_{\text{before}}| $$

デルタVが重要なのは、ロケット方程式(ツィオルコフスキーの式)を通じて推進剤の消費量に直結するからです。

ツィオルコフスキーのロケット方程式

ロケットが真空中でエンジンを噴射するとき、噴射前の質量 $m_0$ と噴射後の質量 $m_f$ の比は次の式で表されます。

$$ \Delta V = I_{\text{sp}} g_0 \ln\frac{m_0}{m_f} $$

ここで $I_{\text{sp}}$ は比推力(秒)、$g_0 = 9.80665 \, \text{m/s}^2$ は標準重力加速度です。この式を変形すると

$$ \frac{m_f}{m_0} = \exp\left(-\frac{\Delta V}{I_{\text{sp}} g_0}\right) $$

$\Delta V$ が大きいほど必要な推進剤の割合が指数関数的に増加します。たとえば、$I_{\text{sp}} = 300 \, \text{s}$ のエンジンで $\Delta V = 3 \, \text{km/s}$ を達成するには、初期質量の約64%が推進剤でなければなりません。だからこそ、デルタVを最小化する遷移軌道の設計が極めて重要なのです。

デルタVの概念が理解できたところで、次にビザビバ方程式を復習して、軌道上の任意の点での速度を計算する方法を確認しましょう。

ビザビバ方程式の復習

方程式の導出概要

ビザビバ方程式(vis-viva equation)は、軌道上の任意の位置 $r$ における衛星の速度 $v$ を与える式です。力学的エネルギーの保存 $\mathcal{E} = v^2/2 – \mu/r = -\mu/(2a)$ から直接得られます。

$$ \boxed{v^2 = \mu\left(\frac{2}{r} – \frac{1}{a}\right)} $$

ここで $\mu = GM$ は中心天体の重力パラメータ、$a$ は軌道の半長軸です。

特殊な場合

円軌道($r = a$)の場合

$$ v_c = \sqrt{\frac{\mu}{r}} $$

これは円軌道速度です。高度が高いほど速度は小さくなります。

脱出速度($a \to \infty$、放物線軌道)の場合

$$ v_{\text{esc}} = \sqrt{\frac{2\mu}{r}} = \sqrt{2} \, v_c $$

脱出速度は常に円軌道速度の $\sqrt{2} \approx 1.414$ 倍です。

楕円軌道の近点・遠点速度

楕円軌道の近点($r_p = a(1-e)$)と遠点($r_a = a(1+e)$)での速度は、ビザビバ方程式から次のように求まります。

近点速度:

$$ v_p = \sqrt{\mu\left(\frac{2}{a(1-e)} – \frac{1}{a}\right)} = \sqrt{\frac{\mu}{a}\cdot\frac{1+e}{1-e}} $$

遠点速度:

$$ v_a = \sqrt{\mu\left(\frac{2}{a(1+e)} – \frac{1}{a}\right)} = \sqrt{\frac{\mu}{a}\cdot\frac{1-e}{1+e}} $$

近点と遠点の速度比は $v_p/v_a = (1+e)/(1-e)$ であり、離心率が大きいほど速度差が大きくなります。

ビザビバ方程式を使えば、軌道上の任意の位置での速度がわかります。これを活用して、最も効率的な軌道遷移方法であるホーマン遷移を導出しましょう。

ホーマン遷移 — 最もシンプルで効率的な軌道変更

ホーマン遷移の概要

ホーマン遷移(Hohmann Transfer)は、1925年にドイツの技術者ヴァルター・ホーマンが考案した軌道遷移法です。2つの同一平面上の円軌道間を移動するとき、2回のインパルス(エンジン噴射)だけで遷移を行います。

日常のアナロジーで説明すると、高速道路のインターチェンジを想像してください。内側の環状線(内側円軌道)から外側の環状線(外側円軌道)に移るために、まずランプ(遷移楕円)に入り、外側の環状線に合流します。ホーマン遷移では、この「ランプ」に当たるのが遷移楕円軌道です。

遷移楕円は次の条件を満たします。

  • 近点が内側円軌道に接する: $r_p = r_1$
  • 遠点が外側円軌道に接する: $r_a = r_2$

したがって遷移楕円の半長軸は

$$ a_t = \frac{r_1 + r_2}{2} $$

デルタVの導出

第1噴射($\Delta V_1$): 内側円軌道から遷移楕円に乗り移るために、速度を増加させます。

内側円軌道の速度は

$$ v_{c1} = \sqrt{\frac{\mu}{r_1}} $$

遷移楕円の近点速度は(ビザビバ方程式より)

$$ v_{t,p} = \sqrt{\mu\left(\frac{2}{r_1} – \frac{1}{a_t}\right)} $$

$a_t = (r_1 + r_2)/2$ を代入すると

$$ v_{t,p} = \sqrt{\mu\left(\frac{2}{r_1} – \frac{2}{r_1 + r_2}\right)} = \sqrt{\frac{2\mu}{r_1}\cdot\frac{r_2}{r_1 + r_2}} $$

したがって第1噴射のデルタVは

$$ \Delta V_1 = v_{t,p} – v_{c1} = \sqrt{\frac{\mu}{r_1}}\left(\sqrt{\frac{2r_2}{r_1 + r_2}} – 1\right) $$

第2噴射($\Delta V_2$): 遷移楕円の遠点に到達したとき、速度を増加させて外側円軌道に乗り移ります。

外側円軌道の速度は

$$ v_{c2} = \sqrt{\frac{\mu}{r_2}} $$

遷移楕円の遠点速度は

$$ v_{t,a} = \sqrt{\mu\left(\frac{2}{r_2} – \frac{1}{a_t}\right)} = \sqrt{\frac{2\mu}{r_2}\cdot\frac{r_1}{r_1 + r_2}} $$

したがって第2噴射のデルタVは

$$ \Delta V_2 = v_{c2} – v_{t,a} = \sqrt{\frac{\mu}{r_2}}\left(1 – \sqrt{\frac{2r_1}{r_1 + r_2}}\right) $$

合計デルタV:

$$ \boxed{\Delta V_{\text{total}} = \Delta V_1 + \Delta V_2} $$

ホーマン遷移の所要時間

遷移楕円の半周期(近点から遠点まで)が遷移時間です。

$$ t_{\text{transfer}} = \frac{T_t}{2} = \pi\sqrt{\frac{a_t^3}{\mu}} = \pi\sqrt{\frac{(r_1 + r_2)^3}{8\mu}} $$

ホーマン遷移はデルタVを最小化しますが、遷移時間は楕円の半周期分かかります。もし遷移時間を短くしたいなら、より多くのデルタVを使って速い遷移軌道を選ぶこともできます。

ホーマン遷移は同一平面上の2つの円軌道間では最適ですが、軌道半径比が非常に大きい場合は別の方法が有利になることがあります。それがバイエリプティック遷移です。

バイエリプティック遷移 — 遠回りが得をする場合

概要

バイエリプティック遷移(Bi-Elliptic Transfer)は、3回のインパルスを用いる遷移法です。一見非効率に見えますが、軌道半径比 $r_2/r_1$ が十分大きい場合、ホーマン遷移よりも少ないデルタVで遷移できるという驚くべき性質があります。

手順は次の通りです。

  1. 第1噴射: 内側円軌道 $r_1$ から、中間半径 $r_b$($r_b > r_2$)を遠点とする楕円軌道1に移る
  2. 第2噴射: 楕円軌道1の遠点 $r_b$ で、外側円軌道 $r_2$ を近点とする楕円軌道2に移る
  3. 第3噴射: 楕円軌道2の近点 $r_2$ で円軌道化する

デルタVの計算

楕円軌道1: 半長軸 $a_1 = (r_1 + r_b)/2$

楕円軌道2: 半長軸 $a_2 = (r_2 + r_b)/2$

ビザビバ方程式を用いると、各噴射のデルタVは次のようになります。

$$ \Delta V_1 = \sqrt{\frac{2\mu}{r_1} – \frac{\mu}{a_1}} – \sqrt{\frac{\mu}{r_1}} $$

$$ \Delta V_2 = \left|\sqrt{\frac{2\mu}{r_b} – \frac{\mu}{a_2}} – \sqrt{\frac{2\mu}{r_b} – \frac{\mu}{a_1}}\right| $$

$$ \Delta V_3 = \left|\sqrt{\frac{\mu}{r_2}} – \sqrt{\frac{2\mu}{r_2} – \frac{\mu}{a_2}}\right| $$

ホーマン遷移との比較

バイエリプティック遷移が有利になる条件は、軌道半径比 $R = r_2/r_1$ に依存します。

  • $R < 11.94$: ホーマン遷移が常に有利
  • $R > 11.94$: バイエリプティック遷移が有利になる $r_b$ が存在する
  • $R \to \infty$: バイエリプティック遷移の方が大幅に有利

ただし、バイエリプティック遷移は遷移時間が非常に長くなるため、実際のミッションではホーマン遷移が選ばれることがほとんどです。

バイエリプティック遷移は軌道面が同じ場合の議論でしたが、実際のミッションでは軌道面の変更も必要になることがあります。次に、軌道傾斜角の変更に必要なデルタVを計算しましょう。

軌道面変更 — 傾斜角を変えるコスト

純粋な傾斜角変更

軌道面の傾斜角を $\Delta i$ だけ変更するには、速度ベクトルの方向を変える必要があります。速度の大きさ $v$ を保ったまま方向だけを $\Delta i$ 回転させるとき、デルタVは余弦定理から求まります。

$$ \boxed{\Delta V_{\text{plane}} = 2v\sin\frac{\Delta i}{2}} $$

この式から重要な洞察が得られます。

  1. 軌道面変更のデルタVは速度 $v$ に比例する — したがって、速度が遅い(高い高度の)位置で軌道面変更を行うほど効率的です。
  2. 大きな傾斜角変更は非常に高コスト — たとえば $\Delta i = 28.5°$(ケープカナベラルの緯度、LEOからGEOへの傾斜角変更に相当)の場合、$\Delta V \approx 0.49v$ となります。

複合マヌーバ: 高度変更と傾斜角変更の同時実施

実際のGEO投入では、GTOの遠点(速度が最も遅い)で高度変更と傾斜角変更を同時に行うことで、デルタVを大幅に節約できます。これを複合マヌーバと呼びます。

遷移前の速度ベクトル $\bm{v}_1$ と遷移後の速度ベクトル $\bm{v}_2$ が角度 $\Delta i$ をなすとき

$$ \Delta V = \sqrt{v_1^2 + v_2^2 – 2v_1 v_2 \cos\Delta i} $$

単純に別々に実行する場合のデルタV($|v_2 – v_1| + 2v_1\sin(\Delta i/2)$)より、同時実行の方が常に小さくなることが示せます。

理論の説明が一通り終わりました。次に、Pythonを使ってホーマン遷移の計算と可視化を行い、理論の理解を深めましょう。

Pythonでホーマン遷移を計算・可視化する

ホーマン遷移のΔV計算

まず、ホーマン遷移のデルタVと遷移時間を計算する関数を作成し、さまざまな軌道半径比に対する結果を可視化します。

import numpy as np
import matplotlib.pyplot as plt

def hohmann_transfer(r1, r2, mu):
    """ホーマン遷移のデルタVと遷移時間を計算する"""
    # 遷移楕円の半長軸
    a_t = (r1 + r2) / 2.0

    # 各速度の計算
    v_c1 = np.sqrt(mu / r1)         # 内側円軌道速度
    v_c2 = np.sqrt(mu / r2)         # 外側円軌道速度
    v_tp = np.sqrt(mu * (2/r1 - 1/a_t))  # 遷移楕円の近点速度
    v_ta = np.sqrt(mu * (2/r2 - 1/a_t))  # 遷移楕円の遠点速度

    # デルタV
    dv1 = v_tp - v_c1
    dv2 = v_c2 - v_ta
    dv_total = abs(dv1) + abs(dv2)

    # 遷移時間(半周期)
    t_transfer = np.pi * np.sqrt(a_t**3 / mu)

    return {
        'dv1': dv1, 'dv2': dv2, 'dv_total': dv_total,
        't_transfer': t_transfer, 'a_t': a_t,
        'v_c1': v_c1, 'v_c2': v_c2, 'v_tp': v_tp, 'v_ta': v_ta
    }

# 地球の重力パラメータ
mu_earth = 3.986e14  # m^3/s^2
R_earth = 6378e3     # m

# LEO(高度200 km)からの遷移
r1 = R_earth + 200e3  # LEO半径

# 軌道半径比を変えてデルタVを計算
ratios = np.linspace(1.1, 15, 500)
r2_array = r1 * ratios

dv1_array = []
dv2_array = []
dv_total_array = []
t_array = []

for r2 in r2_array:
    result = hohmann_transfer(r1, r2, mu_earth)
    dv1_array.append(result['dv1'] / 1000)      # km/sに変換
    dv2_array.append(result['dv2'] / 1000)
    dv_total_array.append(result['dv_total'] / 1000)
    t_array.append(result['t_transfer'] / 3600)  # 時間に変換

fig, axes = plt.subplots(2, 1, figsize=(10, 8))

# デルタVのプロット
axes[0].plot(ratios, dv1_array, label='$\\Delta V_1$(第1噴射)',
             linewidth=2, color='#2196F3')
axes[0].plot(ratios, dv2_array, label='$\\Delta V_2$(第2噴射)',
             linewidth=2, color='#4CAF50')
axes[0].plot(ratios, dv_total_array, label='$\\Delta V_{total}$',
             linewidth=2.5, color='#F44336')
axes[0].set_xlabel('軌道半径比 $r_2/r_1$', fontsize=12)
axes[0].set_ylabel('$\\Delta V$ [km/s]', fontsize=12)
axes[0].set_title('ホーマン遷移のデルタV(LEO起点)', fontsize=14)
axes[0].legend(fontsize=11)
axes[0].grid(True, alpha=0.3)
axes[0].set_xlim(1, 15)

# 遷移時間のプロット
axes[1].plot(ratios, t_array, linewidth=2, color='#9C27B0')
axes[1].set_xlabel('軌道半径比 $r_2/r_1$', fontsize=12)
axes[1].set_ylabel('遷移時間 [時間]', fontsize=12)
axes[1].set_title('ホーマン遷移の所要時間', fontsize=14)
axes[1].grid(True, alpha=0.3)
axes[1].set_xlim(1, 15)

plt.tight_layout()
plt.show()

このグラフから、ホーマン遷移について重要な特徴が読み取れます。

  1. $\Delta V_1$(第1噴射)は軌道半径比の増加とともに単調に増加し、やがて一定値(脱出速度との差)に漸近します。これは、外側軌道がどれだけ遠くても、第1噴射は近地点で行うため、必要速度の上限が存在するためです。
  2. $\Delta V_2$(第2噴射)は軌道半径比が大きくなると急速にゼロに近づきます。これは、遠い軌道ほど円軌道速度が遅く、遷移楕円の遠点速度もほぼ同じ値になるためです。
  3. 合計デルタVは軌道半径比が大きくなるにつれて飽和し、脱出速度から円軌道速度を引いた値に漸近します。直感的に言えば、非常に遠くに行くにはまず脱出すればよく、到着先での速度は無視できるほど小さいということです。
  4. 遷移時間は軌道半径比の1.5乗に比例して増加します(ケプラーの第3法則)。GEO到達に約5時間かかることが読み取れます。

ホーマン遷移軌道の可視化

次に、LEOからGEOへのホーマン遷移を具体的に可視化します。

import numpy as np
import matplotlib.pyplot as plt

mu = 3.986e14  # m^3/s^2
R_earth = 6378e3  # m

# LEO(高度200 km)→ GEO(高度35786 km)
r_leo = R_earth + 200e3
r_geo = R_earth + 35786e3

# ホーマン遷移の計算
result = hohmann_transfer(r_leo, r_geo, mu)
a_t = result['a_t']

print("=== LEO → GEO ホーマン遷移 ===")
print(f"LEO半径: {r_leo/1000:.0f} km")
print(f"GEO半径: {r_geo/1000:.0f} km")
print(f"遷移楕円半長軸: {a_t/1000:.0f} km")
print(f"ΔV1: {result['dv1']/1000:.3f} km/s")
print(f"ΔV2: {result['dv2']/1000:.3f} km/s")
print(f"ΔV合計: {result['dv_total']/1000:.3f} km/s")
print(f"遷移時間: {result['t_transfer']/3600:.2f} 時間")

# 可視化
theta = np.linspace(0, 2 * np.pi, 500)

# 地球
theta_earth = np.linspace(0, 2 * np.pi, 100)
x_earth = R_earth * np.cos(theta_earth) / 1000
y_earth = R_earth * np.sin(theta_earth) / 1000

# LEO
x_leo = r_leo * np.cos(theta) / 1000
y_leo = r_leo * np.sin(theta) / 1000

# GEO
x_geo = r_geo * np.cos(theta) / 1000
y_geo = r_geo * np.sin(theta) / 1000

# 遷移楕円(半分だけ描画)
e_t = 1 - r_leo / a_t
p_t = a_t * (1 - e_t**2)
theta_transfer = np.linspace(0, np.pi, 300)
r_transfer = p_t / (1 + e_t * np.cos(theta_transfer))
x_transfer = r_transfer * np.cos(theta_transfer) / 1000
y_transfer = r_transfer * np.sin(theta_transfer) / 1000

fig, ax = plt.subplots(figsize=(10, 10))

# 地球
earth_circle = plt.Circle((0, 0), R_earth / 1000,
                           color='#4FC3F7', alpha=0.4, label='地球')
ax.add_patch(earth_circle)

# 軌道
ax.plot(x_leo, y_leo, '--', color='#2196F3', linewidth=1.5,
        label=f'LEO (h=200 km)')
ax.plot(x_geo, y_geo, '--', color='#4CAF50', linewidth=1.5,
        label=f'GEO (h=35,786 km)')
ax.plot(x_transfer, y_transfer, '-', color='#F44336', linewidth=2.5,
        label='遷移楕円')

# 噴射点をマーク
ax.plot(r_leo / 1000, 0, 'v', color='#F44336', markersize=15,
        markeredgecolor='black', markeredgewidth=1)
ax.annotate(f'第1噴射\n$\\Delta V_1$ = {result["dv1"]/1000:.3f} km/s',
            xy=(r_leo / 1000, 0), fontsize=10,
            textcoords="offset points", xytext=(15, -30))

ax.plot(-r_geo / 1000, 0, '^', color='#F44336', markersize=15,
        markeredgecolor='black', markeredgewidth=1)
ax.annotate(f'第2噴射\n$\\Delta V_2$ = {result["dv2"]/1000:.3f} km/s',
            xy=(-r_geo / 1000, 0), fontsize=10,
            textcoords="offset points", xytext=(15, 10))

ax.set_xlim(-55000, 55000)
ax.set_ylim(-55000, 55000)
ax.set_xlabel('x [km]', fontsize=12)
ax.set_ylabel('y [km]', fontsize=12)
ax.set_title('LEO → GEO ホーマン遷移軌道', fontsize=14)
ax.legend(fontsize=11, loc='upper right')
ax.set_aspect('equal')
ax.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()

この図から、LEO → GEO のホーマン遷移の全体像が把握できます。

  1. LEOとGEOの半径の差は約6倍であり、遷移楕円はこの2つの軌道をちょうど橋渡しする形になっています。遷移楕円の近点がLEOに接し、遠点がGEOに接しています。
  2. 第1噴射($\Delta V_1 \approx 2.457 \, \text{km/s}$)は第2噴射($\Delta V_2 \approx 1.478 \, \text{km/s}$)より大きいことがわかります。これは、LEOでの円軌道速度が高いため、遷移楕円に乗り移るために大きな速度増加が必要だからです。
  3. 合計デルタV約3.935 km/sは、衛星設計において推進系のサイジングの基本データとなります。ただし、これは軌道面変更を含まないため、実際にはさらに追加のデルタVが必要です。

ホーマン遷移 vs バイエリプティック遷移の比較

軌道半径比を変えて、ホーマン遷移とバイエリプティック遷移のデルタVを比較します。

import numpy as np
import matplotlib.pyplot as plt

def bielliptic_transfer(r1, r2, rb, mu):
    """バイエリプティック遷移のデルタVを計算"""
    a1 = (r1 + rb) / 2
    a2 = (r2 + rb) / 2

    v_c1 = np.sqrt(mu / r1)
    v_c2 = np.sqrt(mu / r2)

    # 楕円1の近点速度
    v1_p = np.sqrt(mu * (2/r1 - 1/a1))
    # 楕円1の遠点速度
    v1_a = np.sqrt(mu * (2/rb - 1/a1))
    # 楕円2の遠点速度
    v2_a = np.sqrt(mu * (2/rb - 1/a2))
    # 楕円2の近点速度
    v2_p = np.sqrt(mu * (2/r2 - 1/a2))

    dv1 = abs(v1_p - v_c1)
    dv2 = abs(v2_a - v1_a)
    dv3 = abs(v_c2 - v2_p)

    return dv1 + dv2 + dv3

mu = 1.0
r1 = 1.0

ratios = np.linspace(2, 30, 500)
dv_hohmann = []
dv_bielliptic = []

for R in ratios:
    r2 = r1 * R

    # ホーマン遷移
    res = hohmann_transfer(r1, r2, mu)
    dv_hohmann.append(res['dv_total'])

    # バイエリプティック(中間半径 rb を最適化)
    rb_values = np.linspace(r2 * 1.1, r2 * 50, 200)
    dv_bi_min = float('inf')
    for rb in rb_values:
        dv_bi = bielliptic_transfer(r1, r2, rb, mu)
        if dv_bi < dv_bi_min:
            dv_bi_min = dv_bi
    dv_bielliptic.append(dv_bi_min)

# 円軌道速度で正規化
v_c1 = np.sqrt(mu / r1)
dv_hohmann_norm = np.array(dv_hohmann) / v_c1
dv_bielliptic_norm = np.array(dv_bielliptic) / v_c1

fig, ax = plt.subplots(figsize=(10, 6))
ax.plot(ratios, dv_hohmann_norm, linewidth=2.5, color='#2196F3',
        label='ホーマン遷移(2インパルス)')
ax.plot(ratios, dv_bielliptic_norm, linewidth=2.5, color='#F44336',
        label='バイエリプティック遷移(3インパルス, 最適rb)')

# 交差点の近似表示
ax.axvline(x=11.94, color='gray', linestyle=':', linewidth=1.5,
           label='$r_2/r_1 = 11.94$(交差点)')

ax.set_xlabel('軌道半径比 $r_2/r_1$', fontsize=12)
ax.set_ylabel('$\\Delta V / v_{c1}$ [正規化]', fontsize=12)
ax.set_title('ホーマン遷移 vs バイエリプティック遷移のデルタV比較',
             fontsize=14)
ax.legend(fontsize=11)
ax.grid(True, alpha=0.3)
ax.set_xlim(2, 30)
plt.tight_layout()
plt.show()

このグラフから、ホーマン遷移とバイエリプティック遷移の比較について以下の重要な知見が得られます。

  1. 軌道半径比が約12未満では、ホーマン遷移が常に有利です。LEO → GEO の半径比は約6.6なので、ホーマン遷移が最適解です。
  2. 軌道半径比が約12を超えると、バイエリプティック遷移が有利になる領域が現れます。これは直感に反する結果です。遠回りすることでデルタVが節約できるのは、高い高度(遅い速度)で方向転換を行えるためです。
  3. 実際の宇宙ミッションでは、バイエリプティック遷移は遷移時間が極めて長くなるため、ほとんど使われません。ただし、イオンエンジンなどの低推力推進では、結果的にバイエリプティックに近い軌道を取ることがあります。

実例: LEO → GEO の完全な遷移計算

実際のミッションを想定して、LEOからGEOへの遷移を傾斜角変更も含めて計算しましょう。ケープカナベラル(緯度28.5°N)からの打ち上げを仮定します。

import numpy as np

mu = 3.986e14  # m^3/s^2
R_earth = 6378e3  # m

# 軌道パラメータ
r_leo = R_earth + 200e3   # LEO高度200 km
r_geo = R_earth + 35786e3  # GEO高度35786 km
i_launch = 28.5  # 打ち上げ緯度 [deg]
delta_i = np.radians(i_launch)  # 傾斜角変更量 [rad]

# === 方法1: ホーマン遷移 + LEOで傾斜角変更 ===
res = hohmann_transfer(r_leo, r_geo, mu)
v_leo = np.sqrt(mu / r_leo)
dv_plane_leo = 2 * v_leo * np.sin(delta_i / 2)
dv_method1 = res['dv_total'] + dv_plane_leo

# === 方法2: ホーマン遷移 + GEOで傾斜角変更 ===
v_geo = np.sqrt(mu / r_geo)
dv_plane_geo = 2 * v_geo * np.sin(delta_i / 2)
dv_method2 = res['dv_total'] + dv_plane_geo

# === 方法3: ホーマン遷移 + GTO遠点で複合マヌーバ ===
# 第1噴射はLEOで通常通り
dv1 = res['dv1']

# 第2噴射(GTO遠点)で高度変更と傾斜角変更を同時実行
v_ta = res['v_ta']  # GTO遠点速度
v_c2 = res['v_c2']  # GEO円軌道速度
# 複合マヌーバのデルタV(余弦定理)
dv2_combined = np.sqrt(v_ta**2 + v_c2**2 - 2 * v_ta * v_c2 * np.cos(delta_i))
dv_method3 = abs(dv1) + dv2_combined

print("=== LEO(28.5°) → GEO(0°) 遷移比較 ===")
print(f"\n方法1: ホーマン遷移 + LEOで傾斜角変更")
print(f"  ΔV(Hohmann) = {res['dv_total']/1000:.3f} km/s")
print(f"  ΔV(plane@LEO) = {dv_plane_leo/1000:.3f} km/s")
print(f"  ΔV(合計) = {dv_method1/1000:.3f} km/s")

print(f"\n方法2: ホーマン遷移 + GEOで傾斜角変更")
print(f"  ΔV(Hohmann) = {res['dv_total']/1000:.3f} km/s")
print(f"  ΔV(plane@GEO) = {dv_plane_geo/1000:.3f} km/s")
print(f"  ΔV(合計) = {dv_method2/1000:.3f} km/s")

print(f"\n方法3: GTO遠点で複合マヌーバ")
print(f"  ΔV1(LEO→GTO) = {abs(dv1)/1000:.3f} km/s")
print(f"  ΔV2(複合) = {dv2_combined/1000:.3f} km/s")
print(f"  ΔV(合計) = {dv_method3/1000:.3f} km/s")

print(f"\n方法3は方法1より {(dv_method1-dv_method3)/1000:.3f} km/s 節約")
print(f"方法3は方法2より {(dv_method2-dv_method3)/1000:.3f} km/s 節約")

この計算結果から、軌道遷移の実務的な知見が得られます。

  1. 方法1(LEOで傾斜角変更)は最も高コストです。LEOでは軌道速度が約7.8 km/sと高いため、28.5°の面変更に約3.8 km/sも必要です。
  2. 方法2(GEOで傾斜角変更)は方法1より大幅に有利です。GEOでの軌道速度は約3.1 km/sなので、同じ角度の面変更でも約1.5 km/sで済みます。
  3. 方法3(GTO遠点での複合マヌーバ)が最も効率的です。高度変更と傾斜角変更を同時に行うことで、方向転換による追加コストが大幅に抑えられます。これが実際のGEO投入で使われる方法です。

まとめ

本記事では、人工衛星の軌道遷移に必要なデルタVの概念と計算法を解説しました。

  • デルタVは軌道変更の基本指標であり、ツィオルコフスキーの式を通じて推進剤消費量に直結する
  • ビザビバ方程式により、軌道上の任意の位置での速度を計算できる
  • ホーマン遷移は2つの同一平面円軌道間で最もデルタV効率の良い遷移法(2インパルス)
  • バイエリプティック遷移は軌道半径比が約12を超えるとホーマン遷移より有利になり得る
  • 軌道面変更は高い高度(低い速度)で行うと効率的であり、高度変更との複合マヌーバがさらに有利

軌道遷移の設計は、ロケットの打ち上げ能力、推進系の比推力、遷移時間の制約などとのトレードオフで決定されます。

次のステップとして、以下の記事も参考にしてください。