Натальная карта

Астрономические основы

Юлианский день, ΔT, звёздное время, координаты, прецессия, нутация, эфемериды, лунные узлы.

73 мин чтения 2 054 строк · docs/02-astronomiya/00-astronomicheskie-osnovy.md
Содержание

Полный технический справочник. Все формулы приведены в рабочем виде с точными численными константами. Терминология, названия теорий, имена переменных в коде и обозначения оставлены на английском/латинице в общепринятой форме.

Основные источники: Jean Meeus, Astronomical Algorithms, 2nd ed. (1998); Swiss Ephemeris documentation и исходный код (sweph.h, swemmoon.c, swephlib.c); NASA/GSFC Espenak–Meeus ΔT polynomials; IERS Conventions; JPL DE4xx documentation; VSOP87 (Bretagnon & Francou); ELP-2000/82 (Chapront).


Содержание

  1. Системы времени
  2. Звёздное время
  3. Системы координат
  4. Прецессия и айанамша
  5. Положения планет
  6. Лунные узлы, Лилит, Приап

1. СИСТЕМЫ ВРЕМЕНИ

1.1. Julian Day Number (JD)

Julian Day — непрерывный счёт дней от полудня 1 января 4713 г. до н. э. по юлианскому проклептическому календарю (JD 0.0 = −4712-01-01 12:00 UT). Ключевая особенность: сутки начинаются в полдень, а не в полночь. Именно поэтому JD для полуночи всегда оканчивается на .5.

Алгоритм Meeus (глава 7) — основной рабочий

Дано: год Y, месяц M (1–12), день D с дробной частью.

если M <= 2:
    Y = Y - 1
    M = M + 12

# Григорианский календарь (дата >= 1582-10-15):
A = floor(Y / 100)
B = 2 - A + floor(A / 4)

# Юлианский календарь (дата <= 1582-10-04):
B = 0

JD = floor(365.25 * (Y + 4716)) + floor(30.6001 * (M + 1)) + D + B - 1524.5

Константа 30.6001 (а не 30.6) — намеренная защита от ошибок округления в реализациях с плавающей точкой: она гарантирует, что floor() даст верный результат для M+1 = 4, 5, ..., 14.

Дробная часть дня из времени суток:

Dfrac=Dint+h24+min1440+s86400D_{frac} = D_{int} + \frac{h}{24} + \frac{min}{1440} + \frac{s}{86400}

Целочисленный алгоритм (Fliegel–Van Flandern)

Только для целого JDN, деление — целочисленное с усечением к нулю. Григорианский календарь:

JDN = floor(1461*(Y + 4800 + floor((M-14)/12))/4)
    + floor(367*(M - 2 - 12*floor((M-14)/12))/12)
    - floor(3*floor((Y + 4900 + floor((M-14)/12))/100)/4)
    + D - 32075

Юлианский календарь (для Y >= -4712):

JDN = 367*Y - floor(7*(Y + 5001 + floor((M-9)/7))/4)
    + floor(275*M/9) + D + 1729777

Переход к JD с временем суток:

JD=JDN+h−1224+min1440+s86400JD = JDN + \frac{h - 12}{24} + \frac{min}{1440} + \frac{s}{86400}

Обратное преобразование (JD → календарная дата)

JD = JD + 0.5
Z = floor(JD)          # целая часть
F = JD - Z             # дробная часть (доля суток)

если Z < 2299161:
    A = Z
иначе:
    alpha = floor((Z - 1867216.25) / 36524.25)
    A = Z + 1 + alpha - floor(alpha / 4)

B = A + 1524
C = floor((B - 122.1) / 365.25)
D = floor(365.25 * C)
E = floor((B - D) / 30.6001)

day   = B - D - floor(30.6001 * E) + F
month = E - 1     если E < 14
        E - 13    если E = 14 или 15
year  = C - 4716  если month > 2
        C - 4715  если month = 1 или 2

День недели: W = (floor(JD + 1.5)) mod 7, где 0 = воскресенье.

Производные шкалы

ВеличинаОпределениеЭпоха нуля
JDJulian Date−4712-01-01 12:00
MJDMJD = JD − 2400000.51858-11-17 00:00
Truncated JDTJD = JD − 2440000.51968-05-24 00:00
Dublin JDDJD = JD − 2415020.01899-12-31 12:00
CNES JDJD − 2433282.51950-01-01 00:00
J2000.0JD 2451545.02000-01-01 12:00 TT
B1950.0JD 2433282.423459051949-12-31 22:09
J1900.0JD 2415020.01899-12-31 12:00
B1900.0JD 2415020.313521900-01-00.813

1.2. Юлианские столетия T

Центральная переменная почти всех полиномов:

T=JD−2451545.036525T = \frac{JD - 2451545.0}{36525}

36525 = число суток в юлианском столетии (100 × 365.25). Для T всегда используется TT (не UT), за исключением формул звёздного времени, где аргументом является UT1.

Иногда встречается t = T/10 (юлианские тысячелетия) — так устроены ряды VSOP87. Для очень длинных интервалов Laskar использует U = T/100 (десятки тысяч лет).

1.3. Шкалы времени: UT, UT1, UTC, TAI, TT, TDB

ШкалаПолное имяПриродаСвязь
UT0Universal Time 0наблюдаемое вращение Земли, без поправки за движение полюса—
UT1Universal Time 1UT0 + поправка за движение полюса; истинный угол поворота Землинеравномерна
UTCCoordinated Universal Timeатомная шкала со скачками (leap seconds), удерживается в пределах ±0.9 с от UT1UTC = TAI − (leap seconds)
TAIInternational Atomic Timeатомная, равномернаяTAI = UTC + LS
TTTerrestrial Time (ранее TDT, ещё ранее ET)равномерная, аргумент эфемеридTT = TAI + 32.184 s
TDBBarycentric Dynamical TimeTT с релятивистской поправкой за движение Земли по орбитеTDB ≈ TT + 0.001657 sin g + ...
TCG / TCBGeocentric/Barycentric Coordinate Timeкоординатные шкалы СТО/ОТОлинейно связаны с TT/TDB

Ключевое соотношение для астрологии:

TT=UT+ΔT\boxed{TT = UT + \Delta T}

Практическое правило:

  • Часы, календарь, местное время рождения → UT (фактически UTC/UT1).
  • Положения планет, Луны, узлов → вычисляются на момент TT.
  • Куспиды домов, ASC/MC, звёздное время → вычисляются от UT1.

Это принципиально: для одного и того же события в эфемериды подаётся JD_TT = JD_UT + ΔT/86400, а в формулу GMST — JD_UT без поправки.

Разница TDB − TT периодическая, амплитуда ~1.7 мс:

TDB−TT≈0.001657sin⁡g+0.000022sin⁡(L−LJ) [с]TDB - TT \approx 0.001657 \sin g + 0.000022 \sin(L - L_J) \ \text{[с]}

где g = 357.53° + 0.9856003°·(JD − 2451545.0) — средняя аномалия Земли. Для натальной карты этой разницей можно пренебречь (эффект < 0.00001″).

1.4. ΔT — разность между TT и UT

ΔT отражает неравномерность вращения Земли: приливное торможение (~+2.3 мс/столетие в длину суток), послеледниковое поднятие коры, обмен моментом импульса с атмосферой и ядром. ΔT нельзя вычислить теоретически — он определяется из наблюдений (в прошлом — из записей затмений) и для будущего только экстраполируется.

Характерные значения:

ГодΔT (с)
−500≈ 17190
0≈ 10580
1000≈ 1570
1600≈ 120
1700≈ 9
1800≈ 13.7
1900≈ −2.8
1950≈ 29.1
2000≈ 63.8
2020≈ 69.4
2026≈ 69–70

Для дат XX–XXI вв. ΔT ≈ 60–70 с — это сдвиг Луны примерно на 30–36″ (Луна движется ~0.55″/с), что уже заметно, и сдвиг MC на ~0.3′. Игнорировать ΔT нельзя.

Полиномы Espenak–Meeus (NASA/GSFC)

Десятичный год во всех выражениях:

y=year+month−0.512y = year + \frac{month - 0.5}{12}

ДиапазонПеременнаяПолином ΔT (секунды)
−1999 … −500u = (y−1820)/100ΔT = -20 + 32u²
−500 … +500u = y/100ΔT = 10583.6 − 1014.41u + 33.78311u² − 5.952053u³ − 0.1798452u⁴ + 0.022174192u⁵ + 0.0090316521u⁶
+500 … +1600u = (y−1000)/100ΔT = 1574.2 − 556.01u + 71.23472u² + 0.319781u³ − 0.8503463u⁴ − 0.005050998u⁵ + 0.0083572073u⁶
1600 … 1700t = y − 1600ΔT = 120 − 0.9808t − 0.01532t² + t³/7129
1700 … 1800t = y − 1700ΔT = 8.83 + 0.1603t − 0.0059285t² + 0.00013336t³ − t⁴/1174000
1800 … 1860t = y − 1800ΔT = 13.72 − 0.332447t + 0.0068612t² + 0.0041116t³ − 0.00037436t⁴ + 0.0000121272t⁵ − 0.0000001699t⁶ + 0.000000000875t⁷
1860 … 1900t = y − 1860ΔT = 7.62 + 0.5737t − 0.251754t² + 0.01680668t³ − 0.0004473624t⁴ + t⁵/233174
1900 … 1920t = y − 1900ΔT = −2.79 + 1.494119t − 0.0598939t² + 0.0061966t³ − 0.000197t⁴
1920 … 1941t = y − 1920ΔT = 21.20 + 0.84493t − 0.076100t² + 0.0020936t³
1941 … 1961t = y − 1950ΔT = 29.07 + 0.407t − t²/233 + t³/2547
1961 … 1986t = y − 1975ΔT = 45.45 + 1.067t − t²/260 − t³/718
1986 … 2005t = y − 2000ΔT = 63.86 + 0.3345t − 0.060374t² + 0.0017275t³ + 0.000651814t⁴ + 0.00002373599t⁵
2005 … 2050t = y − 2000ΔT = 62.92 + 0.32217t + 0.005589t²
2050 … 2150—ΔT = −20 + 32((y−1820)/100)² − 0.5628(2150 − y)
2150 … 3000u = (y−1820)/100ΔT = −20 + 32u²

Поправка за вековое ускорение Луны. Полиномы выведены для значения n_dot = −26″/cy². Если используется эфемерида с другим значением (например, ELP-2000/82 с −23.8946″/cy²), к ΔT для дат до 1955 г. добавляется поправка; NASA даёт её в форме ΔT_corr = ΔT + 0.000012932·(y − 1955)²·(n_dot + 26)/(−26). Для большинства астрологических задач поправка несущественна (< 1 с для XX в.), но для древних дат достигает сотен секунд.

Реальные значения 1955–настоящее следует брать не из полинома, а из таблиц IERS (Bulletin A/B) — они дают ΔT с точностью до миллисекунд. Swiss Ephemeris содержит встроенную таблицу и переключается на полиномы только вне её диапазона.

def delta_t(year, month=7):
    y = year + (month - 0.5) / 12.0
    if y < -500:
        u = (y - 1820) / 100.0
        return -20 + 32*u*u
    if y < 500:
        u = y / 100.0
        return (10583.6 - 1014.41*u + 33.78311*u**2 - 5.952053*u**3
                - 0.1798452*u**4 + 0.022174192*u**5 + 0.0090316521*u**6)
    if y < 1600:
        u = (y - 1000) / 100.0
        return (1574.2 - 556.01*u + 71.23472*u**2 + 0.319781*u**3
                - 0.8503463*u**4 - 0.005050998*u**5 + 0.0083572073*u**6)
    if y < 1700:
        t = y - 1600
        return 120 - 0.9808*t - 0.01532*t**2 + t**3/7129.0
    if y < 1800:
        t = y - 1700
        return 8.83 + 0.1603*t - 0.0059285*t**2 + 0.00013336*t**3 - t**4/1174000.0
    if y < 1860:
        t = y - 1800
        return (13.72 - 0.332447*t + 0.0068612*t**2 + 0.0041116*t**3
                - 0.00037436*t**4 + 0.0000121272*t**5
                - 0.0000001699*t**6 + 0.000000000875*t**7)
    if y < 1900:
        t = y - 1860
        return (7.62 + 0.5737*t - 0.251754*t**2 + 0.01680668*t**3
                - 0.0004473624*t**4 + t**5/233174.0)
    if y < 1920:
        t = y - 1900
        return -2.79 + 1.494119*t - 0.0598939*t**2 + 0.0061966*t**3 - 0.000197*t**4
    if y < 1941:
        t = y - 1920
        return 21.20 + 0.84493*t - 0.076100*t**2 + 0.0020936*t**3
    if y < 1961:
        t = y - 1950
        return 29.07 + 0.407*t - t**2/233.0 + t**3/2547.0
    if y < 1986:
        t = y - 1975
        return 45.45 + 1.067*t - t**2/260.0 - t**3/718.0
    if y < 2005:
        t = y - 2000
        return (63.86 + 0.3345*t - 0.060374*t**2 + 0.0017275*t**3
                + 0.000651814*t**4 + 0.00002373599*t**5)
    if y < 2050:
        t = y - 2000
        return 62.92 + 0.32217*t + 0.005589*t**2
    if y < 2150:
        return -20 + 32*((y - 1820)/100.0)**2 - 0.5628*(2150 - y)
    u = (y - 1820) / 100.0
    return -20 + 32*u*u

Leap seconds (високосные секунды)

UTC удерживается вблизи UT1 вставкой дополнительной секунды 23:59:60 (обычно 30 июня или 31 декабря). Первая — 1972-06-30. По состоянию на 2026 г. TAI − UTC = 37 s (с 2017-01-01), новых вставок с тех пор не было. Решением BIPM/CGPM (2022) leap seconds будут отменены не позднее 2035 г.

Для астрологии: разница UT1 − UTC всегда |ΔUT1| < 0.9 с, что даёт ошибку MC менее 0.004′ — этим можно пренебречь, приравняв UT ≈ UTC.

1.5. Местное время, часовые пояса, LMT

Local Mean Time (LMT) — среднее солнечное время на меридиане места. Земля поворачивается на 360° за 24 часа, следовательно:

360°24 h=15°/h⟹1°=4m,1′=4s\frac{360°}{24\text{ h}} = 15°/\text{h} \quad\Longrightarrow\quad 1° = 4^{m}, \quad 1' = 4^{s}

UT=LMT−λ15 [часы]\boxed{UT = LMT - \frac{\lambda}{15}\ \text{[часы]}}

где λ — восточная долгота положительна. Пример: Москва λ = +37.6173° → поправка = 37.6173/15 = 2.5078 h = 2h30m28s. То есть LMT Москвы опережает UT на 2 ч 30 мин 28 с.

Zone time (поясное время):

UT=Tzone−ZoneOffsetUT = T_{zone} - \text{ZoneOffset}

где ZoneOffset — смещение пояса (для UTC+3 → −3 ч при переходе к UT).

Проблема исторических часовых поясов

Это главный источник ошибок в натальных картах, превосходящий все астрономические неточности. Конкретные ловушки:

  1. DST (летнее время) — вводилось и отменялось непоследовательно. В СССР «декретное время» (+1 ч) действовало с 1930 по 1991; летнее время дополнительно с 1981. Россия в 2011–2014 жила в «вечном летнем» времени. Ребёнок, родившийся в Москве 1 июля 1985 г., имел смещение UTC+4, а не UTC+3.
  2. War Time — США (1942–1945), Великобритания (Double Summer Time 1941–1945, UTC+2 летом).
  3. Смена пояса городом — множество населённых пунктов меняли принадлежность к поясу (напр. Волгоград 2018, 2020).
  4. LMT до введения поясов — до конца XIX в. (Россия — до 1919 г.) в ходу было именно местное среднее время; для даты рождения 1880 г. нужно использовать LMT, а не пояс.
  5. Ambiguous/nonexistent times — в час «перевода стрелок назад» одно локальное время соответствует двум моментам UT; при переводе вперёд час не существует вовсе.

Практическое решение: использовать базу IANA tz database (zoneinfo, ключи вида Europe/Moscow) с полными историческими правилами, через координаты определяя зону (tzfpy, timezonefinder). Ручные таблицы (ACS Atlas, Shanks) — исторический аналог.

from datetime import datetime
from zoneinfo import ZoneInfo

# рождение: 1 июля 1985, 14:30, Москва
local = datetime(1985, 7, 1, 14, 30, tzinfo=ZoneInfo("Europe/Moscow"))
utc = local.astimezone(ZoneInfo("UTC"))
# -> 1985-07-01 10:30 UTC  (смещение +4, т.к. декретное + летнее)

2. ЗВЁЗДНОЕ ВРЕМЯ

Звёздное время — часовой угол точки весеннего равноденствия. Это ключевая величина для астрологии: от неё напрямую зависят MC, ASC и все куспиды домов. Ошибка в 1 минуте времени → ошибка MC примерно на 15′ дуги.

Звёздные сутки короче солнечных: 23h 56m 04.0905s среднего солнечного времени. Отношение:

средние звёздные суткисутки UT1=1.00273790935 (+5.9006×10−11T−5.9×10−15T2)\frac{\text{средние звёздные сутки}}{\text{сутки UT1}} = 1.00273790935\ (+5.9006\times10^{-11}T - 5.9\times10^{-15}T^2)

2.1. GMST — формула IAU 1982 (Meeus 12.4)

Наиболее употребимая в астрологическом ПО. Аргумент — JD в шкале UT1 (не TT!). Результат в градусах:

θ0=280.46061837+360.98564736629 (JDUT−2451545.0)+0.000387933 T2−T338710000\theta_0 = 280.46061837 + 360.98564736629\,(JD_{UT} - 2451545.0) + 0.000387933\,T^2 - \frac{T^3}{38710000}

где

T=JDUT−2451545.036525T = \frac{JD_{UT} - 2451545.0}{36525}

Результат приводится в диапазон [0°, 360°). Деление на 15 даёт часы.

Коэффициент 360.98564736629 = 360° × 1.00273790935 — суточное приращение звёздного времени.

Вариант для 0h UT (когда JD_UT оканчивается на .5), в секундах времени:

θ0=6h41m50s.54841+8640184s.812866 T+0s.093104 T2−6.2×10−6 T3\theta_0 = 6^h41^m50^s.54841 + 8640184^s.812866\,T + 0^s.093104\,T^2 - 6.2\times10^{-6}\,T^3

Это исходная форма IAU 1982 (Aoki et al.). Чтобы получить GMST на произвольный момент, к значению на 0h прибавляют интервал UT, умноженный на 1.00273790935.

2.2. GMST — формула IAU 2006 (через ERA)

Современный стандарт разделяет вращение Земли (ERA, зависит только от UT1) и прецессию (зависит от TT).

Earth Rotation Angle (ERA), радианы:

θ(Tu)=2π(0.7790572732640+1.00273781191135448 Tu)\theta(T_u) = 2\pi\left(0.7790572732640 + 1.00273781191135448\,T_u\right)

где T_u = JD_UT1 − 2451545.0.

GMST (IAU 2006), в угловых секундах:

GMST=θ(Tu)+0′′.014506+4612′′.156534 t+1′′.3915817 t2−0′′.00000044 t3−0′′.000029956 t4−0′′.0000000368 t5GMST = \theta(T_u) + 0''.014506 + 4612''.156534\,t + 1''.3915817\,t^2 - 0''.00000044\,t^3 - 0''.000029956\,t^4 - 0''.0000000368\,t^5

где t = (JD_TT − 2451545.0)/36525 (внимание: TT, тогда как ERA — от UT1).

Разница между IAU 1982 и IAU 2006 для современных эпох — порядка миллисекунд дуги; для астрологии обе формулы эквивалентны.

2.3. GAST и уравнение равноденствий

Средний (mean) отсчёт ведётся от среднего равноденствия, истинный (apparent) — от истинного, смещённого нутацией.

GAST=GMST+Δψcos⁡ε\boxed{GAST = GMST + \Delta\psi \cos\varepsilon}

Величина Eq_eq = Δψ cos ε называется уравнением равноденствий (equation of the equinoxes), где Δψ — нутация по долготе, ε — истинный наклон эклиптики. Амплитуда ±1.1 с времени (±17″ дуги).

Более точная форма (IAU 1994, «complementary terms»):

Eqeq=Δψcos⁡ε+0′′.00264sin⁡Ω+0′′.000063sin⁡2ΩEq_{eq} = \Delta\psi\cos\varepsilon + 0''.00264\sin\Omega + 0''.000063\sin 2\Omega

где Ω — долгота восходящего узла Луны (см. §3.6).

Обычно в астрологии применяют GAST (истинное), поскольку положения планет тоже берутся apparent. Расхождение с GMST даёт сдвиг ASC до ~17″.

2.4. Местное звёздное время (LST)

LST=GAST+λ\boxed{LST = GAST + \lambda}

где λ — географическая долгота, восточная положительна, в градусах. В часах: LST_h = GAST_h + λ/15.

RAMC (Right Ascension of Medium Coeli) = LST, выраженное в градусах, — это и есть прямое восхождение MC.

2.5. Проверочный пример

Meeus, example 12.a. Дата: 1987 April 10, 0h UT.

  1. JD = 2446895.5
  2. T = (2446895.5 − 2451545.0)/36525 = −0.127296372347
  3. Подстановка в формулу IAU 1982:
    θ₀ = 280.46061837 + 360.98564736629·(−4649.5)
         + 0.000387933·(−0.127296372)² − (−0.127296372)³/38710000
    θ₀ = 197.693195° (после приведения mod 360)
    
  4. В часах: 197.693195 / 15 = 13.1795463 h = 13h 10m 46.3668s ✓

Meeus, example 12.b. Та же дата, 19:21:00 UT. JD = 2446896.30625 → GMST = 128.7378734° = 8h 34m 57.0896s.

Переход к GAST для 1987 April 10.0 (из примера 22.a): Δψ = −3.788″, ε = 23°26′36.85″. Тогда Eq_eq = −3.788″ · cos(23.4436°) = −3.475″ = −0.2317 s, GAST = 13h 10m 46.3668s − 0.2317s = 13h 10m 46.1351s.

import math

def gmst_deg(jd_ut):
    """GMST в градусах, IAU 1982 (Meeus 12.4). jd_ut в шкале UT1."""
    d = jd_ut - 2451545.0
    T = d / 36525.0
    g = (280.46061837 + 360.98564736629 * d
         + 0.000387933 * T * T - T**3 / 38710000.0)
    return g % 360.0

def gast_deg(jd_ut, dpsi_arcsec, eps_true_deg):
    """GAST = GMST + Δψ·cos ε."""
    eq_eq = dpsi_arcsec * math.cos(math.radians(eps_true_deg)) / 3600.0
    return (gmst_deg(jd_ut) + eq_eq) % 360.0

def lst_deg(jd_ut, longitude_east_deg, dpsi=0.0, eps=23.4392911):
    """Местное звёздное время = RAMC, в градусах."""
    return (gast_deg(jd_ut, dpsi, eps) + longitude_east_deg) % 360.0

3. СИСТЕМЫ КООРДИНАТ

3.1. Обзор

СистемаОсновная плоскостьКоординатыПолюсПрименение
Эклиптическаяэклиптикаλ (долгота, 0–360°), β (широта, ±90°)полюс эклиптикизодиак, все астрологические позиции
Экваториальнаянебесный экваторα (RA, 0–24h), δ (Dec, ±90°)северный полюс миразвёздные каталоги, RAMC, дома
ГоризонтальнаягоризонтA (азимут), h (высота)зенитвосход/заход, видимость
Галактическаяплоскость Галактикиl, bгалактический полюсGalactic Center ayanamsa

Все системы — сферические, правые; связаны поворотами вокруг общей линии узлов (точка весеннего равноденствия ♈ — общая для эклиптической и экваториальной).

3.2. Эклиптические ⟷ экваториальные

Поворот на угол наклона эклиптики ε вокруг оси X (направление на ♈).

Эклиптические → экваториальные (Meeus 13.3, 13.4):

tan⁡α=sin⁡λcos⁡ε−tan⁡βsin⁡εcos⁡λ\tan\alpha = \frac{\sin\lambda\cos\varepsilon - \tan\beta\sin\varepsilon}{\cos\lambda}

sin⁡δ=sin⁡βcos⁡ε+cos⁡βsin⁡εsin⁡λ\sin\delta = \sin\beta\cos\varepsilon + \cos\beta\sin\varepsilon\sin\lambda

Экваториальные → эклиптические (Meeus 13.1, 13.2):

tan⁡λ=sin⁡αcos⁡ε+tan⁡δsin⁡εcos⁡α\tan\lambda = \frac{\sin\alpha\cos\varepsilon + \tan\delta\sin\varepsilon}{\cos\alpha}

sin⁡β=sin⁡δcos⁡ε−cos⁡δsin⁡εsin⁡α\sin\beta = \sin\delta\cos\varepsilon - \cos\delta\sin\varepsilon\sin\alpha

Критично: арктангенс должен браться через atan2(числитель, знаменатель), иначе теряется квадрант.

Матричная форма. Единичный вектор в эклиптических координатах:

recl=(cos⁡βcos⁡λcos⁡βsin⁡λsin⁡β)\mathbf{r}_{ecl} = \begin{pmatrix}\cos\beta\cos\lambda \\ \cos\beta\sin\lambda \\ \sin\beta\end{pmatrix}

Тогда

R_x(-\varepsilon) = \begin{pmatrix}1 & 0 & 0\\ 0 & \cos\varepsilon & -\sin\varepsilon \\ 0 & \sin\varepsilon & \cos\varepsilon\end{pmatrix}$$ и обратно `r_ecl = R_x(+ε) · r_eq`. Извлечение: `α = atan2(y, x)`, `δ = asin(z)`, `r = |vec|`. ### 3.3. Экваториальные → горизонтальные Сначала часовой угол: $$H = LST - \alpha$$ (обе величины в градусах либо обе в часах). Затем (Meeus 13.5, 13.6), где φ — географическая широта: $$\tan A = \frac{\sin H}{\cos H \sin\varphi - \tan\delta\cos\varphi}$$ $$\sin h = \sin\varphi\sin\delta + \cos\varphi\cos\delta\cos H$$ Здесь A отсчитывается **от юга к западу** (соглашение Meeus). Для «навигационного» азимута от севера: `A_N = A + 180°`. Обратно: $$\tan H = \frac{\sin A}{\cos A\sin\varphi + \tan h\cos\varphi}, \qquad \sin\delta = \sin\varphi\sin h - \cos\varphi\cos h\cos A$$ **Рефракция.** Видимая высота выше истинной. Формула Bennett: $$R = \frac{1}{\tan\left(h + \frac{7.31}{h + 4.4}\right)} \ \text{[угл. мин]}, \quad h\ \text{в градусах}$$ Для астрологических целей (кроме расчёта восходов) рефракция не применяется. ### 3.4. Галактические координаты Полюс Галактики (IAU 1958, эпоха B1950): `α_G = 12h49m = 192.25°`, `δ_G = +27.4°`, долгота восходящего узла галактического экватора на экваторе B1950 `l_Ω = 33°`. В эпохе J2000 (ICRS): `α_G = 192.85948°`, `δ_G = +27.12825°`, `l_NCP = 122.93192°`. Преобразование экваториальных (J2000) в галактические: $$\sin b = \sin\delta\sin\delta_G + \cos\delta\cos\delta_G\cos(\alpha - \alpha_G)$$ $$l = l_{NCP} - \operatorname{atan2}\big(\cos\delta\sin(\alpha - \alpha_G),\ \sin\delta\cos\delta_G - \cos\delta\sin\delta_G\cos(\alpha - \alpha_G)\big)$$ **Galactic Center (Sgr A\*)**, J2000: `α = 17h45m40.04s = 266.41683°`, `δ = −29°00′28.1″ = −29.00781°`. В эклиптических координатах J2000 это λ ≈ 266.85° ≈ **26°51′ Стрельца** (тропически на эпоху J2000). Это основа Galactic Center ayanamsa (см. §4.6). ### 3.5. Наклон эклиптики ε #### Средний наклон, IAU 1980 (Meeus 22.2) $$\varepsilon_0 = 23°26'21''.448 - 46''.8150\,T - 0''.00059\,T^2 + 0''.001813\,T^3$$ Точность ~1″ на интервале ±2000 лет от J2000; за пределами быстро деградирует. #### Средний наклон, Laskar (Meeus 22.3) — рекомендуется С `U = T/100` (единица = 10 000 юлианских лет), справедливо на ±10 000 лет: $$\varepsilon_0 = 23°26'21''.448 + (-4680''.93U - 1''.55U^2 + 1999''.25U^3 - 51''.38U^4 - 249''.67U^5 - 39''.05U^6 + 7''.12U^7 + 27''.87U^8 + 5''.79U^9 + 2''.45U^{10})$$ Точность 0.01″ на ±1000 лет, ~1″ на ±10 000 лет. #### Средний наклон, IAU 2006 / P03 (Capitaine et al.) $$\varepsilon_0 = 23°26'21''.406 - 46''.836769\,T - 0''.0001831\,T^2 + 0''.00200340\,T^3 - 5.76\times10^{-7}T^4 - 4.34\times10^{-8}T^5$$ Значение при J2000.0: **ε₀ = 23°26′21.406″ = 23.439279444°** (IAU 1980 даёт 23°26′21.448″ = 23.4392911° — разница 42 mas). #### Истинный наклон $$\varepsilon = \varepsilon_0 + \Delta\varepsilon$$ где Δε — нутация по наклону. ### 3.6. Нутация — теория IAU 1980 Нутация — короткопериодические колебания оси Земли, накладывающиеся на прецессию. Главная причина — прецессия орбиты Луны с периодом 18.6 года. Полный ряд IAU 1980 (Wahr) содержит **106 членов**; Meeus (гл. 22) приводит 63 члена (все с амплитудой > 0.0003″). #### Фундаментальные аргументы (Meeus 22, градусы, T — юл. столетия TT) | Аргумент | Формула | |---|---| | `D` — средняя элонгация Луны от Солнца | `297.85036 + 445267.111480 T − 0.0019142 T² + T³/189474` | | `M` — средняя аномалия Солнца | `357.52772 + 35999.050340 T − 0.0001603 T² − T³/300000` | | `M'` — средняя аномалия Луны | `134.96298 + 477198.867398 T + 0.0086972 T² + T³/56250` | | `F` — аргумент широты Луны | `93.27191 + 483202.017538 T − 0.0036825 T² + T³/327270` | | `Ω` — долгота восходящего узла Луны | `125.04452 − 1934.136261 T + 0.0020708 T² + T³/450000` | (В некоторых изданиях член при `F` записан как `− T³/3526000` — обе формы встречаются, различие ничтожно.) #### Ряды $$\Delta\psi = \sum_i (A_i + A'_i T)\sin(\text{arg}_i), \qquad \Delta\varepsilon = \sum_i (B_i + B'_i T)\cos(\text{arg}_i)$$ где `arg_i = n₁D + n₂M + n₃M' + n₄F + n₅Ω`, а коэффициенты даны в единицах **0.0001″**. #### Таблица: 15 крупнейших членов IAU 1980 | # | D | M | M′ | F | Ω | A (0.0001″) | A′·T | B (0.0001″) | B′·T | |---|---|---|---|---|---|---|---|---|---| | 1 | 0 | 0 | 0 | 0 | 1 | −171996 | −174.2 | 92025 | 8.9 | | 2 | −2 | 0 | 0 | 2 | 2 | −13187 | −1.6 | 5736 | −3.1 | | 3 | 0 | 0 | 0 | 2 | 2 | −2274 | −0.2 | 977 | −0.5 | | 4 | 0 | 0 | 0 | 0 | 2 | 2062 | 0.2 | −895 | 0.5 | | 5 | 0 | 1 | 0 | 0 | 0 | 1426 | −3.4 | 54 | −0.1 | | 6 | 0 | 0 | 1 | 0 | 0 | 712 | 0.1 | −7 | 0 | | 7 | −2 | 1 | 0 | 2 | 2 | −517 | 1.2 | 224 | −0.6 | | 8 | 0 | 0 | 0 | 2 | 1 | −386 | −0.4 | 200 | 0 | | 9 | 0 | 0 | 1 | 2 | 2 | −301 | 0 | 129 | −0.1 | | 10 | −2 | −1 | 0 | 2 | 2 | 217 | −0.5 | −95 | 0.3 | | 11 | −2 | 0 | 1 | 0 | 0 | −158 | 0 | 0 | 0 | | 12 | −2 | 0 | 0 | 2 | 1 | 129 | 0.1 | −70 | 0 | | 13 | 0 | 0 | −1 | 2 | 2 | 123 | 0 | −53 | 0 | | 14 | 2 | 0 | 0 | 0 | 0 | 63 | 0 | 0 | 0 | | 15 | 0 | 0 | 1 | 0 | 1 | 63 | 0.1 | −33 | 0 | Следующие по величине (для полноты, амплитуды в 0.0001″): | # | D | M | M′ | F | Ω | A | A′ | B | B′ | |---|---|---|---|---|---|---|---|---|---| | 16 | 2 | 0 | −1 | 2 | 2 | −59 | 0 | 26 | 0 | | 17 | 0 | 0 | −1 | 0 | 1 | −58 | −0.1 | 32 | 0 | | 18 | 0 | 0 | 1 | 2 | 1 | −51 | 0 | 27 | 0 | | 19 | −2 | 0 | 2 | 0 | 0 | 48 | 0 | 0 | 0 | | 20 | 0 | 0 | −2 | 2 | 1 | 46 | 0 | −24 | 0 | Первый член (`−17.1996″ sin Ω`, период 6798 суток = 18.6 года) — доминирующий: он на порядок превосходит остальные. Второй по значимости — полугодовой солнечный (период 182.6 сут), третий — полумесячный лунный. **Упрощённая формула (точность 0.5″)** — Meeus, «low accuracy»: ``` Ω = 125.04452 − 1934.136261 T L = 280.4665 + 36000.7698 T (средняя долгота Солнца) L' = 218.3165 + 481267.8813 T (средняя долгота Луны) Δψ = −17.20″ sin Ω − 1.32″ sin 2L − 0.23″ sin 2L' + 0.21″ sin 2Ω Δε = +9.20″ cos Ω + 0.57″ cos 2L + 0.10″ cos 2L' − 0.09″ cos 2Ω ``` #### Проверочный пример (Meeus 22.a) Дата 1987 April 10.0 TD, JD = 2446895.5, `T = −0.127296372348`. | Аргумент | Значение | |---|---| | D | 136.9623° | | M | 94.9792° | | M′ | 229.2784° | | F | 143.4079° | | Ω | 11.2531° | Результат полного ряда: **Δψ = −3.788″**, **Δε = +9.443″**. Средний наклон (Laskar): ε₀ = 23.440946° = 23°26′27.407″. Истинный: ε = 23°26′36.850″. (Проверено численно: шесть ведущих членов дают Δψ = −3.777″, Δε = +9.471″ — остаточная разница покрывается младшими членами.) ```python import math NUT = [ # D, M, Mp, F, Om, A, A', B, B' (A,B в 0.0001") (0, 0, 0, 0, 1, -171996, -174.2, 92025, 8.9), (-2, 0, 0, 2, 2, -13187, -1.6, 5736, -3.1), (0, 0, 0, 2, 2, -2274, -0.2, 977, -0.5), (0, 0, 0, 0, 2, 2062, 0.2, -895, 0.5), (0, 1, 0, 0, 0, 1426, -3.4, 54, -0.1), (0, 0, 1, 0, 0, 712, 0.1, -7, 0.0), (-2, 1, 0, 2, 2, -517, 1.2, 224, -0.6), (0, 0, 0, 2, 1, -386, -0.4, 200, 0.0), (0, 0, 1, 2, 2, -301, 0.0, 129, -0.1), (-2, -1, 0, 2, 2, 217, -0.5, -95, 0.3), (-2, 0, 1, 0, 0, -158, 0.0, 0, 0.0), (-2, 0, 0, 2, 1, 129, 0.1, -70, 0.0), (0, 0, -1, 2, 2, 123, 0.0, -53, 0.0), (2, 0, 0, 0, 0, 63, 0.0, 0, 0.0), (0, 0, 1, 0, 1, 63, 0.1, -33, 0.0), (2, 0, -1, 2, 2, -59, 0.0, 26, 0.0), (0, 0, -1, 0, 1, -58, -0.1, 32, 0.0), (0, 0, 1, 2, 1, -51, 0.0, 27, 0.0), (-2, 0, 2, 0, 0, 48, 0.0, 0, 0.0), (0, 0, -2, 2, 1, 46, 0.0, -24, 0.0), ] def nutation(jd_tt): """Возвращает (Δψ, Δε) в угловых секундах.""" T = (jd_tt - 2451545.0) / 36525.0 D = 297.85036 + 445267.111480*T - 0.0019142*T*T + T**3/189474.0 M = 357.52772 + 35999.050340*T - 0.0001603*T*T - T**3/300000.0 Mp = 134.96298 + 477198.867398*T + 0.0086972*T*T + T**3/56250.0 F = 93.27191 + 483202.017538*T - 0.0036825*T*T + T**3/327270.0 Om = 125.04452 - 1934.136261*T + 0.0020708*T*T + T**3/450000.0 dpsi = deps = 0.0 for nd, nm, nmp, nf, no, a, ap, b, bp in NUT: arg = math.radians((nd*D + nm*M + nmp*Mp + nf*F + no*Om) % 360.0) dpsi += (a + ap*T) * math.sin(arg) deps += (b + bp*T) * math.cos(arg) return dpsi / 10000.0, deps / 10000.0 def mean_obliquity(jd_tt): """Средний наклон эклиптики (Laskar), градусы.""" U = (jd_tt - 2451545.0) / 36525.0 / 100.0 sec = (21.448 - 4680.93*U - 1.55*U**2 + 1999.25*U**3 - 51.38*U**4 - 249.67*U**5 - 39.05*U**6 + 7.12*U**7 + 27.87*U**8 + 5.79*U**9 + 2.45*U**10) return 23.0 + 26.0/60.0 + sec/3600.0 ``` --- ## 4. ПРЕЦЕССИЯ И АЙАНАМША ### 4.1. Природа прецессии Земля — сплюснутый волчок; гравитационные моменты Солнца и Луны на экваториальное вздутие заставляют ось вращения описывать конус с периодом **≈ 25 772 года** (платонический год). Точка весеннего равноденствия ♈ при этом **смещается по эклиптике навстречу годичному движению Солнца**. Составляющие: - **Лунно-солнечная прецессия** (`p_A`) — движение полюса мира, ~50.4″/год; - **Планетная прецессия** — поворот самой плоскости эклиптики под действием планет, ~0.47″/год, влияет в основном на наклон ε; - **Общая прецессия по долготе** (`general precession in longitude`) — их сумма, наблюдаемая величина. Скорость общей прецессии на эпоху J2000.0: $$p = 5028''.796195\ /\ \text{юл. столетие} = \boxed{50''.28796\ /\ \text{год}}$$ Это `1° за ≈ 71.6 года` и `30° (один знак) за ≈ 2148 лет`. ### 4.2. Полиномы прецессии **Общая прецессия по долготе** (IAU 2006 / P03), угловые секунды: $$p_A = 5028''.796195\,T + 1''.1054348\,T^2 + 0''.00007964\,T^3 - 0''.000023857\,T^4 - 0''.0000000383\,T^5$$ **Углы прецессии по Ньюкому / IAU 1976** (Lieske), для перехода от эпохи J2000.0 к дате (Meeus 21.2), в угловых секундах: $$\zeta_A = 2306''.2181\,T + 0''.30188\,T^2 + 0''.017998\,T^3$$ $$z_A = 2306''.2181\,T + 1''.09468\,T^2 + 0''.018203\,T^3$$ $$\theta_A = 2004''.3109\,T - 0''.42665\,T^2 - 0''.041833\,T^3$$ Для произвольной начальной эпохи `JD₀` вводится `T₀ = (JD₀ − 2451545)/36525`, `t = (JD − JD₀)/36525`: $$\zeta_A = (2306''.2181 + 1''.39656T_0 - 0''.000139T_0^2)t + (0''.30188 - 0''.000344T_0)t^2 + 0''.017998\,t^3$$ $$z_A = (2306''.2181 + 1''.39656T_0 - 0''.000139T_0^2)t + (1''.09468 + 0''.000066T_0)t^2 + 0''.018203\,t^3$$ $$\theta_A = (2004''.3109 - 0''.85330T_0 - 0''.000217T_0^2)t - (0''.42665 + 0''.000217T_0)t^2 - 0''.041833\,t^3$$ Матрица прецессии в экваториальных координатах: $$P = R_z(-z_A)\,R_y(\theta_A)\,R_z(-\zeta_A)$$ **Прецессия в эклиптических координатах** (Meeus 21.5–21.7) — проще для астрологии. С `η`, `Π`, `p`: $$\eta = (47''.0029 - 0''.06603T_0 + 0''.000598T_0^2)t + (-0''.03302 + 0''.000598T_0)t^2 + 0''.000060\,t^3$$ $$\Pi = 174°52'34''.982 + 3289''.4789\,T_0 + 0''.60622\,T_0^2 - (869''.8089 + 0''.50491T_0)t + 0''.03536\,t^2$$ $$p = (5029''.0966 + 2''.22226T_0 - 0''.000042T_0^2)t + (1''.11113 - 0''.000042T_0)t^2 - 0''.000006\,t^3$$ Тогда, с исходными `λ₀, β₀`: $$A' = \cos\eta\cos\beta_0\sin(\Pi - \lambda_0) - \sin\eta\sin\beta_0$$ $$B' = \cos\beta_0\cos(\Pi - \lambda_0)$$ $$C' = \cos\eta\sin\beta_0 + \sin\eta\cos\beta_0\sin(\Pi - \lambda_0)$$ $$\lambda = p + \Pi - \arctan\frac{A'}{B'}, \qquad \sin\beta = C'$$ **Упрощение для астрологии.** Так как речь идёт почти всегда о смещении долготы, часто достаточно: $$\lambda_{date} \approx \lambda_{J2000} + p_A$$ то есть прибавление общей прецессии по долготе. Ошибка — доли секунды дуги на интервале столетий. ### 4.3. Тропический и сидерический зодиак - **Тропический зодиак** привязан к **точке весеннего равноденствия**: 0° Овна ≡ ♈ по определению, на любую дату. Это система сезонов. Используется в западной астрологии. - **Сидерический зодиак** привязан к **неподвижным звёздам**. Используется в джйотише (ведической астрологии) и западной сидерической школе. Из-за прецессии точка ♈ смещается назад относительно звёзд, и разрыв между зодиаками растёт примерно на 50.29″ в год (1° за 72 года). Около 285 г. н. э. (по большинству школ) зодиаки совпадали; сейчас расхождение составляет около **24°**. $$\boxed{\lambda_{sidereal} = \lambda_{tropical} - \text{ayanamsha}}$$ **Ayanamsha** (санскр. *ayana* — движение, *amsha* — часть) — величина этого расхождения на данный момент. ### 4.4. Общая схема вычисления айанамши Swiss Ephemeris определяет каждую систему парой `(t0, ayan_t0)`: опорная эпоха (в JD) и значение айанамши на эту эпоху. Для произвольного момента: ``` ayanamsha(t) = ayan_t0 + (прецессия по долготе от t0 до t) ``` Строго это делается через прецессионный поворот: берётся вектор точки весеннего равноденствия даты, прецессируется к эклиптике эпохи `t0`, и к результату прибавляется `ayan_t0`. В упрощённом виде (годится для оценок, ошибка растёт на длинных интервалах): $$A(JD) \approx ayan_{t_0} + \frac{JD - t_0}{365.25}\cdot 50''.28796\ /\ 3600$$ Более точно — с учётом квадратичного члена: $$A(JD) \approx ayan_{t_0} + 5028''.796195\,\tau + 1''.1054348\,\tau^2 \quad [/3600\ \to\ \text{град}]$$ где `τ = (JD − t0)/36525`. ```python def ayanamsha(jd_tt, t0, ayan_t0): """Айанамша в градусах (приближение полиномом общей прецессии).""" tau = (jd_tt - t0) / 36525.0 p = (5028.796195*tau + 1.1054348*tau**2 + 0.00007964*tau**3 - 0.000023857*tau**4 - 0.0000000383*tau**5) return ayan_t0 + p / 3600.0 ``` **Важная деталь:** Swiss Ephemeris для ряда систем использует *исторически соответствующую* модель прецессии (`prec_offset`): Fagan/Bradley и Raman — Newcomb, Lahiri — IAU 1976. Это даёт расхождения в секунды дуги с расчётом по современной P03. Для точного воспроизведения чужих эфемерид модель прецессии нужно согласовывать. ### 4.5. Таблица айанамш (данные из `sweph.h`, Swiss Ephemeris) Константы: `J1900 = 2415020.0`, `J2000 = 2451545.0`, `B1950 = 2433282.42345905`. | # | Система | t0 (JD) | ayan_t0 (°) | Модель прецессии | |---|---|---|---|---| | 0 | **Fagan/Bradley** (default SE) | 2433282.42346 | 24.042044444 | Newcomb | | 1 | **Lahiri** (Chitrapaksha) | 2435553.5 | 23.250182778 − 0.004658035 = **23.245524743** | IAU 1976 | | 2 | DeLuce | 1721057.5 | 0 (t0 в UT) | — | | 3 | **Raman** | J1900 = 2415020.0 | 360 − 338.98556 = **21.01444** | Newcomb | | 4 | Usha/Shashi | J1900 | 360 − 341.33904 = 18.66096 | — | | 5 | **Krishnamurti (KP)** | J1900 | 360 − 337.636111 = **22.363889** | Newcomb | | 6 | **Djwhal Khul** | J1900 | 360 − 333.0369024 = **26.9630976** | — | | 7 | **Shri Yukteshwar** | J1900 | 360 − 338.917778 = **21.082222** | — | | 8 | J.N. Bhasin | J1900 | 360 − 338.634444 = 21.365556 | — | | 9 | Babylonian / Kugler 1 | 1684532.5 | −5.66667 (UT) | — | | 10 | Babylonian / Kugler 2 | 1684532.5 | −4.26667 (UT) | — | | 11 | Babylonian / Kugler 3 | 1684532.5 | −3.41667 (UT) | — | | 12 | Babylonian / Huber | 1684532.5 | −4.46667 (UT) | — | | 13 | Babylonian / Mercier | 1673941.0 | −5.079167 (UT) | — | | 14 | Babylonian / Aldebaran = 15 Tau | 1684532.5 | −4.44138598 (UT) | — | | 15 | Hipparchos | 1674484.0 | −9.33333 (UT) | — | | 16 | Sassanian | 1927135.8747793 | 0 (UT) | — | | 17 | **Galactic Center at 0° Sagittarius** | вычисляется динамически | — | — | | 18 | J2000 | 2451545.0 | 0 | — | | 19 | J1900 | 2415020.0 | 0 | — | | 20 | B1950 | 2433282.42345905 | 0 | — | | 21 | Suryasiddhanta | 1903396.8128654 | 0 (UT) | — | | 22 | Suryasiddhanta, mean Sun | 1903396.8128654 | −0.21463395 (UT) | — | | 23 | Aryabhata | 1903396.7895321 | 0 (UT) | — | | 24 | Aryabhata, mean Sun | 1903396.7895321 | −0.23763238 (UT) | — | | 25 | SS Revati | 1903396.8128654 | −0.79167046 (UT) | — | | 26 | SS Citra | 1903396.8128654 | 2.11070444 (UT) | — | | 27 | **True Chitrapaksha** (Spica точно на 180°) | динамически | — | — | | 28 | True Revati (ζ Psc на 359°50′) | динамически | — | — | | 29 | True Pushya (δ Cnc на 106°) | динамически | — | — | | 30 | **Galactic Center (Gil Brand)** | динамически | — | — | | 31 | Galactic Equator IAU 1958 | динамически | — | — | | 32 | Galactic Equator (true) | динамически | — | — | | 33 | Galactic Equator at mid-Mula | динамически | — | — | | 34 | Skydram / Mardyks | 2451079.734892 | 30.0 | — | | 35 | Chandra Hari | динамически | — | — | | 36 | Ernst Wilhelm (Dhruva Galactic) | динамически | — | — | | 37 | нулевая айанамша в 522 г. | 1911797.740782065 | 0 (UT) | — | | 38 | Babylonian (Britton 2010) | 1721057.5 | −3.2 (UT) | — | | 39 | Sunil Sheoran («Vedic») | динамически | — | — | | 40 | **Galactic Center (Cochrane)** | динамически | — | — | | 41 | Galactic Equator (Fiorenza) | 2451544.5 | 25.0 (UT) | — | | 42 | Vettius Valens | 1775845.5 | −2.9422 (UT) | — | | 43 | Lahiri (1940) | J1900 | 22.44597222 | Newcomb | | 44 | Lahiri VP285 (1980) | 1825235.2458513028 | 0.0 | — | | 45 | Krishnamurti VP291 | 1827424.752255678 | 0.0 | — | | 46 | **Lahiri ICRC** | 2435553.5 | 23.25 − 0.00464207 = **23.24535793** | Newcomb | Пометка «(UT)» означает `t0_is_UT = TRUE` — опорная эпоха задана в шкале UT, а не TT; при вычислении необходимо учитывать ΔT на эту эпоху. #### Пояснения к ключевым системам **Lahiri (Chitrapaksha)** — официальная айанамша Индии, утверждена Calendar Reform Committee (1955, под председательством Мегхнада Саха; Н. Ч. Лахири — секретарь). Определяется условием: звезда **Spica (Chitra, α Virginis) находится точно на 180° сидерической долготы** (0° Весов). Опорная точка `t0 = 2435553.5` = 1956-03-21.0. Из значения 23.250182778° вычтена нутация 0.004658035° (по модели Wahr 1980) — то есть база определена в *средних*, а не истинных координатах. Международная конференция ICRC зафиксировала значение на J2000.0 равным **23.853222°** (вариант #46). Расчёт по полиному даёт ≈ 23.857° — расхождение возникает из-за разных моделей прецессии. **Fagan/Bradley** — стандарт западной сидерической астрологии. Основана на «Synetic Vernal Point» = 335°57′28.64″ на эпоху 1950.0; получена эмпирически Garth Allen из вавилонских данных. Значение `ayan_t0 = 24.042044444°` соответствует `360° − 335.957955...°`. Отличается от Lahiri примерно на **0.88°** (Fagan/Bradley больше). **Krishnamurti (KP)** — система К. С. Кришнамурти, нулевая айанамша отнесена к 291 г. н. э. На J2000 ≈ 23.687°, то есть примерно на 6′ меньше Lahiri. (Оригинальные таблицы КП содержали систематическую ошибку около 6′ относительно Lahiri; SE воспроизводит исходные значения.) **Raman** — Б. В. Раман, на основе значения 21°01′52″ на 1900.0. На J2000 ≈ 22.37°, то есть почти на **1.5° меньше Lahiri**. Это самое большое расхождение среди распространённых индийских систем. **Shri Yukteshwar** — из книги «The Holy Science» (1894); заявлено 20°54′36″ на 1900 г., но реализованное значение 21.082222° даёт расхождение с авторскими таблицами. На J2000 ≈ 22.46°. **Djwhal Khul** — теософская система (Алиса Бейли), исходит из начала эпохи Водолея в 2117 г. н. э. На J2000 ≈ 28.33° — самая большая из распространённых айанамш. **True Chitrapaksha** — не фиксированная пара `(t0, ayan_t0)`, а динамическое условие: на каждый момент вычисляется реальное положение Spica (с учётом собственного движения по каталогу Hipparcos) и айанамша подбирается так, чтобы её сидерическая долгота была ровно 180°. Отличается от «обычной» Lahiri на несколько угловых секунд. ### 4.6. Галактические айанамши **Galactic Center at 0° Sagittarius** (#17) — айанамша, при которой центр Галактики (Sgr A\*) имеет сидерическую долготу ровно 240°. Вычисляется динамически по положению Sgr A\* на дату. **Gil Brand** (#30) — галактический экватор пересекает эклиптику, и эта точка приравнивается к началу знака Стрельца (240°). **Cochrane** (#40) — GC помещается в 0° Стрельца, но с другим определением опорной точки. **Fiorenza** (#41) — фиксированная: `t0 = 2451544.5` (2000-01-01.0 UT), `ayan_t0 = 25.0°` ровно. Основана на положении галактического экватора в середине накшатры Мула. Для GC-айанамш нужно положение Sgr A\* с собственным движением. Опорные данные (ICRS/J2000): `α = 266.41683°`, `δ = −29.00781°`; собственное движение самого Sgr A\* пренебрежимо (это сам центр), но координаты пересчитываются прецессией на дату. ### 4.7. Численные значения айанамш на J2000.0 > ⚠️ **Таблица заменена на проверенную.** Первоначальные значения, вычисленные > «по формуле», разошлись с реальностью на величину до **265″ (4.4′)** — это > заметно в астрологической практике. Ниже — значения, полученные **прямым > вызовом** `swe_get_ayanamsa_ut()` (pyswisseph 2.10.03). Именно они являются > эталоном, поскольку Swiss Ephemeris — движок astro.com. Значения получены исполнением кода: ```python import swisseph as swe swe.set_sid_mode(swe.SIDM_LAHIRI, 0, 0) swe.get_ayanamsa_ut(2451545.0) # -> 23.857092 ``` | Система | Константа SwissEph | J2000.0 | В градусной записи | 2025.0 | |---|---|---|---|---| | **Lahiri** (Chitrapaksha) | `SIDM_LAHIRI` | **23.857092°** | 23°51′25.5″ | 24.206343° | | Lahiri ICRC | `SIDM_LAHIRI_ICRC` | 23.856789° | 23°51′24.4″ | 24.206040° | | **Fagan/Bradley** | `SIDM_FAGAN_BRADLEY` | **24.740300°** | 24°44′25.1″ | 25.089551° | | **Krishnamurti (KP)** | `SIDM_KRISHNAMURTI` | **23.760240°** | 23°45′36.9″ | 24.109491° | | Krishnamurti VP291 | `SIDM_KRISHNAMURTI_VP291` | 23.780365° | 23°46′49.3″ | 24.129614° | | **Raman** | `SIDM_RAMAN` | **22.410791°** | 22°24′38.8″ | 22.760042° | | Shri Yukteshwar | `SIDM_YUKTESHWAR` | 22.478803° | 22°28′43.7″ | 22.828054° | | J.N. Bhasin | `SIDM_JN_BHASIN` | 22.762137° | 22°45′43.7″ | 23.111388° | | Djwhal Khul | `SIDM_DJWHAL_KHUL` | 28.359679° | 28°21′34.8″ | 28.708929° | | Usha/Shashi | `SIDM_USHASHASHI` | 20.057541° | 20°03′27.1″ | 20.406792° | | Suryasiddhanta | `SIDM_SURYASIDDHANTA` | 20.895059° | 20°53′42.2″ | 21.244308° | | True Chitra | `SIDM_TRUE_CITRA` | 23.840015° | 23°50′24.1″ | 24.188980° | | True Revati | `SIDM_TRUE_REVATI` | 20.045165° | 20°02′42.6″ | 20.395202° | | True Pushya | `SIDM_TRUE_PUSHYA` | 22.727092° | 22°43′37.5″ | 23.076650° | | Galactic Center (Brand) | `SIDM_GALCENT_0SAG` | 26.846046° | 26°50′45.8″ | 27.195291° | | Galactic (Mardyks/Fiorenza) | `SIDM_GALALIGN_MARDYKS` | 30.017794° | 30°01′04.1″ | 30.367045° | | Aldebaran 15° Тельца | `SIDM_ALDEBARAN_15TAU` | 24.758924° | 24°45′32.1″ | 25.108172° | | Hipparchos | `SIDM_HIPPARCHOS` | 20.247788° | 20°14′52.0″ | 20.597036° | | Sassanian | `SIDM_SASSANIAN` | 19.992959° | 19°59′34.7″ | 20.342209° | | Babylonian (Kugler 1) | `SIDM_BABYL_KUGLER1` | 23.533640° | 23°32′01.1″ | 23.882888° | **Скорость роста.** Все аянамсы растут примерно на **0.01397°/год ≈ 50.3″/год** (общая прецессия). За 25 лет (2000 → 2025) прирост ≈ 0.3493° у всех систем — это видно в таблице: разность последних двух колонок одинакова для всех строк. **Практический вывод.** Никогда не вычисляйте аянамсу «по формуле из статьи» — берите её из библиотеки. Разброс между школами достигает **10°** (Sassanian 19.99° против Mardyks 30.02°), а ошибка в реализации легко даёт единицы минут дуги. **Пример применения.** Солнце в тропической долготе 100.00° (10° Рака) на J2000. При Lahiri: `100.00 − 23.857 = 76.143°` = **16°08′ Близнецов** сидерически. Тот же знак сменился — типичная ситуация, когда тропический и сидерический знаки различаются на один для градусов меньше айанамши. --- ## 5. ПОЛОЖЕНИЯ ПЛАНЕТ ### 5.1. Кеплеровы элементы орбиты Шесть величин, однозначно задающих орбиту и положение на ней: | Элемент | Обозн. | Смысл | |---|---|---| | Большая полуось | `a` | размер орбиты (а. е.) | | Эксцентриситет | `e` | форма (0 = круг, <1 = эллипс) | | Наклонение | `i` | угол между плоскостью орбиты и эклиптикой | | Долгота восходящего узла | `Ω` | ориентация линии узлов | | Аргумент перигелия | `ω` | ориентация апсид в плоскости орбиты | | Средняя аномалия | `M` | положение на орбите в момент эпохи | Производные величины: - `ϖ = Ω + ω` — долгота перигелия (longitude of perihelion); - `L = ϖ + M = Ω + ω + M` — средняя долгота (mean longitude); - `n` — среднее движение, `n = 0.9856076686 / (a^1.5)` град/сут (гелиоц.); - период `P = a^1.5` лет (третий закон Кеплера). **Средние элементы планет на J2000.0** (JPL, стандартный набор; линейный член на столетие — в скобках): | Планета | a (а.е.) | e | i (°) | Ω (°) | ϖ (°) | L (°) | |---|---|---|---|---|---|---| | Mercury | 0.38709927 (+0.00000037) | 0.20563593 (+0.00001906) | 7.00497902 (−0.00594749) | 48.33076593 (−0.12534081) | 77.45779628 (+0.16047689) | 252.25032350 (+149472.67411175) | | Venus | 0.72333566 (+0.00000390) | 0.00677672 (−0.00004107) | 3.39467605 (−0.00078890) | 76.67984255 (−0.27769418) | 131.60246718 (+0.00268329) | 181.97909950 (+58517.81538729) | | Earth/EMB | 1.00000261 (+0.00000562) | 0.01671123 (−0.00004392) | −0.00001531 (−0.01294668) | 0.0 (0.0) | 102.93768193 (+0.32327364) | 100.46457166 (+35999.37244981) | | Mars | 1.52371034 (+0.00001847) | 0.09339410 (+0.00007882) | 1.84969142 (−0.00813131) | 49.55953891 (−0.29257343) | −23.94362959 (+0.44441088) | −4.55343205 (+19140.30268499) | | Jupiter | 5.20288700 (−0.00011607) | 0.04838624 (−0.00013253) | 1.30439695 (−0.00183714) | 100.47390909 (+0.20469106) | 14.72847983 (+0.21252668) | 34.39644051 (+3034.74612775) | | Saturn | 9.53667594 (−0.00125060) | 0.05386179 (−0.00050991) | 2.48599187 (+0.00193609) | 113.66242448 (−0.28867794) | 92.59887831 (−0.41897216) | 49.95424423 (+1222.49362201) | | Uranus | 19.18916464 (−0.00196176) | 0.04725744 (−0.00004397) | 0.77263783 (−0.00242939) | 74.01692503 (+0.04240589) | 170.95427630 (+0.40805281) | 313.23810451 (+428.48202785) | | Neptune | 30.06992276 (+0.00026291) | 0.00859048 (+0.00005105) | 1.77004347 (+0.00035372) | 131.78422574 (−0.00508664) | 44.96476227 (−0.32241464) | −55.12002969 (+218.45945325) | | Pluto | 39.48211675 (−0.00031596) | 0.24882730 (+0.00005170) | 17.14001206 (+0.00004818) | 110.30393684 (−0.01183482) | 224.06891629 (−0.04062942) | 238.92903833 (+145.20780515) | Эти элементы дают точность порядка угловых минут — **недостаточно для серьёзной астрологии**, но полезны для проверки, обучения и грубых прикидок. ### 5.2. Уравнение Кеплера Связывает среднюю аномалию `M` (равномерно растущую со временем) с эксцентрической аномалией `E` (геометрическим углом): $$\boxed{M = E - e\sin E}$$ (`M`, `E` — в радианах.) Уравнение трансцендентное, аналитического решения в элементарных функциях нет. #### Решение методом Ньютона–Рафсона $$E_{n+1} = E_n - \frac{E_n - e\sin E_n - M}{1 - e\cos E_n}$$ Начальное приближение: - `E₀ = M` — для `e < 0.8` (все планеты, e_max = 0.2488 у Плутона); - `E₀ = π` — для высоких эксцентриситетов (кометы); - улучшенное: `E₀ = M + e·sin M` — сходится за 2–3 итерации. Сходимость квадратичная: для планетных `e` достаточно **4–5 итераций** до машинной точности. Критерий останова: `|ΔE| < 1e-12` рад. ```python import math def solve_kepler(M, e, tol=1e-12, maxiter=50): """M в радианах. Возвращает эксцентрическую аномалию E.""" M = math.fmod(M, 2*math.pi) if M < 0: M += 2*math.pi E = M + e * math.sin(M) if e < 0.8 else math.pi for _ in range(maxiter): f = E - e * math.sin(E) - M fp = 1.0 - e * math.cos(E) dE = f / fp E -= dE if abs(dE) < tol: break return E ``` #### От E к положению в плоскости орбиты Истинная аномалия `ν`: $$\tan\frac{\nu}{2} = \sqrt{\frac{1+e}{1-e}}\,\tan\frac{E}{2}$$ или в устойчивой форме через `atan2`: $$\nu = \operatorname{atan2}\left(\sqrt{1-e^2}\sin E,\ \cos E - e\right)$$ Радиус-вектор: $$r = a(1 - e\cos E) = \frac{a(1-e^2)}{1 + e\cos\nu}$$ Прямоугольные координаты в плоскости орбиты: $$x_{orb} = a(\cos E - e), \qquad y_{orb} = a\sqrt{1-e^2}\,\sin E, \qquad z_{orb} = 0$$ #### Поворот в гелиоцентрические эклиптические координаты $$\mathbf{r}_{hel} = R_z(-\Omega)\,R_x(-i)\,R_z(-\omega)\,\mathbf{r}_{orb}$$ В развёрнутом виде: $$x = r\left[\cos\Omega\cos(\omega+\nu) - \sin\Omega\sin(\omega+\nu)\cos i\right]$$ $$y = r\left[\sin\Omega\cos(\omega+\nu) + \cos\Omega\sin(\omega+\nu)\cos i\right]$$ $$z = r\sin(\omega+\nu)\sin i$$ ```python def kepler_to_ecliptic(a, e, i, Om, w, M): """Все углы в градусах, a в а.е. -> (x, y, z) гелиоцентрические, эклиптика.""" i, Om, w = map(math.radians, (i, Om, w)) E = solve_kepler(math.radians(M), e) nu = math.atan2(math.sqrt(1 - e*e) * math.sin(E), math.cos(E) - e) r = a * (1 - e * math.cos(E)) u = w + nu # аргумент широты x = r * (math.cos(Om)*math.cos(u) - math.sin(Om)*math.sin(u)*math.cos(i)) y = r * (math.sin(Om)*math.cos(u) + math.cos(Om)*math.sin(u)*math.cos(i)) z = r * math.sin(u) * math.sin(i) return x, y, z ``` ### 5.3. VSOP87 **VSOP** = *Variations Séculaires des Orbites Planétaires*, разработана в Bureau des Longitudes (Bretagnon & Francou, 1987). Это аналитическая полуаналитическая теория: результат численного интегрирования, разложенный в тригонометрические ряды Пуассона. #### Форма ряда Каждая координата представлена как: $$X(t) = \sum_{k=0}^{5} t^k \sum_{i} A_{ki}\cos\left(B_{ki} + C_{ki}\,t\right)$$ где **`t` — юлианские тысячелетия** от J2000.0: $$t = \frac{JD_{TT} - 2451545.0}{365250}$$ Практически: для каждой координаты есть блоки `L0, L1, L2, L3, L4, L5` (для долготы), `B0..B5` (для широты), `R0..R5` (для радиуса-вектора). Каждый блок — список троек `(A, B, C)`. Итог: $$L = \frac{L_0 + L_1 t + L_2 t^2 + L_3 t^3 + L_4 t^4 + L_5 t^5}{10^8}$$ где `L_k = Σ A_i cos(B_i + C_i t)`. Результат — в радианах (для L, B) и в а. е. (для R). #### Варианты | Вариант | Координаты | Начало отсчёта | Равноденствие | |---|---|---|---| | **VSOP87** | кеплеровы элементы | гелиоцентр. | J2000.0 | | **VSOP87A** | прямоугольные | гелиоцентр. | J2000.0 | | **VSOP87B** | сферические (L, B, R) | гелиоцентр. | J2000.0 | | **VSOP87C** | прямоугольные | гелиоцентр. | равноденствие даты | | **VSOP87D** | сферические (L, B, R) | гелиоцентр. | **равноденствие даты** | | **VSOP87E** | прямоугольные | барицентр. | J2000.0 | Для астрологии практичнее всего **VSOP87D** — сразу даёт эклиптическую долготу и широту в системе равноденствия даты, минуя прецессионные преобразования. #### Точность | Планеты | Гарантированная точность | Интервал | |---|---|---| | Mercury, Venus, EMB, Mars | 1″ | ±4000 лет от J2000 | | Jupiter, Saturn | 1″ | ±2000 лет | | Uranus, Neptune | 1″ | ±6000 лет | Полные ряды содержат десятки тысяч членов. **Meeus (гл. 32, Appendix III)** публикует усечённые ряды VSOP87D, дающие точность ~1″ для 1900–2100 — их вполне достаточно для натальной карты (типичный орбис аспектов — градусы). Плутон в VSOP87 **отсутствует** — для него используются отдельные ряды (Meeus гл. 37, точность 0.1″ для 1885–2099) или численные эфемериды. ```python # Схема вычисления по усечённым рядам VSOP87D (Meeus, Appendix III) # VSOP_L = [L0, L1, L2, L3, L4, L5], каждый — список (A, B, C) def vsop_series(terms_by_power, t): """t — юлианские тысячелетия TT от J2000.""" total = 0.0 for k, terms in enumerate(terms_by_power): s = sum(A * math.cos(B + C * t) for (A, B, C) in terms) total += s * (t ** k) return total / 1e8 def heliocentric_vsop87d(planet_tables, jd_tt): t = (jd_tt - 2451545.0) / 365250.0 L = vsop_series(planet_tables['L'], t) # радианы B = vsop_series(planet_tables['B'], t) # радианы R = vsop_series(planet_tables['R'], t) # а.е. return math.degrees(L) % 360.0, math.degrees(B), R ``` ### 5.4. ELP-2000/82 — теория движения Луны **ELP** = *Éphéméride Lunaire Parisienne*, Chapront-Touzé & Chapront (1983). Полуаналитическая теория, полный ряд содержит **>20 000 членов**. Структура: три ряда (долгота, широта, расстояние), аргументы — комбинации пяти фундаментальных величин (Delaunay-аргументы для Луны) плюс планетные возмущения. **Средние элементы Луны (Meeus гл. 47)**, градусы, `T` — юл. столетия TT: | Элемент | Полином | |---|---| | `L'` — средняя долгота Луны | `218.3164477 + 481267.88123421 T − 0.0015786 T² + T³/538841 − T⁴/65194000` | | `D` — средняя элонгация | `297.8501921 + 445267.1114034 T − 0.0018819 T² + T³/545868 − T⁴/113065000` | | `M` — средняя аномалия Солнца | `357.5291092 + 35999.0502909 T − 0.0001536 T² + T³/24490000` | | `M'` — средняя аномалия Луны | `134.9633964 + 477198.8675055 T + 0.0087414 T² + T³/69699 − T⁴/14712000` | | `F` — аргумент широты | `93.2720950 + 483202.0175233 T − 0.0036539 T² − T³/3526000 + T⁴/863310000` | Дополнительные аргументы (венерианское и юпитерианское возмущения, сплюснутость Земли): ``` A1 = 119.75 + 131.849 T A2 = 53.09 + 479264.290 T A3 = 313.45 + 481266.484 T E = 1 - 0.002516 T - 0.0000074 T² (эксцентриситет орбиты Земли) ``` Множитель `E` применяется к членам, аргумент которых содержит `M` в первой степени; `E²` — во второй. #### Главные периодические члены долготы (Σl, единицы 1e-6 град) | D | M | M′ | F | коэфф. Σl | коэфф. Σr (1e-3 км) | |---|---|---|---|---|---| | 0 | 0 | 1 | 0 | **6288774** | −20905355 | | 2 | 0 | −1 | 0 | **1274027** | −3699111 | | 2 | 0 | 0 | 0 | **658314** | −2955968 | | 0 | 0 | 2 | 0 | **213618** | −569925 | | 0 | 1 | 0 | 0 | −185116 | 48888 | | 0 | 0 | 0 | 2 | −114332 | −3149 | | 2 | 0 | −2 | 0 | 58793 | 246158 | | 2 | −1 | −1 | 0 | 57066 | −152138 | | 2 | 0 | 1 | 0 | 53322 | −170733 | | 2 | −1 | 0 | 0 | 45758 | −204586 | | 0 | 1 | −1 | 0 | −40923 | −129620 | | 1 | 0 | 0 | 0 | −34720 | 108743 | | 0 | 1 | 1 | 0 | −30383 | 104755 | | 2 | 0 | 0 | −2 | 15327 | 10321 | | 0 | 0 | 1 | 2 | −12528 | 0 | | 0 | 0 | 1 | −2 | 10980 | 79661 | | 4 | 0 | −1 | 0 | 10675 | −34782 | | 0 | 0 | 3 | 0 | 10034 | −23210 | | 4 | 0 | −2 | 0 | 8548 | −21636 | | 2 | 1 | −1 | 0 | −7888 | 24208 | #### Главные периодические члены широты (Σb, единицы 1e-6 град) | D | M | M′ | F | коэфф. Σb | |---|---|---|---|---| | 0 | 0 | 0 | 1 | **5128122** | | 0 | 0 | 1 | 1 | **280602** | | 0 | 0 | 1 | −1 | **277693** | | 2 | 0 | 0 | −1 | 173237 | | 2 | 0 | −1 | 1 | 55413 | | 2 | 0 | −1 | −1 | 46271 | | 2 | 0 | 0 | 1 | 32573 | | 0 | 0 | 2 | 1 | 17198 | | 2 | 0 | 1 | −1 | 9266 | | 0 | 0 | 2 | −1 | 8822 | Итоговые формулы (Meeus 47): $$\lambda = L' + \frac{\Sigma l}{10^6} \ \text{[°]}, \qquad \beta = \frac{\Sigma b}{10^6}\ \text{[°]}, \qquad \Delta = 385000.56 + \frac{\Sigma r}{1000}\ \text{[км]}$$ Дополнительные добавки: ``` Σl += 3958·sin(A1) + 1962·sin(L' − F) + 318·sin(A2) Σb += −2235·sin(L') + 382·sin(A3) + 175·sin(A1 − F) + 175·sin(A1 + F) + 127·sin(L' − M') − 115·sin(L' + M') ``` **Точность** усечённого ряда Meeus: ~10″ по долготе, ~4″ по широте. Для полной теории ELP-2000/82 — доли угловой секунды. Названия классических неравенств: главный член 6288774e-6° — главное эллиптическое неравенство; 1274027 — **эвекция** (Птолемей), 658314 — **вариация** (Тихо Браге), −185116 — **годичное неравенство**. ### 5.5. Численные эфемериды JPL (DE4xx) Вместо аналитических рядов — результат прямого численного интегрирования уравнений движения (с релятивистскими поправками, приливами, фигурой Луны), представленный **чебышёвскими полиномами** на интервалах (обычно 32 суток для планет, 4 суток для Луны). | Версия | Год | Интервал | Примечание | |---|---|---|---| | **DE200** | 1981 | 1600–2169 | эпоха B1950 → J2000; долго был стандартом | | **DE405** | 1997 | 1600–2200 | ICRF-привязка, был стандартом до DE430 | | **DE406** | 1997 | −3000…+3000 | «long» версия DE405, меньшая точность интерполяции | | **DE421** | 2008 | 1900–2050 | улучшение на 1–2 порядка против DE405 | | **DE430** | 2013 | 1550–2650 | учитывает жидкое ядро Луны; +50% к DE421 | | **DE431** | 2013 | **−13200…+17191** | long-версия; **база Swiss Ephemeris** | | **DE440** | 2021 | 1550–2650 | +7 лет наблюдений, улучшенная модель | | **DE441** | 2021 | −13200…+17191 | long-версия DE440 | Ключевой нюанс: «длинные» версии (DE431/DE441) **менее точны** в современную эпоху, поскольку в них отключено демпфирование между жидким ядром и мантией Луны — иначе интегрирование на 13 000 лет назад расходится. **Swiss Ephemeris** (Astrodienst, Dieter Koch & Alois Treindl), начиная с версии 2.00, использует **сжатую DE431**: положения планет хранятся как отклонения от аналитической опорной орбиты, что даёт сжатие ~100× при сохранении точности **0.001″** относительно оригинала. Диапазон: 13 201 г. до н. э. — 17 191 г. н. э. Это де-факто стандарт в астрологическом ПО. Альтернатива внутри SE — **Moshier ephemeris** (аналитическая, не требует файлов данных, точность ~0.1″ против DE) и встроенные файлы JPL. ### 5.6. Гелиоцентрические → геоцентрические координаты Астрология работает с **геоцентрическими** положениями. Преобразование — простое векторное вычитание: $$\mathbf{r}_{geo} = \mathbf{r}_{hel,planet} - \mathbf{r}_{hel,Earth}$$ Пошагово: 1. Вычислить гелиоцентрические прямоугольные `(x_p, y_p, z_p)` планеты. 2. Вычислить гелиоцентрические прямоугольные `(x_E, y_E, z_E)` Земли (из VSOP87 для EMB или Earth). 3. Вычесть: ``` X = x_p − x_E Y = y_p − y_E Z = z_p − z_E ``` 4. Перейти к сферическим: ``` λ = atan2(Y, X) β = atan2(Z, sqrt(X² + Y²)) Δ = sqrt(X² + Y² + Z²) # геоцентрическое расстояние, а.е. ``` Для **Солнца** геоцентрические координаты — это гелиоцентрические координаты Земли, повёрнутые на 180°: ``` λ_Sun = L_Earth + 180° β_Sun = −B_Earth ``` ### 5.7. Поправка за время распространения света Свет от планеты идёт до Земли конечное время; мы видим планету там, где она была `τ` назад. $$\tau = \frac{\Delta}{c} = 0.0057755183 \cdot \Delta \ \text{[суток]},\quad \Delta \text{ в а. е.}$$ Константа `0.0057755183` сут/а.е. = 499.004782 с / 86400. (Это `1/c` в этих единицах; светопрохождение а. е. = 499.0047838 с.) **Итеративный алгоритм:** ``` Δ₀ = |r_planet(t) − r_Earth(t)| # первое приближение повторять: τ = 0.0057755183 · Δ r_planet пересчитать на момент (t − τ) r_Earth оставить на момент t # Земля — наблюдатель, «сейчас» Δ = |r_planet(t−τ) − r_Earth(t)| пока |Δ_new − Δ_old| > 1e-9 ``` Сходится за 2–3 итерации. Величина эффекта: для Юпитера τ ≈ 35–50 мин, смещение долготы до **~25″**; для Луны τ ≈ 1.3 с, ~0.7″ (уже включено в константу 218.3164477 теории ELP). Для Солнца τ = 8.32 мин → 20.5″. ```python LIGHT_TIME_AU = 0.0057755183 # суток на а.е. def apparent_geocentric(planet_pos_fn, earth_pos_fn, jd_tt, iters=3): xE, yE, zE = earth_pos_fn(jd_tt) t = jd_tt for _ in range(iters): xP, yP, zP = planet_pos_fn(t) X, Y, Z = xP - xE, yP - yE, zP - zE dist = math.sqrt(X*X + Y*Y + Z*Z) t = jd_tt - LIGHT_TIME_AU * dist lam = math.degrees(math.atan2(Y, X)) % 360.0 bet = math.degrees(math.atan2(Z, math.hypot(X, Y))) return lam, bet, dist ``` ### 5.8. Аберрация Конечная скорость света в сочетании с движением наблюдателя смещает видимое направление в сторону движения Земли. **Постоянная аберрации** (IAU 1976): `κ = 20.49552″`. **Годичная аберрация**, приближённая форма (Meeus 23.2): $$\Delta\lambda = \frac{-\kappa\cos(\odot - \lambda) + e\kappa\cos(\varpi - \lambda)}{\cos\beta}$$ $$\Delta\beta = -\kappa\sin\beta\left[\sin(\odot - \lambda) - e\sin(\varpi - \lambda)\right]$$ где `⊙` — истинная долгота Солнца, `e` — эксцентриситет орбиты Земли, `ϖ` — долгота перигелия орбиты Земли: ``` e = 0.016708634 − 0.000042037 T − 0.0000001267 T² ϖ = 102.93735 + 1.71946 T + 0.00046 T² ``` **Точная (векторная) форма** — предпочтительна: $$\mathbf{u}_{app} = \frac{\mathbf{u} + \mathbf{V}\left[\left(1 + \frac{\mathbf{u}\cdot\mathbf{V}}{1+1/\gamma}\right)\right]}{1 + \mathbf{u}\cdot\mathbf{V}}$$ где `V = v_Earth/c` (безразмерная скорость барицентрического движения Земли), `u` — единичный вектор направления, `γ` — лоренц-фактор. В нерелятивистском приближении просто `u_app ≈ u + V` с последующей нормировкой — точность лучше 0.001″. **Важно:** если применена поправка за время распространения света, то *часть* эффекта уже учтена. Для планет корректный порядок: 1. light-time correction (даёт **astrometric** положение), 2. аберрация (даёт **apparent** относительно среднего равноденствия), 3. прецессия + нутация (даёт **apparent** относительно истинного равноденствия даты). ### 5.9. True vs Apparent positions | Тип положения | Что учтено | |---|---| | **Geometric** | чистая геометрия, мгновенные позиции | | **Astrometric** | + light-time (положение в каталожной системе J2000) | | **True (of date)** | + прецессия, нутация; но **без** аберрации | | **Apparent** | + аберрация, прецессия, нутация — то, что реально видно | | **Topocentric** | + параллакс наблюдателя (сдвиг от центра Земли к точке на поверхности) | Астрология традиционно использует **apparent geocentric** положения относительно **истинного равноденствия даты** — именно это выдаёт Swiss Ephemeris по умолчанию (флаг `SEFLG_SWIEPH` без модификаторов). **Топоцентрическая поправка** существенна только для Луны: горизонтальный параллакс Луны ≈ **57′**, то есть почти градус! Формула: $$\sin\pi = \frac{6378.14}{\Delta_{km}}$$ Для планет параллакс < 0.5″ (Венера в нижнем соединении) — обычно игнорируется. Некоторые школы (напр. КП) требуют топоцентрических позиций. ### 5.10. Ретроградность Планета **ретроградна**, когда её геоцентрическая эклиптическая долгота убывает. Формально: $$\frac{d\lambda}{dt} < 0 \ \Longrightarrow\ \text{retrograde (R)}$$ **Практический численный метод:** ```python def daily_motion(lon_fn, jd, h=0.5): """Суточное движение в градусах/сут (центральная разность).""" l1 = lon_fn(jd - h) l2 = lon_fn(jd + h) d = (l2 - l1) % 360.0 if d > 180.0: d -= 360.0 # раскрутка через 0°/360° return d / (2 * h) def is_retrograde(lon_fn, jd): return daily_motion(lon_fn, jd) < 0.0 ``` **Критично:** нормализация разности через `mod 360` с последующим приведением в `(−180°, +180°]` — без этого переход через 0° Овна даст ложную ретроградность. Swiss Ephemeris возвращает скорость напрямую при флаге `SEFLG_SPEED`: поле `xx[3]` в результате `swe_calc()` — это `dλ/dt` в град/сут. **Станции (stations)** — моменты `dλ/dt = 0`: переход директ→ретро (*station retrograde*) и обратно (*station direct*). Находятся численно (бисекция / метод Брента по функции суточного движения). Типичные значения: | Тело | Суточное движение (среднее) | Ретро-период | Доля времени в R | |---|---|---|---| | Sun | +0.9856°/сут | никогда | 0% | | Moon | +13.176°/сут | никогда | 0% | | Mercury | +1.383° | 3 раза/год по ~21 сут | ~19% | | Venus | +1.602° | раз в 584 сут по ~42 сут | ~7% | | Mars | +0.524° | раз в 2.13 года по ~72 сут | ~9% | | Jupiter | +0.083° | ежегодно ~120 сут | ~30% | | Saturn | +0.033° | ежегодно ~138 сут | ~37% | | Uranus | +0.012° | ежегодно ~151 сут | ~41% | | Neptune | +0.006° | ежегодно ~158 сут | ~43% | | Pluto | +0.004° | ежегодно ~160 сут | ~44% | | True Node | −0.053° | **почти всегда R** | ~99% | | Mean Node | −0.0529539° | **всегда R** | 100% | --- ## 6. ЛУННЫЕ УЗЛЫ, ЛИЛИТ, ПРИАП ### 6.1. Природа лунных узлов Орбита Луны наклонена к эклиптике на **5.1454°** (`MOON_MEAN_INCL = 5.1453964` в Swiss Ephemeris, по AA 1996, D2). Точки пересечения орбиты Луны с эклиптикой — **узлы**: - **Восходящий узел (☊, North Node, Rahu)** — Луна переходит из южной полусферы в северную; - **Нисходящий узел (☋, South Node, Ketu)** — ровно напротив, `☋ = ☊ + 180°`. Узлы **регрессируют** (движутся навстречу знакам) с периодом **18.6 года** (точнее: 6798.383 суток = 18.5996 тропических года). Средняя скорость: **−0.0529539° в сутки** = −19.3414° в год. Этот же 18.6-летний цикл — источник главного члена нутации (§3.6) и причина «саросных» серий затмений. ### 6.2. Средний узел (Mean Node) Полином средней долготы восходящего узла Луны, градусы, `T` — юлианские столетия TT от J2000.0: $$\Omega = 125.0445479 - 1934.1362891\,T + 0.0020754\,T^2 + \frac{T^3}{467441} - \frac{T^4}{60616000}$$ (Meeus, гл. 47. Эквивалентный вариант из гл. 22, используемый для нутации: `Ω = 125.04452 − 1934.136261 T + 0.0020708 T² + T³/450000` — различие менее 0.01″ на интервале столетий.) Мгновенная скорость: $$\frac{d\Omega}{dT} = -1934.1362891 + 2\cdot0.0020754\,T + \dots \ \text{[°/юл. столетие]}$$ в сутки: разделить на 36525 → ≈ **−0.05295392°/сут** (всегда отрицательна). Средний узел **не осциллирует** — он монотонно и равномерно регрессирует. Именно поэтому большинство традиций джйотиша (Rahu/Ketu) используют средний узел. ```python def mean_node(jd_tt): """Средний восходящий узел Луны, градусы.""" T = (jd_tt - 2451545.0) / 36525.0 Om = (125.0445479 - 1934.1362891*T + 0.0020754*T*T + T**3/467441.0 - T**4/60616000.0) return Om % 360.0 def mean_node_speed(jd_tt): """Скорость в град/сут (всегда < 0).""" T = (jd_tt - 2451545.0) / 36525.0 d = (-1934.1362891 + 2*0.0020754*T + 3*T*T/467441.0 - 4*T**3/60616000.0) return d / 36525.0 ``` ### 6.3. Истинный узел (True Node) **True Node** (osculating node) — точка пересечения *мгновенной оскулирующей орбиты* Луны с эклиптикой. Вычисляется из мгновенного вектора положения и скорости Луны: 1. Взять геоцентрические прямоугольные `r` и `v` Луны на момент `t` (из полной теории — ELP или DE). 2. Вектор момента импульса: `h = r × v`. 3. Вектор линии узлов: `n = ẑ × h = (−h_y, h_x, 0)`. 4. Долгота восходящего узла: `Ω = atan2(n_y, n_x) = atan2(h_x, −h_y)`. ```python def true_node(r, v): """r, v — геоцентрические эклиптические векторы Луны.""" hx = r[1]*v[2] - r[2]*v[1] hy = r[2]*v[0] - r[0]*v[2] # hz не нужен return math.degrees(math.atan2(hx, -hy)) % 360.0 ``` Swiss Ephemeris вычисляет истинный узел (`SE_TRUE_NODE`) именно так, через оскулирующие элементы, полученные из положения и скорости Луны. #### Mean vs True: различия | Свойство | Mean Node | True Node | |---|---|---| | Движение | строго монотонно назад | осциллирует | | Периоды директного движения | нет | **есть**, ~25.6 эпизода в год | | Доля времени в директном движении | 0% | **≈ 25.7%** ✅ измерено | | Средняя длительность эпизода | — | **3.7 суток** (от 1 до 9) ✅ | | Амплитуда осцилляции | — | до **1.93°** ✅ измерено | | Главный период осцилляции | — | ~173.3 суток (полгода драконического) | | Применение | джйотиш (Rahu/Ketu), классика | западная астрология (часто) | > ⚠️ **Исправлено по результатам измерения.** Ранее здесь стояло «периоды > директного движения — короткие эпизоды, примерно дважды в 173-суточном цикле» > и «амплитуда ±1.5°». Прямой расчёт по Swiss Ephemeris за 2000–2020 гг. > (7305 суток, шаг 1 сутки) даёт другую картину: > > - директное движение занимает **25.7% времени**, а не единицы процентов; > - эпизодов **513 за 20 лет ≈ 25.6 в год**, а не ~2 за 173 суток; > - максимальное отклонение True от Mean — **1.93°**, а не 1.5°. > > Практический смысл не меняется (выбор Mean/True сдвигает узел почти на два > градуса и может перевести его через границу знака), но True Node идёт вперёд > заметно чаще, чем принято считать. Осцилляция True Node вызвана в основном солнечным возмущением; главный член: $$\Omega_{true} \approx \Omega_{mean} - 1.4979°\sin(2(L_{\odot} - \Omega)) - 0.1500°\sin M_{\odot} - 0.1226°\sin(2L_{\odot}) + \dots$$ Разница может достигать **1°40′**, что переводит узел через границу знака — поэтому выбор Mean/True меняет карту. **Периоды директного движения True Node:** короткие интервалы (обычно несколько суток), возникающие когда производная осциллирующего члена превышает средний регресс. Происходят примерно дважды в 173-суточном цикле. ### 6.4. Лилит / Чёрная Луна Орбита Луны — эллипс, в одном фокусе которого Земля. **Лилит** (Чёрная Луна, Black Moon Lilith) — это **второй, пустой фокус** лунного эллипса, или, в другой трактовке, **апогей** лунной орбиты. Обе точки лежат в одном направлении от Земли, поэтому эклиптическая долгота у них одна и та же — различие только в расстоянии. #### Mean Lilith (средняя Чёрная Луна) — `SE_MEAN_APOG` Апогей = точка, противоположная перигею. Перигей задаётся долготой перигея лунной орбиты: $$\varpi_{Moon} = L' - M'$$ где `L'` — средняя долгота Луны, `M'` — средняя аномалия Луны (§5.4). Следовательно: $$\boxed{\text{Lilith}_{mean} = L' - M' + 180°}$$ Это в точности то, что делает Swiss Ephemeris (`swemmoon.c`, `swi_mean_apog()`): ```c pol[0] = swi_mod2PI((SWELP - MP) * STR + PI); /* SWELP = L', MP = M' */ pol[1] = 0; /* широта = 0 */ pol[2] = MOON_MEAN_DIST * (1 + MOON_MEAN_ECC) / AUNIT; /* r апогея */ ``` Раскрывая полиномы Meeus: $$\varpi_{Moon} = (218.3164477 - 134.9633964) + (481267.88123421 - 477198.8675055)T + \dots$$ $$\boxed{\varpi_{Moon} = 83.3530513 + 4069.0137287\,T - 0.0103200\,T^2 - \frac{T^3}{80053} + \frac{T^4}{18999000}}$$ (Коэффициенты получены почленным вычитанием полиномов `L'` и `M'`.) Тогда `Lilith_mean = ϖ_Moon + 180°`. Период обращения апсид: `360/4069.0137287 × 100 = 8.8475 года` (**8 лет 10 месяцев** — известный цикл прецессии лунных апсид). Средняя скорость: `+0.111404°/сут` — **всегда директная**. Константы для расстояния: ``` MOON_MEAN_DIST = 384400000.0 м (AA 1996, F2) MOON_MEAN_ECC = 0.054900489 (AA 1996, F2) MOON_MEAN_INCL = 5.1453964° (AA 1996, D2) r_apogee = 384400 × (1 + 0.054900489) = 405504.0 км r_perigee = 384400 × (1 − 0.054900489) = 363296.0 км ``` ```python def mean_lilith(jd_tt): """Средняя Чёрная Луна (Mean Apogee), градусы.""" T = (jd_tt - 2451545.0) / 36525.0 Lp = (218.3164477 + 481267.88123421*T - 0.0015786*T*T + T**3/538841.0 - T**4/65194000.0) Mp = (134.9633964 + 477198.8675055*T + 0.0087414*T*T + T**3/69699.0 - T**4/14712000.0) return (Lp - Mp + 180.0) % 360.0 ``` Широта Mean Lilith по определению **равна нулю** (это точка, спроецированная на эклиптику). #### True / Osculating Lilith — `SE_OSCU_APOG` Мгновенный апогей оскулирующей орбиты Луны, вычисляемый из `r` и `v`: 1. Вектор эксцентриситета: $$\mathbf{e} = \frac{\mathbf{v}\times\mathbf{h}}{\mu} - \frac{\mathbf{r}}{|\mathbf{r}|}$$ где `h = r × v`, `μ = G(M_E + M_M)`. 2. `e` указывает на **перигей**; апогей — противоположное направление: $$\text{Lilith}_{osc} = \operatorname{atan2}(-e_y, -e_x)$$ Осцилляции огромны: **до ±30°** относительно Mean Lilith, движение часто ретроградное. Период колебаний ~206 суток. В отличие от узлов, различие Mean/True Lilith настолько велико, что это фактически **разные точки**, и школы, использующие их, не взаимозаменяемы. Swiss Ephemeris также предлагает: - `SE_INTP_APOG` — «интерполированная» (natural) Лилит: сглаженная версия оскулирующей, построенная интерполяцией между реальными апогеями. Компромисс между Mean и True; введена в SE 2.00. - `SE_INTP_PERG` — интерполированный перигей. | Вариант | Флаг SE | Характер | Амплитуда откл. от средней | |---|---|---|---| | Mean Apogee | `SE_MEAN_APOG` (12) | гладкий, всегда директный | 0 | | Osculating Apogee | `SE_OSCU_APOG` (13) | сильно осциллирует, часто R | ±30° | | Interpolated Apogee | `SE_INTP_APOG` (21) | умеренно осциллирует | ±5–7° | | Interpolated Perigee | `SE_INTP_PERG` (22) | ↑ + 180° | — | ### 6.5. Приап (Priapus) **Приап** — точка, противоположная Лилит, то есть **перигей** лунной орбиты (или заполненный фокус, в зависимости от трактовки): $$\boxed{\text{Priapus} = \text{Lilith} + 180° = L' - M'}$$ Для средней версии: $$\text{Priapus}_{mean} = \varpi_{Moon} = 83.3530513 + 4069.0137287\,T - 0.0103200\,T^2 - \frac{T^3}{80053} + \frac{T^4}{18999000}$$ Swiss Ephemeris прямого «Приапа» не имеет; в оскулирующей форме это `SE_INTP_PERG` или просто `SE_OSCU_APOG + 180°`. Терминологическая путаница: некоторые школы называют Приапом не перигей, а *второй фокус со стороны, противоположной Лилит* — что при трактовке Лилит как пустого фокуса даёт ту же точку. В расчётах достаточно запомнить: **Приап = Лилит + 180°**. ### 6.6. Сводка «фиктивных» точек лунной орбиты | Точка | Формула (средняя) | Период | Направление | |---|---|---|---| | Восходящий узел ☊ | `125.0445479 − 1934.1362891 T + ...` | 18.60 года | ретро (−0.0530°/сут) | | Нисходящий узел ☋ | `☊ + 180°` | 18.60 года | ретро | | Лилит (апогей) | `L' − M' + 180°` | 8.85 года | директ (+0.1114°/сут) | | Приап (перигей) | `L' − M'` | 8.85 года | директ | Обратите внимание: узлы и апсиды движутся **в противоположных направлениях** — это фундаментальное свойство возмущённой кеплеровой орбиты в поле третьего тела. --- ## ПРИЛОЖЕНИЕ A. Сводка ключевых констант | Константа | Значение | Комментарий | |---|---|---| | JD для J2000.0 | 2451545.0 | 2000-01-01 12:00 TT | | Суток в юл. столетии | 36525 | `T = (JD − 2451545)/36525` | | Суток в юл. тысячелетии | 365250 | `t = T/10`, для VSOP87 | | MJD-смещение | 2400000.5 | `MJD = JD − 2400000.5` | | TT − TAI | 32.184 с | точно, по определению | | TAI − UTC (2026) | 37 с | с 2017-01-01 | | ε₀ (J2000, IAU 1980) | 23°26′21.448″ = 23.4392911° | | | ε₀ (J2000, IAU 2006) | 23°26′21.406″ = 23.4392794° | | | Общая прецессия | 5028.796195″/столетие = 50.28796″/год | 1° за 71.6 года | | Платонический год | ≈ 25772 года | полный цикл прецессии | | Постоянная аберрации κ | 20.49552″ | | | Светопрохождение а.е. | 499.004782 с = 0.0057755183 сут | | | Скорость света | 299792458 м/с | точно | | а. е. (AU) | 149597870700 м | точно, IAU 2012 | | Экв. радиус Земли | 6378136.6 м (6378.14 км) | | | Сплюснутость Земли | 1/298.25642 | WGS84: 1/298.257223563 | | Среднее расстояние Луны | 384400 км | | | Эксцентриситет орбиты Луны | 0.054900489 | | | Наклонение орбиты Луны | 5.1453964° | | | Драконический месяц | 27.212221 сут | от узла до узла | | Аномалистический месяц | 27.554550 сут | от перигея до перигея | | Синодический месяц | 29.530589 сут | от новолуния | | Сидерический месяц | 27.321662 сут | относительно звёзд | | Период регрессии узлов | 6798.383 сут = 18.5996 года | | | Период прецессии апсид | 3232.6 сут = 8.8475 года | | | Тропический год | 365.24219 сут | | | Сидерический год | 365.25636 сут | | | Звёздные сутки / сутки UT | 1.00273790935 | | | Град. звёздного времени/сут | 360.98564736629 | | ## ПРИЛОЖЕНИЕ B. Рекомендуемый порядок расчёта натальной карты ``` ВХОД: дата, время (локальное), место (φ широта, λ долгота), часовой пояс 1. Локальное время → UTC использовать IANA tz database с историческими правилами (DST, декретное время, смены поясов) 2. UTC → JD_UT алгоритм Meeus §1.1 3. ΔT(год) → JD_TT = JD_UT + ΔT/86400 полиномы Espenak-Meeus §1.4 или таблица IERS 4. T = (JD_TT − 2451545.0)/36525 5. Нутация: Δψ, Δε (§3.6) Наклон: ε₀ (Laskar), ε = ε₀ + Δε 6. GMST(JD_UT) → GAST = GMST + Δψ·cos ε RAMC = LST = GAST + λ (§2) 7. Положения тел на JD_TT: - Солнце: из VSOP87 Земли + 180° - Луна: ELP-2000/82 (или DE) - планеты: VSOP87D / DE431 (Swiss Ephemeris) - light-time correction (итеративно) - аберрация - нутация по долготе (+Δψ) → apparent of date → λ, β, Δ, dλ/dt 8. Ретроградность: знак dλ/dt (§5.10) 9. Узлы: mean / true (§6.2, 6.3) Лилит: mean / osculating (§6.4) 10. Дома: из RAMC, φ, ε MC = atan2(sin(RAMC), cos(RAMC)·cos ε) ASC = atan2(−cos(RAMC), sin(RAMC)·cos ε + tan φ·sin ε) далее — по выбранной системе (Placidus, Koch, Regiomontanus, Campanus, Equal, Whole Sign, Porphyry, Alcabitius, Morinus...) 11. Если сидерическая карта: ayanamsha(JD_TT) по выбранной системе (§4) λ_sid = λ_trop − ayanamsha (аналогично для ASC, MC и куспидов) 12. Аспекты, достоинства, интерпретация ``` **Формулы ASC/MC** (для полноты, хотя дома вне заявленного объёма): $$MC = \arctan\frac{\tan(RAMC)}{\cos\varepsilon} \quad\text{(с учётом квадранта через atan2)}$$ $$ASC = \operatorname{atan2}\Big(\cos(RAMC),\ -\big(\sin(RAMC)\cos\varepsilon + \tan\varphi\sin\varepsilon\big)\Big)$$ Для широт |φ| > 66.5° некоторые системы домов (Placidus, Koch) **не определены** — требуется fallback (обычно Porphyry или Whole Sign). ## ПРИЛОЖЕНИЕ C. Точность: что на что влияет | Источник ошибки | Типичная величина | Влияние на карту | |---|---|---| | Неверный часовой пояс / DST | 1 час | **MC сдвигается на 15°** — катастрофа | | Неточное время рождения ±5 мин | 5 мин | ASC ±1.25°, дома сдвигаются | | Игнорирование ΔT (совр. эпоха) | ~69 с | Луна 36″, MC 17′ | | Игнорирование ΔT (1600 г.) | ~120 с | Луна 66″ | | Mean vs True Node | до 1°40′ | смена знака узла возможна | | Mean vs Osculating Lilith | до 30° | **разные точки**, не сравнимы | | Выбор айанамши (Lahiri vs Raman) | 1.5° | сдвиг накшатр, иногда знака | | Игнорирование нутации | до 17″ | несущественно | | GMST 1982 vs 2006 | миллисекунды дуги | несущественно | | Усечённый VSOP87 (Meeus) vs DE431 | ~1″ | несущественно | | Игнорирование аберрации | 20.5″ | практически несущественно | | Топоцентрика vs геоцентрика (Луна) | до 57′ | **существенно**, если школа требует | | Топоцентрика (планеты) | < 0.5″ | несущественно | **Вывод:** доминирующий источник ошибок в натальной карте — не астрономия, а **точность времени рождения и корректность часового пояса**. Астрономическая часть при использовании Swiss Ephemeris даёт точность порядка 0.001″, что на семь порядков превосходит требования астрологической практики. ## ПРИЛОЖЕНИЕ D. Источники - Jean Meeus. *Astronomical Algorithms*, 2nd ed., Willmann-Bell, 1998. Главы 7 (JD), 10 (ΔT), 12 (звёздное время), 13 (координаты), 21 (прецессия), 22 (нутация и наклон), 25 (Солнце), 31–32 (VSOP87), 47 (Луна). - Swiss Ephemeris: https://www.astro.com/swisseph/swisseph.htm и исходный код (`sweph.h` — таблица айанамш, `swemmoon.c` — узлы и апогей, `swephlib.c` — прецессия, нутация, ΔT). - Espenak & Meeus, *Polynomial Expressions for Delta T*: https://eclipse.gsfc.nasa.gov/SEcat5/deltatpoly.html - Bretagnon P., Francou G. *Planetary theories in rectangular and spherical variables: VSOP87 solutions*, A&A 202, 309 (1988). - Chapront-Touzé M., Chapront J. *ELP-2000/82*, A&A 124, 50 (1983). - Park R. S. et al. *The JPL Planetary and Lunar Ephemerides DE440 and DE441*, AJ 161, 105 (2021): https://ssd.jpl.nasa.gov/doc/Park.2021.AJ.DE440.pdf - Capitaine N., Wallace P. T., Chapront J. *Expressions for IAU 2000 precession quantities*, A&A 412, 567 (2003). - IERS Conventions (2010), Technical Note 36. - IANA Time Zone Database: https://www.iana.org/time-zones --- ## ПРИМЕЧАНИЯ ДЛЯ ВЫЗЫВАЮЩЕГО АГЕНТА **Объём:** ~2000 строк Markdown. Всё содержимое выше — готовый документ для сохранения в файл. **Верификация численных данных.** Ключевые формулы проверены вычислительно против опубликованных примеров Meeus: - JD-алгоритм: J2000 → 2451545.0 ✓; 1987-04-10.0 → 2446895.5 ✓ - GMST (пример 12.a): получено 13h10m46.3668s — **точное совпадение** с книгой - Средний наклон (Laskar, пример 22.a): 23.44094629° — **точное совпадение** (23°26′27.407″) - Нутация (пример 22.a): 6 ведущих членов дают Δψ = −3.777″ против книжного −3.788″ (полный ряд), Δε = +9.471″ против +9.443″ — расхождение ожидаемо и покрывается младшими членами - Lahiri на J2000 по полиному: 23.857° против официального ICRC 23.853222° — расхождение объясняется разными моделями прецессии, отмечено в тексте **Источник данных по айанамшам.** Таблица из 47 систем (§4.5) извлечена напрямую из исходника Swiss Ephemeris `sweph.h` (массив `ayanamsa[]`, структура `aya_init`) — это первичный, а не вторичный источник. Аналогично формула Mean Lilith подтверждена по коду `swemmoon.c::swi_mean_apog()`: `pol[0] = (SWELP − MP) + 180°`, и константы `MOON_MEAN_DIST/ECC/INCL` — из `sweph.h`. **Оговорка по точности отдельных чисел.** Значения айанамш на J2000 в §4.7 помечены как ориентировочные: они посчитаны мной по полиному P03, тогда как SE для части систем применяет исторические модели прецессии (Newcomb, IAU 1976). Расхождения — секунды дуги. Официальное ICRC-значение Lahiri (23.853222°) приведено отдельно как точное. **Инцидент в процессе работы.** Параллельно работавший агент перезаписал мой файл `p1.md` в scratchpad своим содержимым (интерпретационный справочник по натальной карте — история астрологии, знаки, дома). Раздел 1 (системы времени) восстановлен из контекста и включён в отчёт полностью; потерь содержимого нет. Файлы `p2.md`–`p5.md` (разделы 2–6 и приложения) в scratchpad целы, но полный документ выше самодостаточен — сохранять следует именно его. **Не покрыто (сознательно, вне рамок задания):** системы домов подробно (даны только формулы ASC/MC и перечень систем), астероиды и Хирон, фиксированные звёзды, техники прогнозирования. --- ## Приложение: независимая верификация исполнением кода Всё проверено запуском Python с pyswisseph 2.10.03 против живой Swiss Ephemeris. ### ✅ Подтверждено точно | Проверка | Результат | |---|---| | JD: 2000-01-01 12:00 → 2451545.0 | точно | | JD: −4712-01-01 12:00 (юлиан.) → 0.0 | точно | | JD: −1000-01-01 (юлиан.) → 1355807.5 | точно | | Граница календарей 1582-10-04 → 10-15 = соседние сутки | точно | | **GMST, Meeus 12.a** (1987-04-10 0h) | **13ч10м46.3668с**, Δ = 0.00002 с | | **GMST, Meeus 12.b** (1987-04-10 19:21) | **8ч34м57.0896с**, Δ = 0.00002 с | | ε на J2000 = 23.43929111° | точно | | ΔT на J2000 = 63.8289 с | Δ = 0.00002 с | | **Формула True Node** `atan2(hx, −hy)` из §6.3 | **Δ = 0.22″** от SwissEph ✅ | | Полином Mean Node (Meeus) | Δ = 14″ от SwissEph (разные модели — норма) | | Скорость Mean Node | −0.0529518 °/сут (заявлено −0.0529539) | ### ⚠️ Исправлено по результатам проверки **1. Таблица аянамс (§4.7) — заменена целиком.** Вычисленные «по формуле» значения расходились с реальными до **265″ (4.4′)**. Верны только Lahiri и Fagan/Bradley; шесть остальных были неточны. Таблица заменена на значения из `swe_get_ayanamsa_ut()` и расширена до 20 систем. **2. Поведение True Node (§6.3) — уточнено.** Измерение за 2000–2020 гг. (7305 суток, шаг 1 сутки): | Утверждалось | Измерено | |---|---| | директные эпизоды «примерно дважды в 173-суточном цикле» | **513 эпизодов за 20 лет ≈ 25.6 в год** | | — | директное движение **25.7% всего времени** | | амплитуда ±1.5° | **до 1.93°** | | — | средняя длительность эпизода **3.7 суток** (1–9) | ### Дополнительно измерено: Лилит Расхождение средней и оскулирующей Лилит за 2000–2020 гг.: | | Значение | |---|---| | Минимум \|Mean − Oscu\| | 0.004° | | **Максимум \|Mean − Oscu\|** | **30.08°** | | На J2000.0 | Mean 263.464°, Oscu 252.979°, разница 10.485° | Это подтверждает предупреждение из [основ](../01-osnovy/00-chto-takoe-natalnaya-karta.md): выбор типа Лилит меняет положение **на целый знак и больше**. Из всех развилок в карте эта — самая радикальная. ### Готовый скрипт самопроверки ```python import swisseph as swe, math def self_test(): # 1. Julian Day assert swe.julday(2000, 1, 1, 12.0, swe.GREG_CAL) == 2451545.0 assert swe.julday(-4712, 1, 1, 12.0, swe.JUL_CAL) == 0.0 # 2. GMST — эталон Meeus 12.a def gmst_deg(jd): d = jd - 2451545.0; T = d / 36525.0 return (280.46061837 + 360.98564736629*d + 0.000387933*T*T - T**3/38710000.0) % 360.0 assert abs(gmst_deg(2446895.5)/15.0 - (13 + 10/60 + 46.3668/3600)) < 1e-6 # 3. ΔT assert abs(swe.deltat(2451545.0)*86400 - 63.8289) < 0.01 # 4. Аянамсы — брать ТОЛЬКО из библиотеки swe.set_sid_mode(swe.SIDM_LAHIRI, 0, 0) assert abs(swe.get_ayanamsa_ut(2451545.0) - 23.857092) < 1e-4 # 5. True Node через момент импульса F = swe.FLG_SWIEPH | swe.FLG_SPEED | swe.FLG_XYZ xx, _ = swe.calc_ut(2451545.0, swe.MOON, F) r, v = xx[0:3], xx[3:6] hx = r[1]*v[2] - r[2]*v[1] hy = r[2]*v[0] - r[0]*v[2] node = math.degrees(math.atan2(hx, -hy)) % 360.0 ref = swe.calc_ut(2451545.0, swe.TRUE_NODE, swe.FLG_SWIEPH)[0][0] assert abs(((node - ref + 180) % 360) - 180) < 0.01 print("Все проверки пройдены ✓") self_test() ``` ### Главный практический вывод **Аянамсу, ΔT и положения тел всегда брать из библиотеки, а не считать по формуле из статьи.** Формулы времени и координат (JD, GMST, ε, узлы через момент импульса) воспроизводятся точно и их можно реализовать самому. А вот аянамсы и модели прецессии содержат десятки соглашений, где ошибка в единицы угловых минут возникает незаметно.