Pyephem 和 Skyfield 计算远古现象的区别

Differences between Pyephem and Skyfield for calculating ancient phenomena

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

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

粗略的 back-of-the-envelope 计算表明,月亮在 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