- PVSM.RU - https://www.pvsm.ru -

Геометрия ОТО на Python: рисуем эргосферу, черную дыру и фотонную сферу в различных метриках

В этой статье мы напишем код для математического моделирования и компьютерной визуализации чёрных дыр, а также запишем ключевые уравнения, описывающие их.

Самое главное уравнение‑это уравнение поля Эйнштейна в общей теории относительности (Источник [1] [1]):

R_{munu} - frac{1}{2} R g_{munu} + Lambda g_{munu}=frac{8pi G}{c^4} T_{munu}.

Где:

R_{munu}

  • ​ — тензор Риччи,

  • R — скалярная кривизна,

g_{munu}

  • ​ — метрический тензор,

  • Λ — космологическая постоянная,

T_{munu}

  • ​ — тензор энергии‑импульса (материя/поля),

  • G, c — гравитационная постоянная и скорость света соответственно.

Точные решения уравнения Эйнштейна (Источник [2] [2] ) в частных случаях при наложении симметрий называются метриками. Перечислим некоторые из них:

1) Метрика Шварцшильда в координатах Шварцшильда (статическая, сферически‑симметричная чёрная дыра, без заряда и вращения)(Источник [3] [3]):

ds^2=-left(1 - frac{r_s}{r}right) c^2 dt^2 + left(1 - frac{r_s}{r}right)^{-1} dr^2 + r^2 left(dtheta^2 + sin^2theta, dphi^2right)

где

r_s=frac{2GM}{c^2}

Радиус Шварцшильда (радиус горизонта событий).

Написав код для визуализации,

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# Параметры
M = 1.0  # Масса чёрной дыры (в условных единицах)
rs = 2 * M  # Радиус Шварцшильда

# Сетка координат
r = np.linspace(rs, 10, 200)
theta = np.linspace(0, 2*np.pi, 200)
R, Theta = np.meshgrid(r, theta)

# Параболоид Фламма: z ~ sqrt(r - rs)
# Это упрощённая модель для визуализации кривизны
Z = 2 * np.sqrt(R - rs)

# Переход к декартовым координатам
X = R * np.cos(Theta)
Y = R * np.sin(Theta)

# Построение графика
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection='3d')

surf = ax.plot_surface(X, Y, Z, cmap='viridis', alpha=0.9, edgecolor='none')

# Горизонт событий (окружность радиуса rs)
circle_theta = np.linspace(0, 2*np.pi, 100)
circle_x = rs * np.cos(circle_theta)
circle_y = rs * np.sin(circle_theta)
circle_z = np.zeros_like(circle_x)
ax.plot(circle_x, circle_y, circle_z, color='red', linewidth=3, label='Горизонт событий')

ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z (кривизна)')
ax.set_title('Метрика Шварцшильда')
ax.legend()

plt.tight_layout()
plt.show()

получим:

Метрика Шварцшильда

Метрика Шварцшильда
Искривление радиальной координаты

Искривление радиальной координаты

Сингулярность в метрике Шварцшильда точечная.

2) Метрика Керра в координатах Бойера‑Линдквиста(Источник [4] [4]) (для вращающейся чёрной дыры):

begin{align}     ds^2={}& -left(1 - frac{2Mr}{rho^2}right) dt^2      - frac{4Marsin^2theta}{rho^2} , dt, dphi      + frac{rho^2}{Delta} , dr^2 notag \     &+ rho^2 , dtheta^2      + left(r^2 + a^2 + frac{2Ma^2rsin^2theta}{rho^2}right)sin^2theta , dphi^2, end{align}

Где:

rho^2=r^2 + M^2a^2cos^2theta, quadDelta=r^2 - 2Mr + M^2a^2a=J/(Mc)

‑параметр вращения.

M, J‑ масса и момент импульса чёрной дыры.

В этой метрике радиус горизонта событий:

r_+=M + sqrt{M^2 - a^2}

Радиус статической границы (эргосферы):

r_{text{erg}}(theta)=M + sqrt{M^2 - a^2cos^2theta}

Напишем на Python код для визуализации:

import numpy as np
import plotly.graph_objects as go

M = 1.0
a = 0.9  # почти экстремальная чёрная дыра

def r_erg_theta(theta):
    return M + np.sqrt(M**2 - a**2 * np.cos(theta)**2)

r_h = M + np.sqrt(M**2 - a**2)

theta = np.linspace(0, np.pi, 100)
phi = np.linspace(0, 2*np.pi, 100)
THETA, PHI = np.meshgrid(theta, phi)

# Эргосфера в сферических координатах -> декартовы
r_e_grid = r_erg_theta(THETA)
X_e = r_e_grid * np.sin(THETA) * np.cos(PHI)
Y_e = r_e_grid * np.sin(THETA) * np.sin(PHI)
Z_e = r_e_grid * np.cos(THETA)

# Горизонт событий (сфера по r, но это не сфера в обычном смысле из-за координат)
r_h_grid = np.full_like(THETA, r_h)
X_h = r_h_grid * np.sin(THETA) * np.cos(PHI)
Y_h = r_h_grid * np.sin(THETA) * np.sin(PHI)
Z_h = r_h_grid * np.cos(THETA)

# Кольцевая сингулярность: r=0, theta=pi/2 (экваториальная плоскость)
R_ring = 0.05  # радиус кольца для визуализации (сингулярность формально нулевая)
z_ring = 0
theta_ring = np.pi/2
x_ring = R_ring * np.cos(phi)
y_ring = R_ring * np.sin(phi)
z_ring_arr = np.zeros_like(x_ring)

fig = go.Figure()

# Эргосфера
fig.add_trace(go.Surface(
    x=X_e, y=Y_e, z=Z_e,
    colorscale='Blues', opacity=0.6,
    showscale=False, name='Эргосфера'
))

# Горизонт
fig.add_trace(go.Surface(
    x=X_h, y=Y_h, z=Z_h,
    colorscale='Greys', opacity=1.0,
    showscale=False, name='Горизонт событий'
))

# Кольцо сингулярности
fig.add_trace(go.Scatter3d(
    x=x_ring, y=y_ring, z=z_ring_arr,
    mode='lines', line=dict(color='red', width=4),
    name='Кольцевая сингулярность'
))

fig.update_layout(
    title=f'Строение чёрной дыры (метрика Керра), a = {a}',
    scene=dict(
        xaxis_title='x',
        yaxis_title='y',
        zaxis_title='z',
        aspectmode='data'
    ),
    width=800,
    height=700
)
fig.show()

Результат работы программы:

Вращающаяся чёрная дыра.

Вращающаяся чёрная дыра.

В метрике Керра появляется эргосфера (Источник[26] [5])(область вне горизонта событий, где даже свет не может оставаться в покое относительно удалённого наблюдателя — эффект перетаскивания инерциальных систем, или Лензе — Тирринга) и кольцевая сингулярность (Источник[27] [6])(в отличие от точечной в метрике Шварцшильда).

3) Метрика Рейсснера‑Нордстрёма(Источник [5] [7]) (для заряжённой и не вращающейся чёрной дыры):

ds^2=-left(1 - frac{2M}{r} + frac{Q^2}{r^2}right)dt^2      + left(1 - frac{2M}{r} + frac{Q^2}{r^2}right)^{-1}dr^2      + r^2(dtheta^2+sin^2theta,dphi^2)

Где Q‑ заряд чёрной дыры.

Сначала покажем, как заряд влияет на горизонты событий:

Горизонты заряженной чёрной дыры.

Горизонты заряженной чёрной дыры.

Теперь покажем, как заряд влияет на радиальную координату:

растяжение радиальной координаты

растяжение радиальной координаты

Код для получения чёрной дыры в 3d в метрике Рейсснера‑Нордстрёма:

import numpy as np
import plotly.graph_objects as go

M = 1.0
Q_vals = [0.0, 0.5, 0.8, 0.95]  # можно менять

theta = np.linspace(0, np.pi, 60)
phi = np.linspace(0, 2*np.pi, 80)
THETA, PHI = np.meshgrid(theta, phi)

fig = go.Figure()

for i, Q in enumerate(Q_vals):
    disc = M**2 - Q**2
    if disc < 0:
        print(f"Q={Q:.2f}: голая сингулярность, горизонтов нет")
        continue
    r_plus = M + np.sqrt(disc)
    r_minus = M - np.sqrt(disc) if disc > 0 else None

    # Внешний горизонт
    X_out = r_plus * np.sin(THETA) * np.cos(PHI)
    Y_out = r_plus * np.sin(THETA) * np.sin(PHI)
    Z_out = r_plus * np.cos(THETA)

    fig.add_trace(go.Surface(
        x=X_out, y=Y_out, z=Z_out,
        colorscale='Viridis',
        opacity=0.85,
        showscale=False,
        name=f'Q={Q:.2f}, r_+'
    ))

    # Внутренний горизонт (если есть)
    if r_minus is not None and r_minus > 0:
        X_in = r_minus * np.sin(THETA) * np.cos(PHI)
        Y_in = r_minus * np.sin(THETA) * np.sin(PHI)
        Z_in = r_minus * np.cos(THETA)

        fig.add_trace(go.Surface(
            x=X_in, y=Y_in, z=Z_in,
            colorscale='Plasma',
            opacity=0.9,
            showscale=False,
            name=f'Q={Q:.2f}, r_-'
        ))

fig.update_layout(
    title=f'Горизонты чёрной дыры Рейсснера–Нордстрёма (M={M})',
    scene=dict(
        xaxis_title='x',
        yaxis_title='y',
        zaxis_title='z',
        aspectmode='data'
    ),
    width=800,
    height=700
)
fig.show()

В итоге получим:

Метрика Рейсснера-Нордстрёма.

Метрика Рейсснера‑Нордстрёма.

В метрике Рейсснера‑Нордстрёма эргосферы нет- она есть только у вращающихся чёрных дыр.

Зато у неё может быть два различных горизонта:внешний и внутренний, что видно из полученного изображения.

4) Метрика Керра‑Ньюмана в координатах Бойера‑Линдквиста (Источник [6] [8])(для заряженной и вращающейся чёрной дыры):

begin{align}     ds^2={}& -left(1 - frac{2Mr - Q^2}{rho^2}right) dt^2      - frac{2(2Mr - Q^2)asin^2theta}{rho^2} , dt, dphi      + frac{rho^2}{Delta} , dr^2 notag \     &+ rho^2 , dtheta^2      + left(r^2 + a^2 + frac{(2Mr - Q^2)a^2sin^2theta}{rho^2}right)sin^2theta , dphi^2, end{align}

Где:

rho^2=r^2 + a^2cos^2theta, quad Delta=r^2 - 2Mr + a^2 + Q^2.

является наиболее общим решением для стационарной чёрной дыры; её геометрия полностью определяется тремя параметрами: M, a, Q.

Покажем, как параметры влияют на горизонты и эргосферу:

Метрика Керра-Ньюмана

Метрика Керра‑Ньюмана

Код для визуализации метрики Керра‑Ньюмана:

import numpy as np
import plotly.graph_objects as go

M = 1.0
a = 0.7
Q = 0.4

theta_vals = np.linspace(0, np.pi, 60)
phi_vals = np.linspace(0, 2*np.pi, 80)
THETA, PHI = np.meshgrid(theta_vals, phi_vals)

# Горизонт: r = r_plus (не зависит от theta)
disc = M**2 - a**2 - Q**2
if disc < 0:
    raise ValueError("Параметры дают голую сингулярность")
r_plus = M + np.sqrt(disc)

X_h = r_plus * np.sin(THETA) * np.cos(PHI)
Y_h = r_plus * np.sin(THETA) * np.sin(PHI)
Z_h = r_plus * np.cos(THETA)

# Эргосфера: r_erg(theta) = M + sqrt(M^2 - a^2*cos^2(theta) - Q^2)
term_erg = M**2 - (a**2)*(np.cos(THETA)**2) - Q**2
mask = term_erg >= 0
r_erg_grid = np.zeros_like(THETA)
r_erg_grid[mask] = M + np.sqrt(term_erg[mask])

X_e = r_erg_grid * np.sin(THETA) * np.cos(PHI)
Y_e = r_erg_grid * np.sin(THETA) * np.sin(PHI)
Z_e = r_erg_grid * np.cos(THETA)

fig = go.Figure()

# Горизонт
fig.add_trace(go.Surface(
    x=X_h, y=Y_h, z=Z_h,
    colorscale='Greys',
    opacity=1.0,
    showscale=False,
    name='Горизонт событий'
))

# Эргосфера
fig.add_trace(go.Surface(
    x=X_e, y=Y_e, z=Z_e,
    colorscale='Viridis',
    opacity=0.6,
    showscale=False,
    name='Эргосфера'
))

fig.update_layout(
    title=f'Эргосфера и горизонт в метрике Керра–Ньюмана (M={M}, a={a}, Q={Q})',
    scene=dict(
        xaxis_title='x',
        yaxis_title='y',
        zaxis_title='z',
        aspectmode='data'
    ),
    width=800,
    height=700
)
fig.show()

Результат работы программы:

Черная дыра в метрике Керра-Ньюмана

Черная дыра в метрике Керра‑Ньюмана

Следует отметить, что астрофизически заряженные чёрные дыры практически не встречаются: заряд быстро нейтрализуется. Поэтому Керр‑Ньюман и Рейсснер-Нордстрём — это прежде всего теоретические модели, но они важны как «самый общий случай» и как полигон для численных методов.

Практически во всех метриках существует фотонная сфера (Источник[28] [9])— это поверхность (или набор орбит), где могут существовать круговые нулевые геодезические, то есть траектории света, замкнутые в виде окружностей. Условие: эффективный потенциал для фотонов имеет экстремум при некотором r, и при правильных начальных условиях фотон будет «висеть» на этой орбите (хотя она неустойчива).

Таким образом, в данной статье сделана компьютерная графическая визуализация чёрных дыр в четырёх различных метриках, показаны ключевые отличия, а также построены графики.

Статья носит чисто демонстрационный и иллюстративный характер.

Литература:

  1. https://ru.wikipedia.org/wiki/Уравнения_Эйнштейна [1]

  2. https://ru.wikipedia.org/wiki/Решения_уравнений_Эйнштейна [2]

  3. https://ru.wikipedia.org/wiki/Метрика_Шварцшильда [3]

  4. https://translated.turbopages.org/proxy_u/en‑ru.ru.ccbd0af6-6a67b04a-35689e94-74722d776562/https/en.wikipedia.org/wiki/Kerr_metric [4]

  5. https://en.wikipedia.org/wiki/Reissner‑Nordström_metric [7]

  6. https://en.wikipedia.org/wiki/Kerr‑Newman_metric [8]

  7. https://bigenc.ru/wiki/Чёрная_дыра_Райсснера_‑_Нордстрёма [10]

  8. С. А. Пастон, А. А. Шейкин «Глобальное вложение метрики Рейсснера‑Нордстрёма в плоское окружающее пространство» (SIGMA, 2014, № 10, 003).

  9. М. Джемри «Деформация термодинамики АдС чёрной дыры Рейсснера‑Нордстрёма, порождённая поправками Данкла» («Теоретическая и математическая физика», 2026, т. 227, № 1, с. 188–205).

  10. https://cyberleninka.ru/article/n/entropiya‑chernoy‑dyry‑v‑modeli‑reysnera‑nordstryoma‑de‑sittera [11]

  11. Зельдович Я. Б., Новиков И. Д. «Теория тяготения и эволюция звёзд»

  12. https://cyberleninka.ru/article/n/uravneniya‑eynshteyna‑i‑ego‑svoystva [12]

  13. https://cyberleninka.ru/article/n/o‑geometricheskoy‑klassifikatsii‑uravneniy‑eynshteyna [13]

  14. С. Чандрасекар «Математическая теория чёрных дыр» (в 2 томах, перевод В. А. Березина, под ред. Д. А. Гальцова, «Мир», 1986).

  15. А. М. Баранов «О метрике Керра — Ньюмена» («Пространство, время и фундаментальные взаимодействия», 2021, № 2, с. 42–47).

  16. В. П. Фролов «Решения типа Керра — Ньюмана — Унти — Тамбурино уравнений Эйнштейна с космологическим членом» («Теоретическая и математическая физика», 1974, т. 21, № 2, с. 213–223).

  17. А. Ф. Захаров «Тени и круговые фотонные орбиты: рассмотрение некоторых случаев обобщений чёрных дыр Керра — Ньюмена» («Письма в ЭЧАЯ», 2025).

  18. В. П. Фролов, И. Д. Новиков «Чёрные дыры во Вселенной» (обзорные лекции/статьи, часто встречаются в сборниках).

  19. https://archive.org/details/arxiv‑hep‑th0112237 [14]

  20. https://arxiv.org/pdf/1408.3334 [15]

  21. https://en.wikipedia.org/wiki/Geodesics_in_general_relativity [16]

  22. С. О. Алексеев, Е. А. Памятных, А. В. Урсулов «Общая теория относительности. Введение. Современное развитие и приложения» (2022).

  23. С. Хокинг, Дж. Эллис «Крупномасштабная структура пространства‑времени».

  24. Eva Hackmann “Geodesic equations in General Relativity: Motion in black hole space‑times with and without cosmological constant”

  25. https://www.dissercat.com/content/dvizhenie‑chastits‑vblizi‑chernykh‑dyr [17]

  26. https://ru.wikipedia.org/wiki/Эргосфера [5]

  27. https://ru.wikipedia.org/wiki/Кольцеобразная_сингулярность [6]

  28. https://en.wikipedia.org/wiki/Photon_sphere [9]

Автор: Maximka200

Источник [18]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/astrofizika/456033

Ссылки в тексте:

[1] Источник [1]: https://ru.wikipedia.org/wiki/%D0%A3%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D0%AD%D0%B9%D0%BD%D1%88%D1%82%D0%B5%D0%B9%D0%BD%D0%B0

[2] Источник [2]: https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%AD%D0%B9%D0%BD%D1%88%D1%82%D0%B5%D0%B9%D0%BD%D0%B0

[3] Источник [3]: https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D1%80%D0%B8%D0%BA%D0%B0_%D0%A8%D0%B2%D0%B0%D1%80%D1%86%D1%88%D0%B8%D0%BB%D1%8C%D0%B4%D0%B0

[4] Источник [4]: https://translated.turbopages.org/proxy_u/en-ru.ru.ccbd0af6-6a67b04a-35689e94-74722d776562/https/en.wikipedia.org/wiki/Kerr_metric

[5] Источник[26]: https://ru.wikipedia.org/wiki/%D0%AD%D1%80%D0%B3%D0%BE%D1%81%D1%84%D0%B5%D1%80%D0%B0

[6] Источник[27]: https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BB%D1%8C%D1%86%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D0%BD%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE%D1%81%D1%82%D1%8C

[7] Источник [5]: https://en.wikipedia.org/wiki/Reissner%E2%80%93Nordstr%C3%B6m_metric

[8] Источник [6]: https://en.wikipedia.org/wiki/Kerr%E2%80%93Newman_metric

[9] Источник[28]: https://en.wikipedia.org/wiki/Photon_sphere

[10] https://bigenc.ru/wiki/Чёрная_дыра_Райсснера_‑_Нордстрёма: https://bigenc.ru/wiki/%D0%A7%D1%91%D1%80%D0%BD%D0%B0%D1%8F_%D0%B4%D1%8B%D1%80%D0%B0_%D0%A0%D0%B0%D0%B9%D1%81%D1%81%D0%BD%D0%B5%D1%80%D0%B0_%E2%80%93_%D0%9D%D0%BE%D1%80%D0%B4%D1%81%D1%82%D1%80%D1%91%D0%BC%D0%B0

[11] https://cyberleninka.ru/article/n/entropiya‑chernoy‑dyry‑v‑modeli‑reysnera‑nordstryoma‑de‑sittera: https://cyberleninka.ru/article/n/entropiya-chernoy-dyry-v-modeli-reysnera-nordstryoma-de-sittera

[12] https://cyberleninka.ru/article/n/uravneniya‑eynshteyna‑i‑ego‑svoystva: https://cyberleninka.ru/article/n/uravneniya-eynshteyna-i-ego-svoystva

[13] https://cyberleninka.ru/article/n/o‑geometricheskoy‑klassifikatsii‑uravneniy‑eynshteyna: https://cyberleninka.ru/article/n/o-geometricheskoy-klassifikatsii-uravneniy-eynshteyna

[14] https://archive.org/details/arxiv‑hep‑th0112237: https://archive.org/details/arxiv-hep-th0112237

[15] https://arxiv.org/pdf/1408.3334: https://arxiv.org/pdf/1408.3334

[16] https://en.wikipedia.org/wiki/Geodesics_in_general_relativity: https://en.wikipedia.org/wiki/Geodesics_in_general_relativity

[17] https://www.dissercat.com/content/dvizhenie‑chastits‑vblizi‑chernykh‑dyr: https://www.dissercat.com/content/dvizhenie-chastits-vblizi-chernykh-dyr

[18] Источник: https://habr.com/ru/articles/1063448/?utm_campaign=1063448&utm_source=habrahabr&utm_medium=rss