Вопрос
Простые числа: 2, 3, 5, 7, 11, 13, 17, 19, 23…
Они становятся реже с ростом чисел — это чувствуется интуитивно. Но насколько реже? Есть ли в их распределении порядок?
Карл Фридрих Гаусс в 15 лет (около 1793 года) считал простые числа в таблицах и заметил: количество простых до примерно равно .
Это теорема о простых числах — доказана в 1896 году.
Но «примерно» — не «точно». Насколько неточно? Почему именно такая погрешность? Откуда берётся эта случайность?
В 1859 году Бернхард Риман написал единственную статью по теории чисел — 8 страниц. В ней он ответил: простые числа не случайны. У них есть скрытая гармония. И он знал, где она спрятана.
Дзета-функция: мост между анализом и арифметикой
Дзета-функция Римана:
При : ряд сходится к (Эйлер, 1734). — из суммы целых чисел.
Но Эйлер ещё в 1737 году заметил нечто поразительное:
Произведение по всем простым числам равно сумме по всем натуральным.
Это формула Эйлера — первый мост между анализом и теорией простых чисел. Каждое простое число «вносит свой вклад» в значение .
Риман сделал шаг дальше: он аналитически продолжил на всю комплексную плоскость — туда, где ряд уже не сходится.
Нули и «музыка простых чисел»
У есть тривиальные нули: — они не интересны.
Есть нетривиальные нули — в «критической полосе» . Риман вычислил несколько первых: все они лежат на прямой .
Гипотеза Римана (1859): все нетривиальные нули лежат на критической прямой .
Проверено компьютером для первых нулей. Все на прямой. Не доказано ни для одного нуля аналитически.
Это одна из задач тысячелетия Института Клэя. Приз: $1 000 000.
Почему нули связаны с простыми числами?
Риман показал явную формулу:
где сумма идёт по всем нетривиальным нулям дзета-функции.
Каждый нуль задаёт волну с «частотой» , которая вычитается из гладкого приближения .
Простые числа — это наложение волн, частоты которых определяются нулями .
Математик Дон Загье сказал об этом так:
«Это как если бы в случайном шуме шагов толпы вдруг услышать чёткую музыку.»
Чаепитие в Принстоне: квантовый хаос
1972 год. Хью Монтгомери изучал статистику расстояний между нулями и получил формулу для парной корреляции.
На чаепитии в Принстоне он рассказал об этом Фримену Дайсону — физику, работавшему над квантовым хаосом и случайными матрицами.
Дайсон мгновенно узнал формулу: GUE (Gaussian Unitary Ensemble).
GUE — статистика уровней энергии сложных квантовых систем: тяжёлых атомных ядер, квантового биллиарда, систем с хаотической классической динамикой.
Статистика нулей дзета-функции = статистика квантовых энергетических уровней.
Эти объекты не имеют ничего общего. Одна сторона — чистая математика (простые числа). Другая — физика (квантовые уровни).
Это называется связью Монтгомери–Дайсона. Объяснения нет до сих пор.
Гипотеза Гильберта–Пойа: нули являются собственными значениями некоего эрмитова оператора. Если это так — гипотеза Римана автоматически следует (собственные значения эрмитова оператора вещественны → все нули на критической прямой).
Оператор не найден.
и эффект Казимира
При формальный ряд даёт
Это расходится — но аналитическое продолжение дзета-функции даёт:
Это знаменитое «равенство» , которое ужасает и восхищает одновременно.
Это не значит, что сумма «равна» в обычном смысле. Это значит, что аналитическое продолжение дзета-функции принимает это значение — и эта процедура физически значима.
Эффект Казимира (1948): две незаряженные параллельные металлические пластины притягиваются в вакууме. Причина — квантовые флуктуации вакуума: между пластинами могут существовать только волны с определёнными длинами, снаружи — все. Сила привлечения вычисляется через регуляризацию суммы, аналогичной , и даёт как регуляризованное значение.
Казимир экспериментально подтверждён. Физика использует «бессмысленную» сумму и получает правильный результат.
Перельман: связь через энтропию
Григорий Перельман в доказательстве гипотезы Пуанкаре ввёл энтропийный функционал :
Он монотонно возрастает вдоль потока Риччи — это «термодинамическое стрелка времени» для геометрии. Та же математика, что в информационной теории (энтропия Шеннона).
Связь с дзета-функцией: существует геометрическая дзета-функция, определённая через спектр оператора Лапласа на многообразии. Её нули кодируют геометрию пространства — аналогично тому, как нули кодируют простые числа.
Перельман, Риман, Монтгомери, Дайсон — они все смотрели на одно и то же с разных сторон.
Упражнения: исследование на Python
1. Простые числа и теорема о распределении
import numpy as np
import matplotlib.pyplot as plt
from sympy import primepi, li
# Сравнить π(x), x/ln(x) и Li(x)
x_vals = np.logspace(1, 6, 1000)
pi_x = [primepi(int(x)) for x in x_vals] # точное количество простых
approx = x_vals / np.log(x_vals) # приближение Гаусса
li_x = [float(li(x)) for x in x_vals] # интегральный логарифм Римана
plt.figure(figsize=(12, 5))
plt.loglog(x_vals, pi_x, 'k-', label='π(x) — точное')
plt.loglog(x_vals, approx, 'r--', label='x/ln(x)')
plt.loglog(x_vals, li_x, 'b:', label='Li(x)')
plt.xlabel('x')
plt.ylabel('количество простых ≤ x')
plt.legend()
plt.title('Теорема о простых числах: три приближения')
plt.show()
Наблюдение: Li(x) значительно точнее, чем x/ln(x). Разность π(x) - Li(x) колеблется вокруг нуля — это «музыка нулей».
2. Визуализация дзета-функции на критической прямой
import numpy as np
import matplotlib.pyplot as plt
from mpmath import zeta, zetazero
# Значения ζ(1/2 + it) при t от 0 до 50
t_vals = np.linspace(0.1, 50, 5000)
zeta_vals = [complex(zeta(0.5 + 1j * t)) for t in t_vals]
fig, axes = plt.subplots(1, 2, figsize=(14, 5))
# График |ζ(1/2 + it)|
axes[0].plot(t_vals, [abs(z) for z in zeta_vals], 'b-', linewidth=0.8)
axes[0].set_xlabel('t')
axes[0].set_ylabel('|ζ(1/2 + it)|')
axes[0].set_title('Модуль дзета-функции на критической прямой')
# Нули — там, где модуль близок к 0
# Первые нули: t ≈ 14.13, 21.02, 25.01, 30.42, 32.93...
for n in range(1, 11):
zero = float(zetazero(n).imag)
axes[0].axvline(x=zero, color='r', alpha=0.5, linewidth=0.5)
# Траектория в комплексной плоскости
axes[1].plot([z.real for z in zeta_vals],
[z.imag for z in zeta_vals], 'b-', linewidth=0.3)
axes[1].plot(0, 0, 'ro', markersize=8, label='нуль')
axes[1].set_xlabel('Re(ζ)')
axes[1].set_ylabel('Im(ζ)')
axes[1].set_title('Траектория ζ(1/2+it) в комплексной плоскости')
axes[1].axhline(0, color='k', linewidth=0.5)
axes[1].axvline(0, color='k', linewidth=0.5)
plt.tight_layout()
plt.show()
3. «Услышать» простые числа
import numpy as np
from scipy.io.wavfile import write
from mpmath import zetazero
# Синтезировать звук из первых N нулей дзета-функции
N_zeros = 30
sample_rate = 44100
duration = 10 # секунд
t = np.linspace(0, duration, int(sample_rate * duration))
signal = np.zeros_like(t)
for n in range(1, N_zeros + 1):
# n-й нуль дзета-функции: ζ(1/2 + i*gamma_n) = 0
gamma_n = float(zetazero(n).imag)
# Каждый нуль даёт синусоиду с "частотой" gamma_n/(2π) Гц
freq = gamma_n / (2 * np.pi)
signal += np.sin(2 * np.pi * freq * t) / n # амплитуда убывает
# Нормализация и сохранение
signal = signal / np.max(np.abs(signal))
write('primes_music.wav', sample_rate, (signal * 32767).astype(np.int16))
print("Сохранено: primes_music.wav")
print(f"Первые 5 нулей (γ_n): {[float(zetazero(n).imag) for n in range(1,6)]}")
Полученный звук — это буквально «музыка простых чисел»: каждый нуль дзета-функции даёт свой тон, вместе они строят распределение простых чисел.
4. Статистика пробелов: сравнение с GUE
import numpy as np
import matplotlib.pyplot as plt
from mpmath import zetazero
# Первые 200 нулей
N = 200
zeros = [float(zetazero(n).imag) for n in range(1, N+1)]
# Нормированные пробелы между нулями
gaps = np.diff(zeros)
mean_gap = np.mean(gaps)
normalized_gaps = gaps / mean_gap
# Распределение нормированных пробелов
plt.figure(figsize=(10, 5))
plt.hist(normalized_gaps, bins=30, density=True, alpha=0.7,
label='Нули ζ(s)')
# Теоретическое распределение GUE (Уигнера)
s = np.linspace(0, 3, 300)
wigner_surmise = (np.pi / 2) * s * np.exp(-np.pi * s**2 / 4)
plt.plot(s, wigner_surmise, 'r-', linewidth=2, label='GUE (Вигнер)')
# Для сравнения: случайное распределение (Пуассон)
plt.plot(s, np.exp(-s), 'g--', linewidth=2, label='Случайные (Пуассон)')
plt.xlabel('Нормированный пробел')
plt.ylabel('Плотность вероятности')
plt.title('Связь Монтгомери–Дайсона: нули ζ(s) vs квантовый хаос')
plt.legend()
plt.show()
Наблюдение: гистограмма нулей совпадает с кривой Вигнера (GUE), а не с пуассоновским распределением случайных чисел. Простые числа — не случайны.
Метаурок: что мы на самом деле не понимаем
| Объект | Можем вычислять | Не можимаем объяснить |
|---|---|---|
| Простые числа | алгоритм за | почему GUE, почему Риман |
| 12 знаков после запятой | почему именно это число | |
| 5 знаков, и те расходятся | связь с квантовой механикой | |
| Кватернионы в мозге | формально описано | почему эволюция выбрала SU(2) |
| регуляризация → | почему этот «ответ» физически верен |
Это не список нерешённых задач. Это список границ понимания. Мы умеем работать с этими объектами. Мы не знаем, почему они устроены именно так.
Вигнер в 1960 году: «Непостижимая эффективность математики — это чудо, которое мы не понимаем и не заслуживаем.»
Связь с нарративной осью
Риман написал 8 страниц — и открыл гармонию, которую математики ищут 165 лет. Монтгомери выпил чай с Дайсоном — и соединил числа с квантовым хаосом. Перельман доказал гипотезу Пуанкаре — и отверг миллион долларов.
Они все смотрели в одну точку: туда, где математические структуры неожиданно совпадают с физическими.
Это совпадение — либо случайность (невероятная), либо знак того, что математика и физика описывают одно и то же.
Пенроуз верит во второе.
→ Нереальные числа, описывающие реальность: октонионы, группы Ли — те же «совпадения» в алгебре → Постоянная тонкой структуры: загадочное число 1/137: α = 1/137 — ещё одно число без объяснения → Три щели: трогаем руками фундамент квантовой механики: правило Борна — аксиома, которую проверяют, не понимая → Множество Мандельброта: бесконечная сложность из двух строк: комплексная плоскость, бесконечная сложность из простого правила