Car*_*ers 7 language-agnostic astronomy
我试图解决开普勒方程,作为在给定时间内找到轨道体的真实异常的一个步骤.事实证明,开普勒的方程很难解决,维基百科页面使用微积分描述了这个过程.好吧,我不知道微积分,但我知道解决方程涉及无数个集合,这些集合产生了与正确答案越来越接近的近似值.
我无法从数学上看到如何计算这个,所以我希望有更好数学背景的人可以帮助我.我怎么能在计算上解决这个野兽?
FWIW,我正在使用F# - 我可以计算出这个等式所需的其他元素,只是这部分我遇到了麻烦.
我也对接近时间,近点距离和离心率的真实异常的方法持开放态度
这篇报告:
求解开普勒方程的一种实用方法
http://murison.alpheratz.net/dynamics/twobody/KeplerIterations_summary.pdf
展示了如何使用迭代计算方法解决开普勒方程.将它翻译成您选择的语言应该相当简单.
您可能也会发现这很有趣. 这是一个ocaml程序,其中一部分声称包含一个Kepler方程求解器.由于F#属于ML系列语言(如ocaml),这可能是一个很好的起点.
你可以检查一下,它是用 C# 实现的Carl Johansen
Represents a body in elliptical orbit about a massive central body
这是代码中的注释
在这种情况下,真正的异常是身体和太阳之间的角度。对于椭圆轨道,这有点棘手。完成周期的百分比仍然是一个关键输入,但我们还需要应用开普勒方程(基于偏心率)以确保我们在相同的时间内扫过相同的面积。该方程是超越方程(即无法用代数方法求解),因此我们必须使用近似方程或通过数值方法求解。我的实现使用 Newton-Raphson 迭代来获得出色的近似答案(通常需要 2 或 3 次迭代)。