Законы Ньютона как уравнения движения

Как второй закон Ньютона становится дифференциальным уравнением, которое решает компьютер.

Уравнение движения — это второй закон Ньютона 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) показывает динамику целиком.
  • Простой метод копит ошибку — это видно уже на свободном падении.
Проверьте себя
1. Что такое «состояние» механической системы в симуляции?
AТолько координата тела
BПара «координата и скорость», по которой можно сделать следующий шаг
CТолько сила, действующая на тело
DЗначение энергии
2. Что показывает фазовое пространство?
AГрафик координаты от времени
BДвижение как кривую на плоскости координата–скорость
CРаспределение энергии по частицам
DСпектр частот колебаний
3. Почему в примере свободного падения численная высота отстаёт от точной?
AОшибка в физической формуле
BМетод использует скорость в начале интервала, а она за шаг меняется
CСлишком большое g
DКомпьютер округляет неправильно