小编典典

月/月相算法

algorithm

有谁知道一种算法来计算给定日期的月相或年龄,或者找到给定年份中新月/满月的日期?

Googling告诉我答案是在一本天文学书籍中,但是当我只需要一页时,我真的不想买整本书。

更新:

我应该对有关谷歌搜索的声明有所保留。我确实找到了只能在某些时间段内(例如1900年代)工作的解决方案;以及基于trig的解决方案,这些解决方案在计算上会比我想要的昂贵。

S
Lott在他的Python书中有几种算法来计算给定年份的复活节,大多数算法少于十行代码,有些算法在公历中每天都工作。寻找三月的满月是寻找复活节的关键,因此我认为应该有一种算法,该算法不需要触发就可以用于公历中的所有日期。


阅读 1101

收藏
2020-07-28

共1个答案

小编典典

不久前,我将一些代码移植到了Python中。我本来只是要链接到它,但是事实证明它是同时从网络上掉下来的,所以我不得不清除它并重新上传它。请参阅moon.py,该文件派生自John
Walker的moontool

对于这两个时间段的准确时间,我都找不到参考,但作者似乎很严格。这意味着是的,它确实使用了trig,但是我无法想象您将为此使用的到底将使它在计算上变得令人望而却步。Python函数调用的开销可能比trig操作的开销更大。计算机在计算方面非常快。

该代码中使用的算法来自以下来源:

Meeus,Jean。 天文算法。列治文:威尔曼·贝尔(Willmann-Bell),1991年。ISBN0-943396-35-2。

必备品;如果您只买一本书,请确保它是这本书。算法以数学方式而不是计算机程序形式提供,但是可以使用QuickBasic,Turbo
Pascal或C从出版商处单独订购实现本书中许多算法的源代码。Meeus提供了许多对调试必不可少的计算示例您的代码,并经常在精度,速度,复杂性和长期(世纪和千年)有效性之间提出几种折衷的算法。

达菲特·史密斯(Duffett-Smith),彼得。
您的计算器的实用天文学。第三版。剑桥:剑桥大学出版社,1981年。ISBN0-521-28411-2。

尽管标题中有“计算器”一词;如果您对开发计算行星位置,轨道,日食等的软件感兴趣,那么这是一个有价值的参考。比Meeus提供的背景信息更多,这可以帮助那些尚未精通天文学的人学习经常混淆的术语。所提供的算法比Meeus提供的算法更简单,准确性更低,但适用于大多数实际工作。

2020-07-28