Что такое вычислительная физика
Что такое вычислительная физика и почему её называют третьим столпом науки.
Вычислительная физика — раздел физики, в котором численные методы и компьютерные симуляции применяют, чтобы изучать явления, недоступные для аналитического решения или прямого эксперимента.
Три столпа науки
Несколько веков физика стояла на двух ногах. Теория выводит уравнения из принципов: Ньютон записал законы движения, Максвелл — уравнения поля. Эксперимент проверяет эти уравнения измерениями: бросает камни, гоняет ток, ловит частицы. Этого хватало, пока уравнения удавалось решать карандашом, а опыты — ставить в лаборатории.
Но большинство реальных уравнений физики не имеют решения в формулах. Три тела под взаимной гравитацией, турбулентный поток воздуха, миллион взаимодействующих спинов в магните, столкновение галактик — для них нет «ответа», который можно записать через синусы и логарифмы. А многие опыты невозможны: нельзя столкнуть две настоящие галактики или подождать миллиард лет, чтобы увидеть эволюцию климата.
Здесь и появляется третий столп — вычислительный эксперимент. Мы берём точное уравнение, превращаем его в пошаговый алгоритм и «прогоняем» физику внутри компьютера. Получается виртуальная лаборатория, где можно столкнуть галактики, нагреть магнит и проследить за каждым атомом газа.
Что значит «решить численно»
Аналитическое решение даёт формулу: подставь время — получи положение. Численное решение даёт таблицу: зная состояние сейчас, вычисляем состояние чуть позже, потом ещё чуть позже, и так шаг за шагом. Мы не находим формулу — мы строим траекторию по точкам.
Сравним на простом падении. Аналитика говорит: высота 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». Дифференциальное уравнение превращается в рецепт «как из текущего состояния получить следующее». Компьютер повторяет этот рецепт миллионы раз.
Расплата за дискретность — ошибка. Чем крупнее шаг, тем сильнее симуляция расходится с истиной. Уменьшаем шаг — точнее, но дольше считать. Вся численная физика живёт в этом компромиссе между точностью и временем счёта.
Частые ошибки
- Считать вывод симуляции истиной. Любой результат нужно проверять: законами сохранения, предельными случаями, сравнением с аналитикой.
- Слишком крупный шаг. Симуляция «работает» и выдаёт красивые числа, но они физически неверны. Об этом — весь раздел про интеграторы.
- Путать модель и реальность. Симуляция верна ровно настолько, насколько верны заложенные в неё уравнения и параметры.
Итоги
- Вычислительная физика — третий столп рядом с теорией и экспериментом.
- Численное решение — это таблица состояний, построенная пошагово, а не формула.
- Симуляция незаменима, когда нет формулы или невозможен опыт.
- Главная дисциплина — проверять результат сохранением величин и сравнением с известным.