Астрофізика · Математика
📅 Березень 2026 ⏱ ≈ 11 хв читання 🎯 Середньо

Орбітальна механіка та закони Кеплера: від еліпса до рівняння аномалії

Три закони Кеплера дозволяють обчислити точне положення будь-якої планети у будь-який момент часу — без чисельного інтегрування. Ключ: трансцендентне рівняння Кеплера, яке вирішується кількома ітераціями методу Ньютона.

1. Три закони Кеплера

Йоганн Кеплер (1609–1619) вивів свої закони з спостережень Тихо Браге — і вони виявилися точними задовго до того, як Ньютон пояснив їх через закон тяжіння.

Закон I
Орбіта — еліпс

Кожна планета рухається по еліпсу, в одному з фокусів якого знаходиться Сонце.

Закон II
Рівні площі

Радіус-вектор планети замітає рівні площі за рівні проміжки часу.

Закон III
Гармонічний

Квадрат орбітального періоду пропорційний кубу великої напівосі: T² ∝ a³.

Разом ці закони описують кеплерівський рух — ідеальну дві-тільну задачу, де масою людини нехтуємо, а Сонце нерухоме. Реальний Сонячний рух відхиляється від цього через взаємні тяжіння планет — саме тоді потрібні N-тіла.

2. Геометрія еліпса

Еліпс визначається великою напівосю a та ексцентриситетом e ∈ [0, 1):

b = a · √(1 − e²) ← мала напівось
c = a · e ← відстань центр → фокус
r_min = a(1 − e) ← перигелій (найближча до Сонця точка)
r_max = a(1 + e) ← афелій (найдальша точка)

У фокусній системі координат (Сонце у лівому фокусі) положення точки на еліпсі описується через справжню аномалію ν (кут відносно перигелію):

r = a(1 − e²) / (1 + e·cos(ν)) ← полярне рівняння еліпса

3. Перший закон — еліптична орбіта

Орбіту повністю описують 6 орбітальних елементів Кеплера. Для 2D-симуляції Сонячної системи достатньо двох:

Для 3D потрібні ще нахил i, довгота висхідного вузла Ω, аргумент перицентру ω та середня аномалія у епох M₀. NASA Horizons публікує всі 6 елементів для кожної планети.

Кругова орбіта — окремий випадок при e = 0. Земля: e ≈ 0.0167 (майже коло). Марс: e ≈ 0.093 (помітний еліпс). Комета Галлея: e ≈ 0.967 (дуже витягнута).

4. Другий закон — рівні площі та збереження моменту

Другий закон Кеплера — це збереження кутового моменту:

L = m · r × v = const

dA/dt = L / (2m) = const ← секторна швидкість — константа

Наслідок: у перигелії планета рухається найшвидше, в афелії — найповільніше. Кутова швидкість ν̇ змінюється з відстанню:

ν̇ = √(μ · a(1−e²)) / r²

μ = G·M — гравітаційний параметр Сонця
У а.о./рік²: μ = 4π² (при a в а.о., T в роках)

Це означає, що ми не можемо просто лінійно змінювати ν за часом — нам потрібна фізична прив'язка через рівняння Кеплера.

5. Третій закон — гармонічний

Ньютон вивів точну форму через закон тяжіння:

T² = (4π² / μ) · a³

У системі а.о.–рік: T [роки] = a^(3/2) [а.о.]

Земля: a = 1 а.о. → T = 1 рік ✓
Марс: a = 1.524 → T = 1.524^1.5 ≈ 1.88 рр ✓
Юпітер: a = 5.203 → T = 5.203^1.5 ≈ 11.86 рр ✓

Третій закон дозволяє обчислити кутову швидкість (середній рух) n:

n = 2π / T = 2π · a^(-3/2) [рад/рік]

6. Рівняння Кеплера та аномалії

Щоб знайти де знаходиться планета у момент часу t, потрібно пов'язати час із кутом. Введемо три аномалії:

Зв'язок M і E — трансцендентне рівняння Кеплера:

M = E − e · sin(E) ← Рівняння Кеплера (1619)

Це рівняння не можна вирішити аналітично для E. Використовують ітерацію Ньютона:

E₀ = M (початкове наближення)
Eₙ₊₁ = Eₙ − (Eₙ − e·sin(Eₙ) − M) / (1 − e·cos(Eₙ))

Сходиться за 3–5 ітерацій для всіх планет Сонячної системи

Маючи E, обчислюємо справжню аномалію ν та декартові координати на орбіті:

x_orb = a · (cos(E) − e)
y_orb = a · √(1−e²) · sin(E)

tan(ν/2) = √((1+e)/(1−e)) · tan(E/2)

r = a · (1 − e · cos(E)) ← відстань до Сонця

7. JavaScript реалізація

/** Вирішує рівняння Кеплера методом Ньютона */
function solveKepler(M, e, tol = 1e-9) {
  M = M % (2 * Math.PI); // Нормалізація до [0, 2π]
  let E = M;
  for (let i = 0; i < 50; i++) {
    const dE = (E - e * Math.sin(E) - M) / (1 - e * Math.cos(E));
    E -= dE;
    if (Math.abs(dE) < tol) break;
  }
  return E;
}

/** Повертає {x, y} у площині орбіти (а.о.) */
function orbitalPos(a, e, M) {
  const E = solveKepler(M, e);
  return {
    x: a * (Math.cos(E) - e),
    y: a * Math.sqrt(1 - e * e) * Math.sin(E)
  };
}

/** Планети: a (а.о.), e, period (роки), color */
const PLANETS = [
  { name: 'Mercury', a: 0.387, e: 0.206, T: 0.241, color: '#a8a8a8' },
  { name: 'Venus',   a: 0.723, e: 0.007, T: 0.615, color: '#f5c842' },
  { name: 'Earth',   a: 1.000, e: 0.017, T: 1.000, color: '#4fa3e0' },
  { name: 'Mars',    a: 1.524, e: 0.093, T: 1.881, color: '#d95030' },
  { name: 'Jupiter', a: 5.203, e: 0.049, T: 11.86, color: '#e8b87d' },
  { name: 'Saturn',  a: 9.537, e: 0.057, T: 29.46, color: '#c8b560' },
];

// Анімація: t у роках
let t = 0;
function animate() {
  clearCanvas();
  drawSun();
  for (const p of PLANETS) {
    const n = 2 * Math.PI / p.T;         // середній рух [рад/рік]
    const M = n * t;                      // середня аномалія
    const { x, y } = orbitalPos(p.a, p.e, M);
    drawPlanet(x, y, p.color, p.name);
  }
  t += 0.005; // 1 кадр = ~1.8 дня
  requestAnimationFrame(animate);
}

Обчислення точного положення планети займає ~10 нс. Навіть усі 8 планет + Плутон + 100 астероїдів розраховуються за <5 мкс — набагато дешевше за N-тіла.

8. Реальні дані планет

Планета a (а.о.) e T (роки) Перигелій (а.о.) Афелій (а.о.)
Меркурій0.3870.2060.2410.3070.467
Венера0.7230.0070.6150.7180.728
Земля1.0000.0171.0000.9831.017
Марс1.5240.0931.8811.3811.666
Юпітер5.2030.04911.864.9505.455
Сатурн9.5370.05729.469.00110.07
Уран19.190.04684.0118.2920.09
Нептун30.070.010164.829.7730.37

Дані відповідають середнім орбітальним елементам J2000 (NASA JPL). Реальні елементи повільно змінюються через прецесію (спорадичні збурення від інших планет).

Факт: Венера має майже ідеально кругову орбіту (e = 0.007), тоді як Меркурій — найбільший ексцентриситет серед планет (e = 0.206). Саме через це Ейнштейн міг перевірити ОТВ: прецесія перигелію Меркурія 43"/рік не пояснювалась класичною механікою.

9. Кеплер vs N-тіла: коли що обирати

Аналітичний підхід Кеплера та чисельний метод N-тіл вирішують різні задачі:

КритерійКеплер (аналіт.)N-тіло (Leapfrog)
Тіл Одне тіло навколо центру Будь-яка кількість
Точність Машинна (±eps) Залежить від dt
Швидкість O(1) на планету O(N²) або O(N log N)
Взаємодії Лише з центр. тілом Всі попарно
Приклад Положення Марсу через 1000 р. Зіткнення галактик, тіло+місяць

Для Сонячної системи повнофункціональна симуляція поєднує обидва: Кеплер для фонових планет (не впливають між собою), N-тіло для випадків, де потрібні збурення (астероїди поблизу Юпітера, резонанси в поясі Койпера).

🪐 Симуляція Сонячної системи

Інтерактивна Сонячна система з реальними орбітальними елементами планет та Three.js.

Відкрити симуляцію →