Полёт с сопротивлением воздуха

Когда нет формулы: полёт с сопротивлением воздуха решается только численно.

Квадратичное сопротивление — сила трения о воздух, пропорциональная квадрату скорости и направленная против движения; с ней уравнение движения теряет аналитическое решение.

Почему здесь нужна симуляция

Идеальный бросок решается формулой. Но реальный мяч, парашютист или снаряд испытывают сопротивление воздуха. Сила трения растёт с квадратом скорости и направлена назад: F_drag = -k·|v|·v (вектор скорости, умноженный на её модуль). Из-за этого квадрата уравнение становится нелинейным — точной формулы для траектории больше нет. Остаётся единственный путь: считать численно.

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

Сила сопротивления векторно

Трение тормозит вдоль направления движения. Если скорость (vx, vy), а её модуль v=√(vx²+vy²), то компоненты силы (на единицу массы): ax_drag = -k·v·vx, ay_drag = -k·v·vy. К вертикали добавляется ещё -g. Сравним бросок с сопротивлением и без него:

import math
g, v0 = 9.8, 30.0
ang = math.radians(45)
vx, vy = v0*math.cos(ang), v0*math.sin(ang)
x, y, t, dt = 0.0, 0.0, 0.0, 0.01
k = 0.02
while y >= 0:
    speed = math.hypot(vx, vy)
    ax = -k*speed*vx
    ay = -g - k*speed*vy
    vx += ax*dt; vy += ay*dt
    x += vx*dt;  y += vy*dt
    t += dt
print(f"С сопротивлением: дальность ≈ {x:5.1f} м, время {t:.2f} c")
R = v0*v0*math.sin(2*ang)/g
T = 2*v0*math.sin(ang)/g
print(f"Без сопротивления (формула): дальность {R:5.1f} м, время {T:.2f} c")

Вывод:

С сопротивлением: дальность ≈  41.3 м, время 3.35 c
Без сопротивления (формула): дальность  91.8 м, время 4.33 c

Сопротивление съело больше половины дальности (41 м против 92 м) и укоротило полёт. Траектория теперь несимметрична: нисходящая ветвь круче восходящей, потому что на спуске скорость, а с ней и торможение, меньше. Никакая школьная формула этого не даст.

Предельная скорость

Симуляция показывает ещё один эффект — предельную (терминальную) скорость. При падении тело разгоняется, пока сопротивление не уравновесит тяжесть: k·v² = g. После этого ускорение нулевое, скорость постоянна. Парашютист падает с постоянной скоростью именно поэтому. Это предельный случай, по которому удобно проверять симуляцию: при долгом падении вертикальная скорость должна выйти на v_term = √(g/k).

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

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

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

  • Брать силу пропорциональной v, а не v·|v|. Для быстрых тел сопротивление квадратично; линейная модель годится лишь для очень медленного движения (закон Стокса).
  • Забыть, что трение векторно. Оно тормозит обе компоненты скорости, а не только вертикальную.
  • Слишком крупный шаг при больших скоростях. Резкое торможение требует мелкого dt, иначе скорость «перелетает» через ноль и осциллирует.

Итоги

  • Квадратичное сопротивление делает уравнение нелинейным — аналитики нет.
  • Сила трения векторна: -k·|v|·v, тормозит вдоль скорости.
  • Сопротивление резко укорачивает полёт и делает траекторию несимметричной.
  • Предельная скорость √(g/k) — удобный тест симуляции.
Проверьте себя
1. Почему полёт с квадратичным сопротивлением воздуха решают численно?
AТак быстрее печатать код
BСила, пропорциональная квадрату скорости, делает уравнение нелинейным — точной формулы нет
CФормула существует, но её трудно набрать
DИз-за округления чисел
2. Чему равна предельная (терминальная) скорость падения при квадратичном сопротивлении?
AНулю
B√(g/k), когда сопротивление уравновешивает тяжесть
CБесконечности
DНачальной скорости v0
3. Как меняется траектория при добавлении сопротивления воздуха?
AОстаётся симметричной параболой
BСтановится несимметричной: нисходящая ветвь круче, дальность падает
CПревращается в прямую
DТело улетает дальше