Законы Ньютона как уравнения движения
Как второй закон Ньютона становится дифференциальным уравнением, которое решает компьютер.
Уравнение движения — это второй закон Ньютона $a = F/m$, записанный как правило: зная силу в текущем состоянии, мы знаем ускорение, а значит можем сделать шаг во времени.
От силы к ускорению
Вся классическая динамика держится на одной строчке: $F = ma$. Ускорение — это скорость изменения скорости, а скорость — скорость изменения координаты. Получается связка из двух уравнений первого порядка:
$$\begin{aligned} dx/dt &= v \\ dv/dt &= a = F/m \end{aligned}$$
Если мы умеем вычислить силу $F$ в любой точке (для пружины $F = -kx$, для гравитации $F = -\frac{GMm}{r^2}$, для падения $F = -mg$), то знаем ускорение, и симуляция сводится к повторению двух обновлений. Это состояние системы: пара «координата, скорость». Зная состояние сейчас, мы вычисляем его чуть позже.
Фазовое пространство
Удобно представлять движение не как график $x(t)$, а как точку в фазовом пространстве — на плоскости «координата–скорость». Каждое мгновение — точка $(x, v)$, а движение — кривая (фазовый портрет). Для незатухающего осциллятора это эллипс (система ходит по кругу), для затухающего — спираль к центру. Фазовый портрет показывает динамику целиком, без привязки к времени.
Шаг во времени
Самый прямой способ сделать шаг — обновить скорость по ускорению, а координату по скорости. Реализуем тело под постоянной силой тяжести и сравним с точной формулой $y = h_0 - g t^2/2$:
g, h0, dt = 9.8, 100.0, 0.05
y, v, t = h0, 0.0, 0.0
print(" t y_числ y_точн разница")
next_print = 0.0
while t <= 2.0001:
if t >= next_print - 1e-9:
y_exact = h0 - 0.5*g*t*t
print(f"{t:4.1f} {y:8.3f} {y_exact:8.3f} {y-y_exact:+.4f}")
next_print += 0.5
a = -g
v += a*dt
y += v*dt
t += dtВывод:
t y_числ y_точн разница 0.0 100.000 100.000 +0.0000 0.5 98.652 98.775 -0.1225 1.0 94.855 95.100 -0.2450 1.5 88.607 88.975 -0.3675 2.0 79.910 80.400 -0.4900
Численное решение отстаёт от точного — расхождение растёт со временем. Это «болезнь» простого метода: на каждом шаге мы используем скорость в начале интервала, а реально она меняется. В следующем разделе разберём, как это лечится.
Как работает под капотом
Компьютер не понимает «уравнение» — он понимает цикл. Дифференциальное уравнение $dv/dt = F/m$ он видит как «прибавь к $v$ величину $(F/m)\,dt$». Любая динамика, от пушинки до планеты, в коде выглядит одинаково: вычислить силу → обновить скорость → обновить координату → повторить. Разные физические задачи отличаются только функцией силы.
Частые ошибки
- Перепутать порядок обновлений. Сначала по ускорению меняем скорость или координату? От этого зависит, какой получится метод (об этом — отдельный урок).
- Забыть знак силы. Возвращающая сила пружины и тяготения — со знаком минус; ошибка в знаке «выталкивает» тело наружу.
- Считать, что простой метод всегда годится. Для коротких симуляций — да, для орбит и колебаний на тысячи шагов — нет.
Итоги
- Второй закон Ньютона — это пара уравнений первого порядка для координаты и скорости.
- Состояние системы — пара (x, v); шаг во времени обновляет обе величины.
- Фазовое пространство (x, v) показывает динамику целиком.
- Простой метод копит ошибку — это видно уже на свободном падении.