Что такое вычислительная физика

Что такое вычислительная физика и почему её называют третьим столпом науки.

Вычислительная физика — раздел физики, в котором численные методы и компьютерные симуляции применяют, чтобы изучать явления, недоступные для аналитического решения или прямого эксперимента.

Три столпа науки

Несколько веков физика стояла на двух ногах. Теория выводит уравнения из принципов: Ньютон записал законы движения, Максвелл — уравнения поля. Эксперимент проверяет эти уравнения измерениями: бросает камни, гоняет ток, ловит частицы. Этого хватало, пока уравнения удавалось решать карандашом, а опыты — ставить в лаборатории.

Но большинство реальных уравнений физики не имеют решения в формулах. Три тела под взаимной гравитацией, турбулентный поток воздуха, миллион взаимодействующих спинов в магните, столкновение галактик — для них нет «ответа», который можно записать через синусы и логарифмы. А многие опыты невозможны: нельзя столкнуть две настоящие галактики или подождать миллиард лет, чтобы увидеть эволюцию климата.

Здесь и появляется третий столп — вычислительный эксперимент. Мы берём точное уравнение, превращаем его в пошаговый алгоритм и «прогоняем» физику внутри компьютера. Получается виртуальная лаборатория, где можно столкнуть галактики, нагреть магнит и проследить за каждым атомом газа.

Что значит «решить численно»

Аналитическое решение даёт формулу: подставь время — получи положение. Численное решение даёт таблицу: зная состояние сейчас, вычисляем состояние чуть позже, потом ещё чуть позже, и так шаг за шагом. Мы не находим формулу — мы строим траекторию по точкам.

Сравним на простом падении. Аналитика говорит: высота y(t) = h0 - g·t²/2. Симуляция вместо этого делает маленькие шаги по времени dt: на каждом шаге обновляет скорость и координату. Вот свободное падение с высоты 45 метров, шаг 0.1 секунды:

import math
g, h0, dt = 9.8, 45.0, 0.1
y, v, t = h0, 0.0, 0.0
print("шаг  t(c)   y(м)    v(м/с)")
step = 0
while y > 0:
    if step % 5 == 0:
        print(f"{step:3d}  {t:4.1f}  {y:6.2f}  {v:7.2f}")
    v += -g*dt
    y += v*dt
    t += dt
    step += 1
print(f"Удар о землю: t ≈ {t:.1f} c")
print(f"Аналитика sqrt(2h/g) = {math.sqrt(2*h0/g):.3f} c")

Вывод:

шаг  t(c)   y(м)    v(м/с)
  0   0.0   45.00     0.00
  5   0.5   43.53    -4.90
 10   1.0   39.61    -9.80
 15   1.5   33.24   -14.70
 20   2.0   24.42   -19.60
 25   2.5   13.15   -24.50
Удар о землю: t ≈ 3.0 c
Аналитика sqrt(2h/g) = 3.030 c

Численный ответ (~3.0 c) совпал с формулой (3.030 c). Это важнейшая привычка вычислительной физики: всегда сверять симуляцию с тем, что мы умеем посчитать точно.

Когда симуляция незаменима

  • Нет формулы. Задача трёх и более тел, нелинейные колебания, хаос — аналитического решения просто не существует.
  • Эксперимент невозможен или опасен. Ядерные реакции, эволюция звёзд, климат на сто лет вперёд.
  • Эксперимент слишком дорог. Краш-тест автомобиля проще сначала «разбить» в симуляции тысячу раз.
  • Нужно заглянуть внутрь. В симуляции газа видно каждую молекулу — в реальном опыте это недоступно.

Как работает под капотом

В основе почти любой симуляции лежит один и тот же приём — дискретизация. Непрерывное время режут на маленькие шаги dt, непрерывное пространство — на сетку узлов dx. Производные (скорость, ускорение, градиент) заменяют конечными разностями: вместо «мгновенной» скорости берут «(изменение координаты) / dt». Дифференциальное уравнение превращается в рецепт «как из текущего состояния получить следующее». Компьютер повторяет этот рецепт миллионы раз.

Расплата за дискретность — ошибка. Чем крупнее шаг, тем сильнее симуляция расходится с истиной. Уменьшаем шаг — точнее, но дольше считать. Вся численная физика живёт в этом компромиссе между точностью и временем счёта.

Частые ошибки

  • Считать вывод симуляции истиной. Любой результат нужно проверять: законами сохранения, предельными случаями, сравнением с аналитикой.
  • Слишком крупный шаг. Симуляция «работает» и выдаёт красивые числа, но они физически неверны. Об этом — весь раздел про интеграторы.
  • Путать модель и реальность. Симуляция верна ровно настолько, насколько верны заложенные в неё уравнения и параметры.

Итоги

  • Вычислительная физика — третий столп рядом с теорией и экспериментом.
  • Численное решение — это таблица состояний, построенная пошагово, а не формула.
  • Симуляция незаменима, когда нет формулы или невозможен опыт.
  • Главная дисциплина — проверять результат сохранением величин и сравнением с известным.
Проверьте себя
1. Почему вычислительная физика называется «третьим столпом» науки?
AОна заменяет теорию и эксперимент
BОна дополняет теорию и эксперимент там, где нет формулы или невозможен опыт
CОна занимается только проверкой формул
DОна нужна лишь для красивой визуализации
2. Чем численное решение отличается от аналитического?
AОно даёт формулу зависимости от времени
BОно строит траекторию по точкам, шаг за шагом
CОно всегда точнее формулы
DОно не требует уравнения
3. Что такое дискретизация в симуляции?
AОкругление чисел до целых
BЗамена непрерывного времени и пространства маленькими шагами dt и dx
CУдаление лишних знаков после запятой
DПеревод задачи в другую систему единиц