Что нужно учитывать, чтобы точно рассчитать фазу луны?

Хотя этот вопрос , по-видимому, касается темы, он не говорит о соответствующих факторах, связанных с фазой луны.

Я нашел два разных алгоритма. этот и еще этот . Я меньше, чем новичок, меньше, чем профан, в астрономии - но я не в программировании, но я хотел бы пропустить тестирование алгоритма на пару лет, прежде чем выбрать любой из них.

После безуспешного поиска сравнения различных алгоритмов я хотел бы знать, какой из этих алгоритмов менее подвержен ошибкам, или есть ли кто-то, менее подверженный ошибкам, для них (я знаю, что нет ничего лучше идеального алгоритма, но Я хотел бы иметь хороший) или иметь соответствующие способы оценки алгоритма.

Итак, мой вопрос звучит так:

Имеют ли эти методы небольшую погрешность, достаточную для точного расчета фазы луны?

Или...

Можете ли вы дать мне наиболее точный алгоритм — или концепции / лежащие в основе теории, которые я должен знать — астрономы могли бы использовать на сегодняшний день для расчета фазы Луны?

Нелегко точно рассчитать фазу луны. Два алгоритма, которые вы связали, довольно грубы. На первый взгляд, они могут быть точными для 4 основных фаз с точностью до дня или около того.
Чтобы получить те же результаты, что и NASA/USNO, используйте библиотеки CSPICE: naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/index.html В документации есть много хороших примеров и много плохих на github . .com/barrycarter/bcapps/blob/master/ASTRO (я использовал их, чтобы ответить на несколько вопросов на различных биржах стека).

Ответы (3)

Фазы Луны нелегко рассчитать точно. К счастью, 4 основные фазы (новолуние, первая четверть, полнолуние, последняя четверть) немного более стабильны, чем промежуточные фазы. Хорошие алгоритмы главной фазы используют около дюжины вычислений синуса для новолуния или полнолуния и такое же количество для первой или последней четверти. Те два алгоритма, которые вы связали, используют очень простые приближения, поэтому их результаты довольно грубы.

Период фазового цикла Луны ( синодический месяц ) стабилен в долгосрочной перспективе, но значительно дрейфует в краткосрочной перспективе. Таким образом, алгоритмы, подобные приведенным в ваших ссылках, можно использовать в течение довольно длительного промежутка времени, и они могут быть полезными первыми приближениями для улучшения алгоритмов, но сами по себе они дают точные результаты только случайно. ;)

Гуру астрономических расчетов тел в Солнечной системе — Жан Меус , поэтому, если вам нужны качественные алгоритмы, убедитесь, что они ссылаются на Меусса. :)

Для действительно точных эфемерид, особенно если вам нужно охватить большой промежуток времени, рассмотрите возможность использования работы JPL. Вы можете получить доступ к их эфемеридам на веб-странице Horizons ; также предоставляются telnet и интерфейс на основе электронной почты.

Если вы хотите выполнять точные астрономические расчеты (например, для предсказания затмения), вам необходимо узнать о различных системах времени, используемых в астрономии, в частности, о земном времени и его предшественнике, эфемеридном времени.

Из вашего профиля SO я вижу, что вы знакомы с Python. Хороший автономный код фазы луны на Python нелегко найти в Интернете, но в конце концов я нашел py-moon-phase от keturn , который является портом Python основного кода довольно древнего Moontool Джона Уокера , который использует алгоритмы от Meeus и также от Питера Даффета-Смита. На самом деле я не тестировал код Джона Уокера/кетурна, но он выглядит довольно хорошо (хотя он использует UTC вместо эфемеридного или земного времени). У меня есть очень похожий (но довольно беспорядочный) код C, который обычно точен до полминуты или лучше в течение 20-го века.

Однако есть пакет под названием PyEphem , который может выполнять всевозможные астрономические вычисления. Джеймс К. отмечает в комментариях, что PyEphem теперь не рекомендуется для новых проектов. Вместо этого разработчики PyEphem рекомендуют  Skyfield  . Astropy также может делать многое из того, что делает PyEphem, и многое другое.

Спасибо! Кажется, у меня много кода для тестирования. Позвольте мне проверить их (пока +1)...
Отмечая, что PyEphem теперь не рекомендуется для новых проектов. Вместо этого разработчики PyEphem рекомендуют Skyfield . Astropy также может делать многое из того, что делает PyEphem, и многое другое.
Спасибо за это обновление, @James.

Разделите год на 19 и умножьте остаток на 11. Добавьте количество полных месяцев с 1 марта. Добавьте день месяца. Уменьшите этот мод на 30. Это приблизительное (+/- 1) количество дней с момента последнего новолуния.

Для января и февраля используйте данные предыдущего года.

Привет, Джек, спасибо за этот вклад. Вопрос касается точности различных алгоритмов, и, как показывают другие ответы, в подробных расчетах используется несколько триггерных функций для учета эксцентриситета, прецессии и множества других факторов. ОП запросил «самый точный алгоритм [...] для расчета фазы луны?»

Процедура определения фазы Луны изложена в пояснительном приложении к астрономическому альманаху , University Science Books, 3-е изд., с. 507. Ежегодный «Астрономический альманах» сводит фазы с точностью до минуты UT. Фаза возникает, когда превышение кажущейся геоцентрической эклиптической долготы Луны над кажущейся геоцентрической эклиптической долготой Солнца составляет 0, 90, 180 или 270 градусов. В этом разделе говорится, что «не существует простой формулы прогнозирования, с которой можно было бы провести сравнение». Но это утверждение применимо к желаемой точности в 1 минуту. Если ваша потребность в точности слабее, возможно, существует полезная формула, я не знаю.

Если вам нужно не более чем на несколько сотен лет, существует широкий выбор программного обеспечения. Но используемые выражения могут быстро ухудшиться за пределами предполагаемого диапазона достоверности. Поэтому, если вы изучаете далекое прошлое или будущее, обязательно используйте программное обеспечение, предназначенное для этой цели.