python - 月亮/月相算法

标签 python c algorithm calendar astronomy

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

谷歌搜索告诉我答案在某本天文学书籍中,但我真的不想买一整本书,因为我只需要一页。

更新:

我应该更好地修饰我关于谷歌搜索的陈述。我确实找到了仅在某些时间段内有效的解决方案(例如 1900 年代);以及基于三角的解决方案,其计算成本比我想要的要高。

S Lott 在他的 Python 书中有几种算法可以计算给定年份的复活节,大多数算法不到 10 行代码,有些可以在公历的所有日子里工作。寻找三月的满月是寻找复活节的关键部分,所以我认为应该有一种算法不需要三角,并且适用于公历中的所有日期。

最佳答案

前段时间我将一些代码移植到 Python 中。我打算只是链接到它,但事实证明它同时从网上掉下来了,所以我不得不把它擦掉并重新上传。见 moon.py源自 John Walker's moontool .

我找不到关于这两个时间跨度准确的引用,但似乎作者非常严谨。这意味着是的,它确实使用了 trig,但我无法想象你会使用它来做什么,这会使其在计算上令人望而却步。 Python 函数调用开销可能超过了三角操作的成本。计算机的计算速度非常快。

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

米厄斯,让。天文算法。里士满:Willmann-Bell,1991 年。ISBN 0-943396-35-2。

必备;如果你只买一本书,请确保是这本书。算法以数学方式呈现,而不是作为计算机程序,但实现本书中许多算法的源代码可以从 QuickBasic、Turbo Pascal 或 C 中的出版商单独订购。Meeus 提供了许多对调试至关重要的计算示例您的代码,并且经常提出几种算法,它们在准确性、速度、复杂性和长期(世纪和千年)有效性之间进行了不同的权衡。

达菲特-史密斯,彼得。实用天文学与您的计算器。第三版。剑桥:剑桥大学出版社,1981 年。ISBN 0-521-28411-2。

尽管标题中有计算器一词;如果您有兴趣开发计算行星位置、轨道、 eclipse 等的软件,这是一个有值(value)的引用。提供了比 Meeus 更多的背景信息,这有助于那些尚未精通天文学的人学习经常令人困惑的术语。给出的算法比 Meeus 提供的算法更简单、更不准确,但适用于大多数实际工作。

关于python - 月亮/月相算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2526815/

相关文章:

python - 在 PIL 中打开图像文件时出错

python - 门禁系统 - 列表检查

c - undefined symbol : .主要

c - 在 scanf 中多次使用相同的整数

algorithm - 模拟退火 - 传感器网络中的传感器定位

java - 以逆字母顺序打印树中以元音开头的元素

java - 在 Java 中获取集合的幂集

python - 从另一个文件访问 PyQt Gui 元素

Python - Ubuntu 服务器

c - 使用 fscanf 从文件中读取字符串后读取整数