---
title: "Оценки по порядку величины"
topic: order-estimates
order: 2
description: "Π-теорема; безразмерные константы α, α_G, m_p/m_e; размеры атомов, планет и звёзд из фундаментальных констант и сравнение оценок с точными значениями"
---
Почему атом имеет размер $10^{-8}$ см, самая большая холодная планета —
размер Юпитера, а звёзды весят около $10^{33}$ г, а не $10^{20}$ или
$10^{45}$? На эти вопросы можно ответить, не решая ни одного уравнения
точно: достаточно понять, какие силы конкурируют, и приравнять их. Такие
оценки — основной инструмент пособия. Они показывают, *какие константы*
определяют масштаб явления, и поэтому лежат в основе всех рассуждений о
том, как мир зависел бы от других значений констант (раздел «Тонкая
настройка»).
В этой статье мы:
- сформулируем Π-теорему и найдём безразмерные комбинации линейной
алгеброй;
- введём три безразмерные константы, задающие масштабы вещества:
$\alpha$, $\alpha_G$ и $m_p/m_e$;
- оценим размер атома, плотность твёрдого тела, предельный размер
холодной планеты и массу звезды;
- сравним оценки с точными значениями и увидим, насколько им можно
доверять.
## Размерный анализ
::: {#def-pi-theorem}
**Π-теорема** (Бакингем, 1914). Пусть физический закон связывает $n$
размерных величин, размерности которых выражаются через $k$ независимых
базовых единиц. Тогда закон можно записать как связь между $n - r$
безразмерными комбинациями $\Pi_1,\dots,\Pi_{n-r}$, где $r \le k$ — ранг
матрицы размерностей.
:::
Доказательство — линейная алгебра: величине
$q_1^{x_1}\cdots q_n^{x_n}$ соответствует вектор показателей
$x \in \mathbb{Q}^n$, а условие безразмерности — однородная система
$D x = 0$ с матрицей размерностей $D$ размера $k\times n$. Её решения
образуют пространство размерности $n - r$; любой базис этого
пространства — набор независимых $\Pi$.
Классический пример — сильный взрыв в атмосфере (Тейлор, 1950). Радиус
ударной волны $R$ зависит от выделившейся энергии $E$, времени $t$ и
плотности воздуха $\rho$; давление невозмущённого воздуха на ранней
стадии несущественно. Четыре величины, три единицы (г, см, с):
```{python}
import math
import astropy.constants as const
import astropy.units as u
import numpy as np
import sympy as sp
# столбцы — R, E, t, ρ; строки — показатели г, см, с
D = sp.Matrix([[0, 1, 0, 1],
[1, 2, 0, -3],
[0, -2, 1, 0]])
(pi,) = D.nullspace()
print("показатели (R, E, t, ρ):", list(pi / pi[0]))
```
Единственная безразмерная комбинация — $\Pi = R\,\rho^{1/5}/(E^{1/5}t^{2/5})$,
поэтому $R = \xi\,(Et^2/\rho)^{1/5}$ с числом $\xi$, которое размерный
анализ не определяет; для воздуха численное решение даёт $\xi \approx 1$
(Тейлор, 1950). Тейлор применил этот закон к опубликованным фотографиям
испытания «Тринити». Через $t = 25$ мс после взрыва радиус огненного шара
был около 140 м:
```{python}
R, t, rho = 140 * u.m, 25 * u.ms, 1.2 * u.kg / u.m**3
E = (R**5 * rho / t**2).to(u.J)
kt = 4.184e12 * u.J # килотонна тротила
print(f"E ≈ {E:.1e} ≈ {float(E / kt):.0f} кт")
```
Двадцать с небольшим килотонн — правильный порядок: официальная оценка
мощности того времени — около 20 кт [У]{.status}. Размерный анализ дал
энергию взрыва по одной фотографии с масштабной линейкой. Чувствительность
к ошибкам благоприятна: ошибка в $R$ на 10 % даёт ошибку в $E$ на 60 %, но
не на порядок.
## Безразмерные константы
Масштабы обычного вещества задаются тремя константами взаимодействия и
масс. Из $\hbar$, $c$, $G$, $e$ и масс частиц можно составить
безразмерные комбинации, и именно они, а не сами $\hbar$ или $G$,
имеют физический смысл: их значения не зависят от выбора единиц.
::: {#def-dimensionless}
**Безразмерные константы вещества:**
$$
\alpha = \frac{e^2}{\hbar c}, \qquad
\alpha_G = \frac{G m_p^2}{\hbar c}, \qquad
\beta = \frac{m_e}{m_p}.
$$
Здесь $\alpha$ — постоянная тонкой структуры (заряд $e$ в гауссовой
системе), $\alpha_G$ — гравитационный аналог $\alpha$ для пары протонов.
В натуральных единицах $\alpha_G = (m_p/\Mpl)^2$.
:::
```{python}
hbar, c, G = (k.cgs.value for k in (const.hbar, const.c, const.G))
m_p, m_e = const.m_p.cgs.value, const.m_e.cgs.value
e = const.e.gauss.value # заряд в гауссовой системе
msun = const.M_sun.cgs.value
alpha = e**2 / (hbar * c)
alpha_G = G * m_p**2 / (hbar * c)
beta = m_e / m_p
print(f"α = 1/{1 / alpha:.3f}")
print(f"α_G = {alpha_G:.3e}")
print(f"β = 1/{1 / beta:.2f}")
print(f"α/α_G = {alpha / alpha_G:.2e}")
```
Гравитационное притяжение двух протонов слабее электростатического
отталкивания в $\alpha/\alpha_G \approx 10^{36}$ раз. Происхождение
этого числа неизвестно: Стандартная модель не предсказывает ни массы
протона в планковских единицах, ни $\alpha$ [У]{.status}. Все оценки
ниже — степени этих констант с множителями порядка единицы.
## Атом и твёрдое тело
Электрон, локализованный в области размером $r$, имеет импульс
$p \sim \hbar/r$ по соотношению неопределённостей. Его энергия в поле
протона
$$
E(r) = \frac{\hbar^2}{2m_e r^2} - \frac{e^2}{r}.
$$
Минимум этой функции и есть оценка размера и энергии основного
состояния:
```{python}
r, hb, me, q = sp.symbols("r hbar m_e e", positive=True)
E_r = hb**2 / (2 * me * r**2) - q**2 / r
r_min = sp.solve(sp.diff(E_r, r), r)[0]
E_min = sp.simplify(E_r.subs(r, r_min))
print("r_min =", r_min, " E_min =", E_min)
```
Получились в точности боровский радиус $a_0 = \hbar^2/(m_ee^2)$ и
энергия $-m_ee^4/(2\hbar^2) = -\alpha^2 m_ec^2/2$ — ответ уравнения
Шрёдингера. Точное совпадение — удача (множители «порядка единицы»
случайно оказались равны единице), но то, что *масштаб* правильный, —
закономерность. Через безразмерные константы
$$
a_0 = \frac{\hbar}{\alpha m_e c} = \frac{\bar\lambda_e}{\alpha}, \qquad
\text{Ry} = \frac{\alpha^2}{2}\, m_ec^2,
$$
где $\bar\lambda_e = \hbar/(m_ec)$ — комптоновская длина электрона.
Атом в $1/\alpha = 137$ раз больше комптоновской длины, поэтому
электрон в атоме нерелятивистский: $v/c \sim \alpha$.
```{python}
a0 = hbar**2 / (m_e * e**2)
Ry = (alpha**2 * m_e * c**2 / 2 * u.erg).to(u.eV)
print(f"a₀ = {a0:.4e} см, Ry = {Ry:.3f}")
```
Твёрдое тело и жидкость — атомы, упакованные вплотную, на расстоянии
нескольких $a_0$ друг от друга. Отсюда плотность конденсированного
вещества $\rho \sim A m_p/(\text{несколько } a_0)^3$, где $A$ — массовое
число. Для воды ($A = 18$, расстояние между молекулами около 3,1 Å $\approx
6a_0$) это даёт правильную величину:
```{python}
rho_water = 18 * m_p / (3.1e-8)**3
print(f"ρ(вода) ≈ {rho_water:.2f} г/см³")
```
Плотности почти всех твёрдых тел и жидкостей лежат между десятыми
долями и двумя десятками г/см³ — следствие того, что размер атома слабо
зависит от $Z$ (внешние электроны видят экранированный заряд), а масса
растёт пропорционально $A$ [У]{.status}.
## Самая большая холодная планета
Холодное тело удерживается от сжатия теми же атомными силами, что
определяют прочность вещества. Возьмём тело из водорода — основного
вещества Вселенной. Гравитация начинает «раздавливать» атомы, когда
гравитационная энергия, приходящаяся на один атом, сравнивается с
атомной энергией связи $\sim\alpha^2m_ec^2$; плотность вещества в этот
момент — атом на объём $a_0^3$. Опуская множители порядка единицы
($M \sim \rho R^3$, $\rho \sim m_p/a_0^3$), получаем
$$
\frac{G M m_p}{R} \sim \alpha^2 m_e c^2
\quad\Longrightarrow\quad
R_{\max} \sim \left(\frac{\alpha}{\alpha_G}\right)^{1/2} a_0,
\qquad
M_{\max} \sim \left(\frac{\alpha}{\alpha_G}\right)^{3/2} m_p.
$$
```{python}
R_, alph, alphG, mp_, c_, G_ = sp.symbols("R alpha alpha_G m_p c G", positive=True)
a0_ = hb / (alph * me * c_)
M_ = mp_ * R_**3 / a0_**3
R_max = sp.solve(sp.Eq(G_ * M_ * mp_ / R_, alph**2 * me * c_**2), R_)[0]
# подставим G = α_G ħc/m_p² и сравним с ответом
claim = sp.sqrt(alph / alphG) * a0_
print("R_max совпадает:", sp.simplify(R_max.subs(G_, alphG * hb * c_ / mp_**2) - claim) == 0)
R_max_H = math.sqrt(alpha / alpha_G) * a0
M_max_H = (alpha / alpha_G) ** 1.5 * m_p
R_J, M_J = const.R_jup.cgs.value, const.M_jup.cgs.value
print(f"R_max ≈ {R_max_H:.1e} см = {R_max_H / R_J:.2f} R_Юп")
print(f"M_max ≈ {M_max_H:.1e} г = {M_max_H / M_J:.2f} M_Юп")
```
Оценка даёт массу и радиус Юпитера. Это не совпадение: у тела
массивнее Юпитера давление в центре создаётся уже не атомными силами, а
вырожденным электронным газом, и радиус перестаёт расти с массой, а затем
начинает убывать [У]{.status}. Юпитер близок к самому большому по
размеру холодному телу из водорода и гелия; коричневые карлики в десятки
раз массивнее, но имеют примерно тот же радиус. Для тел из тяжёлых
элементов оценка сложнее: энергия связи и межатомное расстояние зависят
от состава, и простая подстановка $A m_p$ вместо $m_p$ не годится.
## Масса звезды
Звезда — шар, в котором гравитация уравновешена давлением, а энергия
поступает от термоядерных реакций. Её характерную массу дал Ландау
(1932) одним рассуждением. Пусть $N$ протонов (и столько же электронов)
сжаты в шар радиуса $R$. Если давление создают вырожденные
*релятивистские* электроны, их энергия на частицу
$\sim \hbar c\, n^{1/3} \sim \hbar c N^{1/3}/R$, а гравитационная
энергия на протон $\sim G N m_p^2/R$. Обе энергии обратно
пропорциональны $R$, поэтому сжатие их баланс не меняет: при
$$
N > N_* \sim \left(\frac{\hbar c}{G m_p^2}\right)^{3/2} = \alpha_G^{-3/2}
$$
гравитация побеждает при любом радиусе, и равновесие холодного тела
невозможно. Масштаб $\alpha_G^{-3/2}m_p$ — это и масштаб масс звёзд.
```{python}
N_star = alpha_G ** -1.5
print(f"N* = α_G^(-3/2) = {N_star:.2e}, N* m_p = {N_star * m_p / msun:.2f} M☉")
print(f"в Солнце протонов (по массе): {msun / m_p:.2e}")
```
Точный ответ — предел Чандрасекара — получается из уравнения
Лейна–Эмдена с индексом политропы $n = 3$ (подробно — в теме
«Вырожденное вещество и предел Чандрасекара»):
$$
M_{\rm Ch} = \frac{\sqrt{3\pi}}{2}\,\omega_3\,
\left(\frac{\hbar c}{G}\right)^{3/2}\frac{1}{(\mu_e m_u)^2},
\qquad \omega_3 = -\xi_1^2\,\theta'(\xi_1),
$$
где $\theta(\xi)$ — решение уравнения Лейна–Эмдена
$\xi^{-2}(\xi^2\theta')' = -\theta^3$, $\xi_1$ — его первый нуль,
$\mu_e$ — число нуклонов на электрон ($\mu_e = 2$ для гелия, углерода и
кислорода), $m_u$ — атомная единица массы. Найдём $\omega_3$ численно:
```{python}
from scipy.integrate import solve_ivp
def lane_emden(n, xi_max=20.0):
"""Первый нуль ξ₁ и ω_n = −ξ₁²θ'(ξ₁) для политропы индекса n."""
rhs = lambda xi, y: [y[1], -np.abs(y[0]) ** n - 2 * y[1] / xi]
xi0 = 1e-6 # разложение θ ≈ 1 − ξ²/6
surface = lambda xi, y: y[0]
surface.terminal = True
sol = solve_ivp(rhs, [xi0, xi_max], [1 - xi0**2 / 6, -xi0 / 3],
events=surface, rtol=1e-12, atol=1e-14)
xi1, (_, dtheta) = sol.t_events[0][0], sol.y_events[0][0]
return xi1, -xi1**2 * dtheta
xi1, omega3 = lane_emden(3)
m_u = (1 * u.u).to(u.g).value
M_Ch = math.sqrt(3 * math.pi) / 2 * omega3 * (hbar * c / G) ** 1.5 / (2 * m_u) ** 2
print(f"ξ₁ = {xi1:.5f}, ω₃ = {omega3:.5f}")
print(f"M_Ch(μ_e = 2) = {M_Ch / msun:.3f} M☉")
```
Грубая оценка $\alpha_G^{-3/2} m_p = 1{,}85\,\Msun$ отличается от
точного $M_{\rm Ch} = 1{,}46\,\Msun$ всего на 30 %: множители
$\sqrt{3\pi}\,\omega_3/2 \approx 3{,}1$ и $\mu_e^{-2} = 1/4$ почти
компенсируют друг друга. Поправки, не учтённые в модели идеального
вырожденного газа (кулоновское взаимодействие, нейтронизация, ОТО),
немного уменьшают предел [У]{.status}.
Почему этот же масштаб задаёт массы *обычных* звёзд, а не только белых
карликов? У слишком лёгкого газового шара электроны становятся
вырожденными раньше, чем температура в центре достигает порога горения
водорода, — так получаются коричневые карлики; минимальная масса звезды
около $0{,}075\,\Msun$ (Шабрие, Барафф, 2000). У слишком тяжёлого шара
давление излучения сравнивается с давлением газа, и звезда становится
неустойчивой; верхний предел — порядка $10^2\,\Msun$. Оба предела —
степени $\alpha_G^{-3/2}m_p$ с множителями, зависящими от $\alpha$ и
$\beta$ [У]{.status}; расчёт — в разделе «Физика звёзд».
## Насколько можно доверять оценке
Соберём результаты вместе и сравним оценки с точными или измеренными
значениями. Добавим и пример неудачной оценки: температуру, при которой
сталкивающиеся протоны преодолевают кулоновский барьер
$e^2/r_N$ ($r_N \approx 1{,}4$ фм — радиус действия ядерных сил),
сравним с температурой в центре Солнца $1{,}5\cdot10^7$ К, где водород
действительно горит.
```{python}
r_N = 1.41e-13 # ħ/(m_π c), см
T_barrier = e**2 / r_N / const.k_B.cgs.value # кТ ~ высота барьера
print(f"T(барьер) ≈ {T_barrier:.1e} К; отношение к 1,5·10⁷ К: {T_barrier / 1.5e7:.0f}")
```
```{python}
#| label: fig-estimates
#| fig-cap: "Отношение оценки к точному (или измеренному) значению; шкала логарифмическая. Серая полоса — отклонение не больше чем в 3 раза. Механические и атомные оценки попадают в полосу; оценка температуры горения водорода по высоте кулоновского барьера завышена почти в тысячу раз: она не учитывает туннельный эффект."
import matplotlib.pyplot as plt
cases = { # оценка, точное значение
"радиус атома H, $a_0$": (a0, 5.29e-9),
"энергия связи H": (Ry.value, 13.6),
"плотность воды": (rho_water, 1.0),
"радиус Юпитера": (R_max_H, R_J),
"масса Юпитера": (M_max_H, M_J),
"предел Чандрасекара": (N_star * m_p, M_Ch),
"энергия «Тринити»": (E.value, 20 * kt.value),
"T горения водорода": (T_barrier, 1.5e7),
}
ratio = {k: est / true for k, (est, true) in cases.items()}
fig, ax = plt.subplots(figsize=(7, 3.6))
ax.axvspan(1 / 3, 3, color="0.9")
ax.axvline(1, color="0.5", lw=0.8)
ax.scatter(list(ratio.values()), list(ratio), color="tab:red", zorder=3)
ax.set_xscale("log")
ax.set(xlim=(0.1, 3e3), xlabel="оценка / точное значение")
ax.invert_yaxis()
ax.grid(alpha=0.2, axis="x")
fig.tight_layout()
```
Когда в задаче конкурируют степенные зависимости, оценки «по порядку
величины» обычно точнее порядка: опущенные множители — числа вроде
$4\pi/3$, $\sqrt2$ и $\omega_3$, которые отчасти компенсируют друг
друга. Иначе обстоит дело, когда ответ определяет экспонента. Скорость
термоядерной реакции содержит гамовский фактор
$\exp[-(E_G/kT)^{1/3}]$; реакция идёт за счёт туннелирования частиц из
далёкого хвоста распределения Максвелла, и температура горения водорода
почти в тысячу раз ниже «наивной» оценки по высоте барьера (тема
«Скорости термоядерных реакций») [У]{.status}. Правило: если в задаче
есть экспонента, оценивать надо её показатель, а не сам ответ.
## Итоги
- Π-теорема сводит физический закон к связи безразмерных комбинаций;
их находят как ядро матрицы размерностей.
- Масштабы обычного вещества определяются тремя числами:
$\alpha \approx 1/137$, $\alpha_G \approx 5{,}9\cdot10^{-39}$,
$m_p/m_e \approx 1836$.
- Атом: $a_0 = \bar\lambda_e/\alpha$, энергия $\alpha^2m_ec^2/2$;
плотность твёрдых тел — граммы на см³.
- Самое большое холодное тело: $R \sim (\alpha/\alpha_G)^{1/2}a_0$,
$M \sim (\alpha/\alpha_G)^{3/2}m_p$ — радиус и масса Юпитера
(для водорода).
- Масса звезды: $\alpha_G^{-3/2}m_p \approx 1{,}85\,\Msun$; точный
предел Чандрасекара $1{,}46\,\Msun$ ($\mu_e = 2$).
- Хорошая оценка степенной зависимости обычно точнее порядка; в задачах
с экспонентами оценивают показатель.
## Упражнения
1. Найдите отношение $a_0$ к комптоновской длине электрона
$\bar\lambda_e$ и скорость электрона на первой боровской орбите в
единицах $c$. Какова энергия ионизации водорода в эВ?
2. Радиус действия ядерных сил оценивается комптоновской длиной
пиона $\hbar/(m_\pi c)$, $m_\pi c^2 = 139{,}57$ МэВ. Найдите её в
фм и отношение $a_0$ к ней. Во сколько раз плотность ядерного
вещества (нуклон в шаре такого радиуса) больше плотности воды?
3. Закон Тейлора $R = (Et^2/\rho)^{1/5}$ не учитывает давление
невозмущённого воздуха $p_0 = 1$ атм. Оцените радиус, до которого он
применим, из условия $\frac{4\pi}{3}R^3p_0 \sim E$ при $E = 20$ кт,
и время, когда ударная волна до него доходит.
4. Сколько протонов в Солнце? Сравните с $\alpha_G^{-3/2}$. Найдите
$\omega_3$ и первый нуль $\xi_1$ решения уравнения Лейна–Эмдена с
$n = 3$ и $M_{\rm Ch}$ для чисто железного ядра ($\mu_e = 56/26$).
5. Светимость, при которой давление излучения на электроны уравновешивает
притяжение протонов (предел Эддингтона), равна
$L_E = 4\pi G M m_p c/\sigma_T$. Выразите $L_E/M$ через $\alpha$,
$\alpha_G$ и $\beta$ и найдите $L_E$ для $M = \Msun$ в эрг/с и в
$\Lsun$.
::: {.callout-tip collapse="true"}
## Ответы
1. $a_0/\bar\lambda_e = 1/\alpha = 137{,}0$; $v/c = \alpha =
7{,}30\cdot10^{-3}$; энергия ионизации $\alpha^2m_ec^2/2 = 13{,}6$ эВ.
2. $\hbar/(m_\pi c) = 1{,}41$ фм; $a_0$ больше в $3{,}7\cdot10^4$ раз.
Плотность нуклона в шаре радиуса 1,41 фм —
$1{,}4\cdot10^{14}$ г/см³, то есть в $10^{14}$ раз больше плотности
воды (измеренная плотность ядерного вещества $2{,}7\cdot10^{14}$ г/см³ —
оценка верна с точностью до множителя 2).
3. $R \approx 580$ м; ударная волна доходит до него примерно через 1 с.
На фотографиях Тейлора (до $\sim0{,}1$ с, радиус до $\sim200$ м)
давление воздуха действительно несущественно.
4. $N_\odot = M_\odot/m_p = 1{,}19\cdot10^{57}$; $\alpha_G^{-3/2} =
2{,}20\cdot10^{57}$ — того же порядка. $\xi_1 = 6{,}8968$,
$\omega_3 = 2{,}0182$; для железа $M_{\rm Ch} = 1{,}26\,\Msun$.
5. Подставив $\sigma_T = \frac{8\pi}{3}\alpha^2\bar\lambda_e^2$ и
$G = \alpha_G\hbar c/m_p^2$, получаем
$L_E/M = \dfrac{3}{2}\,\dfrac{\alpha_G\beta}{\alpha^2}\,\dfrac{m_ec^4}{\hbar}$.
Численно $L_E = 1{,}26\cdot10^{38}$ эрг/с $= 3{,}3\cdot10^4\,\Lsun$
для одной солнечной массы.
:::
## Литература
- Buckingham E. On physically similar systems; illustrations of the use
of dimensional equations. *Phys. Rev.* **4**, 345 (1914).
- Taylor G. I. The formation of a blast wave by a very intense explosion.
I. Theoretical discussion; II. The atomic explosion of 1945.
*Proc. R. Soc. Lond. A* **201**, 159; 175 (1950).
- Landau L. On the theory of stars. *Phys. Z. Sowjetunion* **1**, 285
(1932).
- Weisskopf V. F. Of atoms, mountains, and stars: a study in qualitative
physics. *Science* **187**, 605 (1975).
- Carr B. J., Rees M. J. The anthropic principle and the structure of the
physical world. *Nature* **278**, 605 (1979).
- Press W. H. Man's size in terms of fundamental constants.
*Am. J. Phys.* **48**, 597 (1980).
- Press W. H., Lightman A. P. Dependence of macrophysical phenomena on the
values of the fundamental constants. *Phil. Trans. R. Soc. Lond. A*
**310**, 323 (1983).
- Chabrier G., Baraffe I. Theory of low-mass stars and substellar objects.
*Annu. Rev. Astron. Astrophys.* **38**, 337 (2000).
- Мигдал А. Б. *Качественные методы в квантовой теории.* — М.: Наука,
1975.
```{python}
#| echo: false
#| output: false
# Проверка чисел текста и ответов (не показывается на странице)
close = lambda x, y, rel=5e-3: math.isclose(x, y, rel_tol=rel)
# текст
assert round(float(E / kt)) == 25
assert round(1 / alpha, 3) == 137.036 and close(alpha_G, 5.906e-39, 1e-3)
assert round(1 / beta, 2) == 1836.15
assert close(rho_water, 1.0, 0.1)
assert close(R_max_H / R_J, 0.82, 1e-2) and close(M_max_H / M_J, 1.21, 1e-2)
assert close(N_star * m_p / msun, 1.85) and close(M_Ch / msun, 1.456, 1e-3)
assert close(math.sqrt(3 * math.pi) / 2 * omega3, 3.1, 1e-2)
assert all(1 / 3 < x < 3 for k, x in ratio.items() if k != "T горения водорода")
assert 700 < T_barrier / 1.5e7 < 1000
# 1
lam_e = hbar / (m_e * c)
assert close(a0 / lam_e, 137.0, 1e-3) and close(alpha, 7.30e-3, 1e-3)
assert close(Ry.value, 13.6, 1e-3)
# 2
r_pi = (const.hbar / (139.57 * u.MeV / const.c**2) / const.c).to(u.fm).value
assert round(r_pi, 2) == 1.41 and close(a0 / (r_pi * 1e-13), 3.7e4, 2e-2)
rho_nuc = m_p / (4 / 3 * math.pi * (r_pi * 1e-13) ** 3)
assert close(rho_nuc, 1.4e14, 2e-2)
# 3
E20 = 20 * kt
R_p = ((3 * E20 / (4 * math.pi * const.atm)) ** (1 / 3)).to(u.m)
t_p = ((R_p**5 * rho / E20) ** 0.5).to(u.s)
assert close(R_p.value, 580, 1e-2) and close(t_p.value, 1.0, 5e-2)
# 4
assert close(msun / m_p, 1.19e57) and close(N_star, 2.20e57)
assert round(xi1, 4) == 6.8968 and round(omega3, 4) == 2.0182
assert round(M_Ch * (2 * 26 / 56) ** 2 / msun, 2) == 1.26
# 5: формула через безразмерные константы совпадает с исходной
L_E = 4 * math.pi * G * msun * m_p * c / const.sigma_T.cgs.value
L_E_dimless = 1.5 * alpha_G * beta / alpha**2 * m_e * c**4 / hbar * msun
assert close(L_E, L_E_dimless, 1e-6)
assert close(L_E, 1.26e38) and close(L_E / const.L_sun.cgs.value, 3.3e4, 1e-2)
```