Законы Кеплера численно

Три закона Кеплера, выведенные не из формул, а из симуляции тяготения.

Третий закон Кеплера: квадрат периода обращения пропорционален кубу большой полуоси орбиты (T² ∝ a³); в астрономических единицах коэффициент равен единице.

Три закона из одной силы

Кеплер вывел свои законы из наблюдений Тихо Браге, а Ньютон показал, что все три следуют из закона тяготения 1/r². В вычислительной физике мы можем пройти этот путь сами: заложить только силу притяжения и увидеть, как законы Кеплера возникают из симуляции, без всякой подсказки.

  • Первый закон: орбита — эллипс, в одном из фокусов которого Солнце.
  • Второй закон: радиус-вектор заметает равные площади за равные времена (планета быстрее у Солнца).
  • Третий закон: T² ∝ a³ — связь периода и размера орбиты.

Проверяем третий закон

Запустим планеты на круговых орбитах разного радиуса, измерим период каждой и посчитаем отношение T²/a³. Если третий закон верен, оно должно быть одинаковым (и равным 1 в наших единицах):

import math
GM = 4*math.pi**2
def orbital_period(r):
    x, y = r, 0.0
    v = math.sqrt(GM/r)
    vx, vy = 0.0, v
    dt = 0.0005
    def acc(x,y):
        rr = math.hypot(x,y); a=-GM/rr**3; return a*x, a*y
    ax, ay = acc(x,y)
    t = 0.0; prev_y = y
    while True:
        x += vx*dt + 0.5*ax*dt*dt
        y += vy*dt + 0.5*ay*dt*dt
        ax2, ay2 = acc(x,y)
        vx += 0.5*(ax+ax2)*dt; vy += 0.5*(ay+ay2)*dt
        ax, ay = ax2, ay2
        t += dt
        if prev_y < 0 <= y and t > 0.1:
            return t
        prev_y = y
print("радиус a (а.е.)   период T (год)   T²/a³")
for r in (0.4, 1.0, 1.5, 5.2):
    T = orbital_period(r)
    print(f"   {r:4.1f}            {T:6.3f}        {T*T/r**3:.3f}")
print("T²/a³ = 1 для всех орбит — третий закон Кеплера.")

Вывод:

радиус a (а.е.)   период T (год)   T²/a³
    0.4             0.253        1.000
    1.0             1.000        1.001
    1.5             1.837        1.000
    5.2            11.858        1.000
T²/a³ = 1 для всех орбит — третий закон Кеплера.

Отношение T²/a³ вышло равным единице для всех четырёх орбит — третий закон Кеплера родился из симуляции сам собой. Более того, числа совпадают с реальностью: Меркурий (0.4 а.е.) обращается за 0.24 года, Юпитер (5.2 а.е.) — почти за 12 лет. Мы воспроизвели Солнечную систему из одной строчки про силу.

Второй закон и площади

Второй закон — следствие сохранения момента импульса L = m·(x·vy - y·vx). У эллиптической орбиты вблизи Солнца (перигелий) планета движется быстро, вдали (афелий) — медленно, но заметаемая площадь в единицу времени постоянна. В симуляции эллипса величина L сохраняется так же строго, как энергия, — это ещё один обязательный тест.

Как работает под капотом

Третий закон легко получить для круга: центростремительное ускорение v²/r равно гравитационному GM/r², откуда v²=GM/r. Период T=2πr/v, и подстановка даёт T²=(4π²/GM)·r³ — ровно T² ∝ r³. Для эллипса вместо r стоит большая полуось a, а вывод требует интегрирования, но симуляция получает результат напрямую, просто измеряя период. В этом красота вычислительного подхода: закон, на доказательство которого Ньютону потребовалась новая математика, мы подтверждаем измерением в коде.

Частые ошибки

  • Определять период по числу шагов, а не по возврату в исходную точку. Период надо измерять по пересечению старта.
  • Путать радиус круга и большую полуось эллипса. В третьем законе фигурирует именно полуось a.
  • Не проверять момент импульса. Его дрейф — признак ошибки в симуляции эллиптической орбиты.

Итоги

  • Три закона Кеплера следуют из одной силы 1/r² и видны в симуляции.
  • Третий закон: T²/a³ одинаково для всех орбит (=1 в единицах а.е./год).
  • Второй закон — следствие сохранения момента импульса.
  • Симуляция воспроизводит реальные периоды планет Солнечной системы.
Проверьте себя
1. Что утверждает третий закон Кеплера?
AОрбита — окружность
BКвадрат периода пропорционален кубу большой полуоси (T² ∝ a³)
CВсе планеты движутся с одной скоростью
DПериод не зависит от орбиты
2. Следствием сохранения какой величины является второй закон Кеплера?
AЭнергии
BМомента импульса
CМассы
DЗаряда
3. Как правильно измерить период орбиты в симуляции?
AПо заданному числу шагов
BПо возврату планеты в исходную точку (пересечению старта)
CПо максимальной скорости
DПо энергии