1

我正在尝试计算 0 年前巴比伦的古代现象。而且我能够从 Pyephem 获得与已知记录一致的东西,但我想使用 Skyfield,因为那似乎是更现代的图书馆。然而,当我尝试将工作代码从 Pyephem 翻译到 Skyfield 时,我得到了完全不同的结果。我不确定日期本身是否有问题,或者计算是否错误。

可以在此处找到有关程序的快速 Jupyter Notebook:https ://gist.github.com/willismonroe/ae49480cd4cb1c21c5a214a70eb6f3d6

4

1 回答 1

0

粗略的粗略计算表明,月球在 29 天内环绕天空,每天移动约 360° ÷ 29 ≈ 12½ 度。

因此,您的 Skyfield 脚本有一个问题:它仅在月球相对于太阳的经度介于 6° 和 14° 之间时才打印日期,范围只有 14 - 6 = 8° 宽。在某些月份,它的 12½° 跳跃恰好落在狭窄的 8° 范围内,而在某些月份,它完全跳过了它。这就是为什么 Skyfield 脚本只打印几个月而不打印其他月份的原因。

相比之下,PyEphem 脚本以弧度为单位将角度乘以 30,将范围 0…6.28 变为范围 0…188.4。非常粗略地说,您使用的度量单位是“双度数”,其中 188 个是完整的圆。月亮每天只跳跃大约 6¼“双度”,因此它保证每月至少一次降落在你的 6 到 14 范围内,因为 6¼ 的跳跃不足以完全跳过该范围。

我的猜测是,您应该尝试选择一种您感兴趣的精确度角的方法,例如 6°,然后编写一个小程序来准确找到每个月跨越该阈值的日期和时间。这是一个希望可以帮助您入门的示例:

https://rhodesmill.org/skyfield/searches.html

于 2020-09-12T23:05:05.313 回答