Законы Ньютона как уравнения движения
Как второй закон Ньютона становится дифференциальным уравнением, которое решает компьютер.
Уравнение движения — это второй закон Ньютона
a = F/m, записанный как правило: зная силу в текущем состоянии, мы знаем ускорение, а значит можем сделать шаг во времени.
От силы к ускорению
Вся классическая динамика держится на одной строчке: F = m·a. Ускорение — это скорость изменения скорости, а скорость — скорость изменения координаты. Получается связка из двух уравнений первого порядка:
dx/dt = v (координата меняется со скоростью) dv/dt = a = F/m (скорость меняется с ускорением)
Если мы умеем вычислить силу F в любой точке (для пружины F=-kx, для гравитации F=-GMm/r², для падения F=-mg), то знаем ускорение, и симуляция сводится к повторению двух обновлений. Это состояние системы: пара «координата, скорость». Зная состояние сейчас, мы вычисляем его чуть позже.
Фазовое пространство
Удобно представлять движение не как график x(t), а как точку в фазовом пространстве — на плоскости «координата–скорость». Каждое мгновение — точка (x, v), а движение — кривая (фазовый портрет). Для незатухающего осциллятора это эллипс (система ходит по кругу), для затухающего — спираль к центру. Фазовый портрет показывает динамику целиком, без привязки к времени.
Шаг во времени
Самый прямой способ сделать шаг — обновить скорость по ускорению, а координату по скорости. Реализуем тело под постоянной силой тяжести и сравним с точной формулой y = h0 - g·t²/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) показывает динамику целиком.
- Простой метод копит ошибку — это видно уже на свободном падении.