CEPII
@CEPII
Житель убежища 101

Как рассчитать период парада планет?

Существует ли какая нибудь формула? В какую сторону копать, если даны периоды обращения планет?
  • Вопрос задан
  • 1306 просмотров
Решения вопроса 1
longclaps
@longclaps
Видимым парадом планет называется планетная конфигурация, когда пять ярких планет Солнечной системы (Меркурий, Венера, Марс, Юпитер и Сатурн) в своём движении по небосводу подходят друг к другу на близкое расстояние и становятся видны в одно время в небольшом секторе (10 — 40 градусов) неба.

Допустим, мы знаем дату, когда солнце и 5 планет были точно на одной линии, прикинем, когда они окажутся снова в одном секторе, скажем 30°:
from itertools import count

n = 12  # число секторов, мы же взяли сектор в 30°
year = 365.256363004
periods = (
    87.969,  # Меркурий
    224.698,  # Венера
    686.98,  # Марс
    4332.589,  # Юпитер
    10759.22  # Сатурн
)
speeds = [n / p for p in periods]  # угловые скорости планет, сектор/день
for t in count(40):  # стартанём не сразу, а погодя, чтобы планеты разошлись,
    # за 40 дней меркурий убежит почти на 180°
    mercury, *others = (int(t * speed) % n for speed in speeds)
    if all(planet == mercury for planet in others):
        y = int(t / year)
        print(f'{y} лет {round(t - y * year)} дней')
        break
Выхлоп - 377 лет 212 дней.
Это очень грубая прикидка, ведь я считал парадом положение планет а одном секторе с центром в солнце, а надо бы - в одном секторе с центром в точке наблюдения, те на Земле. Но честный рассчет гораздо сложнее.

UPDATE
Парадом планет называется также конфигурация планет Солнечной системы, когда планеты, в том числе и невидимые невооружённым глазом, «выстраиваются» по одну сторону от Солнца в небольшом секторе. В такой конфигурации Меркурий и Венера могут быть невидимы с Земли, так как находятся в нижнем соединении с Солнцем, но зато внешние планеты видимы, практически, в одном направлении. Ближайший прошедший такой парад был 10 марта 1982 года, а следующий будет в 2161 году.

Ага, так лучше.
Вот более аккуратный код, легко видеть, что никакого периода нет, и нетрудно понять почему: периоды обращения планет не кратны хоть какому-то протяженному времени.
Ну и зазора в (2161 - 1982) лет не наблюдается - ведь я стартовал из воображаемого момента в прошлом, когда планеты были строго на одной линии - а такого наверняка никогда не было.
n = 360.  # просто 360°
occupied = 45.  # размер сектора, в который должны впихнуться планеты
year = 365.256363004
periods = (
    87.969,  # Меркурий
    224.698,  # Венера
    year,  # Земля
    686.98,  # Марс
    4332.589,  # Юпитер
    10759.22,  # Сатурн
    60190.03,  # Нептун
    # 90553.02  # Плутон # всё равно он не планета
)
speeds = [n / p for p in periods]  # угловые скорости планет
t = t0 = 0  # текущая дата, дата 'нулевого' парада
for _ in range(32):  # число выводимых парадов
    while True:
        t += 1
        if t - t0 < 43:
            continue  # пусть планеты разойдутся, за 43 дня меркурий убежит на 180°


        def width():
            planets = sorted((t * speed) % n for speed in speeds)
            a, max_free_angle = planets[-1] - n, 0.
            for b in planets:
                if max_free_angle < b - a:
                    max_free_angle = b - a
                a = b
            return 360. - max_free_angle


        if width() < occupied:  # подкараулим день, когда сектор будет минимальным
            u = v = width()
            while u >= v:
                t += 1
                u, v = v, width()
            print(f'через {round((t - t0 - 1) / year):>4} лет '
                  f'планеты соберутся в секторе {round(u)}°')
            t0 = t - 1
            break
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы