开普勒问题是一个二体问题,用于找到轨道体的在一段时间内的位置和速度。给定质量、位置和速度,或者可以给出六个开普勒轨道元素。
假设轨道由半长轴
、偏心率
、倾角
、升交点赤经
和 近心点幅角
定义。 则可以找到轨道体在时间
的位置。步骤如下
1. 计算平均近心点角
其中,
是引力参数,
是轨道体经过近心点的时间。 为方便起见,平均近心点角可以在
区间内表示。
2. 使用开普勒方程计算偏心近心点角
虽然开普勒方程很容易求解时间,但逆问题没有一般解。要确定给定时间点的偏心近心点角(以及航天器的位置),通常使用迭代数值方法,例如牛顿法

其中

迭代采用以下形式

对于大多数椭圆轨道,初始猜测E0 = M 就足够了;对于偏心率大于 0.8 的轨道,可以使用E0 = π。 更好的初始猜测是可能的,但通常不需要。 迭代过程重复进行,直到达到所需的精度条件,例如

其中
是所需的精度。
此外,与平均异常一样,偏心异常可以限制在区间
内。
3. 计算真近点角
注意,由于正切函数及其反函数的取值范围和定义域,需要进行象限检查。 如果偏心异常被限制在区间
内,那么当
时,不需要进行象限检查。
从二体问题的特例可以看出,运动的控制方程如上所示,其中
是引力参数。 给定一个初始位置向量,
,以及对应的速度向量,
,可以使用数值积分求解未来位置。 为了使用 ODE 朗格-库塔方法,控制方程必须表示为一阶 ODE 系统,如下所示。 注意,下面显示的系统是矢量化控制方程的标量表示。
龙格-库塔方法是一种迭代半隐式数值方法,许多软件包括这种方法,例如 MATLAB 和 Python 的 SciPy 积分方法。这些方法使用自适应步长,通过使用两种方法阶数来估计局部截断误差。例如,RK45 将使用 4 阶和 5 阶,RK89 将使用 8 阶和 9 阶。误差将与用户定义的误差进行比较和检查,并根据误差是否过小或过大来调整步长,使其变小或变大。一个简单的常数正步长,
,4 阶龙格-库塔方法如下所示。
假设一个 ODE 系统如上所示,带有初始条件。
那么 4 阶龙格-库塔方法可以表述为
其中,