Аналемма Солнца

02 Sep 2026
by ignat

Для получения математической функции аналеммы Солнца необходимо рассчитать две координаты: вертикальное смещение (склонение Солнца δ) и горизонтальное смещение (уравнение времени EoT) в зависимости от дня года (N).
Форма «восьмерки» возникает из-за наклона земной оси (влияет на высоту) и эллиптической орбиты Земли (влияет на скорость движения и смещение по горизонтали). [1]
Ниже приведено пошаговое руководство по выводу и расчету функции аналеммы.

1. Переменная времени (день года)

В качестве аргумента функции используется порядковый номер дня в году N (от 1 для 1 января до 365 для 31 декабря).
Для удобства расчетов вычисляется средняя аномалия Земли или угловая координата дня B (в радианах):
(Здесь 81 — это приблизительное число дней от начала года до весеннего равноденствия).

2. Вертикальная ось: Склонение Солнца (δ)

Склонение определяет высоту Солнца над небесным экватором. Простейшая аппроксимация (формула Купера) имеет вид: [1]

Для высокой точности используют гармоники ряда Фурье (в радианах):

где

3. Горизонтальная ось: Уравнение времени (EoT)

Уравнение времени (Equation of Time) показывает разницу между истинным солнечным временем и средним временем в минутах. Оно складывается из двух факторов: [12]
  • Эффект эксцентриситета (орбита Земли — эллипс):  
  • Эффект наклона оси (эклиптика наклонена к экватору): 
Стандартная расчетная формула EoT (в минутах):

4. Параметрическая функция аналеммы

Чтобы перевести эти значения в угловые координаты на небесной сфере (для фиксированного момента времени, например, среднего полдня): [12]
  • Координата X (горизонтальный угол / прямое восхождение):
    Так как Земля поворачивается на 15° за 1 час (или на 1° за 4 минуты), смещение по оси X в градусах составит:
  • Координата Y (вертикальный угол / склонение):
Параметрическая функция аналеммы задается системой уравнений для :

Как получить график в Python

С помощью простого скрипта можно визуализировать полученную функцию:


import numpy as np
import matplotlib.pyplot as plt

N = np.arange(1, 366)
B = (2 * np.pi / 365) * (N – 81)

# Уравнение времени в минутах и перевод в градусы смещения (X)
EoT = 9.87 * np.sin(2 * B) – 7.67 * np.cos(B) – 1.5 * np.sin(B)
X = -EoT / 4 # 1 градус = 4 минуты

# Склонение в градусах (Y)
Y = 23.44 * np.sin((2 * np.pi / 365) * (N – 80))

plt.figure(figsize=(6, 8))
plt.plot(X, Y, ‘r-‘, label=’Аналемма Солнца’)
plt.title(‘Математическая аналемма’)
plt.xlabel(‘Смещение по горизонтали (градусы)’)
plt.ylabel(‘Склонение / Высота (градусы)’)
plt.grid(True)
plt.axvline(0, color=’black’, linewidth=0.5)
plt.axhline(0, color=’black’, linewidth=0.5)
plt.show()

Minecraft Edu © 2026