開普勒問題是一個二體問題,用於找到軌道體的在一段時間內的位置和速度。給定質量、位置和速度,或者可以給出六個開普勒軌道元素。
假設軌道由半長軸
、偏心率
、傾角
、升交點赤經
和 近心點幅角
定義。 則可以找到軌道體在時間
的位置。步驟如下
1. 計算平均近心點角
其中,
是引力引數,
是軌道體經過近心點的時間。 為方便起見,平均近心點角可以在
區間內表示。
2. 使用開普勒方程計算偏心近心點角
雖然開普勒方程很容易求解時間,但逆問題沒有一般解。要確定給定時間點的偏心近心點角(以及航天器的位置),通常使用迭代數值方法,例如牛頓法

其中

迭代採用以下形式

對於大多數橢圓軌道,初始猜測E0 = M 就足夠了;對於偏心率大於 0.8 的軌道,可以使用E0 = π。 更好的初始猜測是可能的,但通常不需要。 迭代過程重複進行,直到達到所需的精度條件,例如

其中
是所需的精度。
此外,與平均異常一樣,偏心異常可以限制在區間
內。
3. 計算真近點角
注意,由於正切函式及其反函式的取值範圍和定義域,需要進行象限檢查。 如果偏心異常被限制在區間
內,那麼當
時,不需要進行象限檢查。
從二體問題的特例可以看出,運動的控制方程如上所示,其中
是引力引數。 給定一個初始位置向量,
,以及對應的速度向量,
,可以使用數值積分求解未來位置。 為了使用 ODE 朗格-庫塔方法,控制方程必須表示為一階 ODE 系統,如下所示。 注意,下面顯示的系統是向量化控制方程的標量表示。
龍格-庫塔方法是一種迭代半隱式數值方法,許多軟體包括這種方法,例如 MATLAB 和 Python 的 SciPy 積分方法。這些方法使用自適應步長,透過使用兩種方法階數來估計區域性截斷誤差。例如,RK45 將使用 4 階和 5 階,RK89 將使用 8 階和 9 階。誤差將與使用者定義的誤差進行比較和檢查,並根據誤差是否過小或過大來調整步長,使其變小或變大。一個簡單的常數正步長,
,4 階龍格-庫塔方法如下所示。
假設一個 ODE 系統如上所示,帶有初始條件。
那麼 4 階龍格-庫塔方法可以表述為
其中,