python – 月/月相位算法

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

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

更新:

我应该合格我的声明关于谷歌更好一点。我确实找到了解决方案,只工作在一些时间的子集(像1900年代);和基于trig的解决方案,比我想要的计算更昂贵。

S Lott在他的Python书中有几个计算复活节的算法在一个给定的一年,大多数不到十行代码和一些工作在所有天在公历。在3月份找到满月是找到复活节的关键,所以我想,应该有一个算法,不需要trig,并适用于公历日历中的所有日期。

我把一些代码移植到Python一段时间了。我只是链接到它,但事实证明,它脱离了网络在这段时间,所以我不得不去除灰尘,并再次上传。见moon.py,源自John Walker’s moontool

我找不到一个参考为什么时间跨度是准确的,但似乎作者是相当严格。这意味着是,它确实使用trig,但我不能想象你会使用它,因为这将使它在计算上是禁止的。 Python函数调用开销大​​概超过了trig操作的成本。计算机在计算上相当快。

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

Meeus,让。天文算法。 Richmond:Willmann-Bell,1991.ISBN 0-943396-35-2。

必须有;如果你只买一本书,确保它是这一个。算法以数学方式呈现,而不是作为计算机程序,但是实现本书中许多算法的源代码可以与QuickBasic,Turbo Pascal或C中的发布者分开订购。Meeus提供了许多工作的计算实例,这些计算对于调试是至关重要的您的代码,并经常提出几种算法在精度,速度,复杂性和长期(百年和千年)有效性之间的不同折衷。

Duffett-Smith,Peter。您的计算器的实用天文学。第3版。剑桥:剑桥大学出版社,1981。ISBN 0-521-28411-2。

尽管在标题中有单词Calculator;如果你有兴趣开发计算行星位置,轨道,日食等的软件,这是一个有价值的参考。更多的背景信息给出比在Meeus,这有助于那些不已经精通天文学习常常混淆的术语。给出的算法比Meeus提供的算法更简单和更不精确,但是适合于大多数实际工作。

http://stackoverflow.com/questions/2526815/moon-lunar-phase-algorithm

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:python – 月/月相位算法