Затухание: куда уходит энергия колебаний

Реальные колебания всегда затухают — добавим силу трения и посмотрим, как амплитуда тает.

Затухание — потеря энергии колебаний из-за силы сопротивления, обычно пропорциональной скорости: $F_{\text{тр}} = -c\,v$.

Сила вязкого трения

Идеальный осциллятор колеблется вечно, но в реальности всегда есть потери: трение, сопротивление среды, внутренние деформации. Простейшая модель — вязкое трение, пропорциональное скорости и направленное против неё:

$$F_{\text{тр}} = -c\,v.$$

Коэффициент $c$ задаёт силу демпфирования. Полное уравнение движения становится $m a = -kx - cv$, то есть $a = \frac{-kx - cv}{m}$. Теперь на каждом шаге складываются две силы: упругая (от положения) и тормозящая (от скорости). Энергия колебаний постепенно переходит в тепло, и амплитуда падает.

Симуляция затухающих колебаний

Возьмём $k = 4$, $m = 1$, добавим $c = 0.5$ и проследим, как амплитуда уменьшается со временем.

k, m, c = 4.0, 1.0, 0.5
x, v, dt = 1.0, 0.0, 0.05
for n in range(0, 121):
    if n % 20 == 0:
        print(f"t={n*dt:.2f}  x={x:+.4f}")
    a = (-k*x - c*v) / m       # упругая + тормозящая
    v = v + a*dt
    x = x + v*dt

Вывод:

t=0.00  x=+1.0000
t=1.00  x=-0.2675
t=2.00  x=-0.4308
t=3.00  x=+0.4381
t=4.00  x=-0.0219
t=5.00  x=-0.2499
t=6.00  x=+0.1738

Тело по-прежнему колеблется (знак $x$ меняется), но размах падает: пики становятся всё ниже. Это недостаточное затухание (underdamped) — колебания есть, но угасают. Огибающая амплитуды спадает экспоненциально: $A(t) \sim e^{-\frac{c}{2m}t}$. Чем больше $c$, тем быстрее «сдувается» колебание.

Три режима затухания

Поведение системы качественно зависит от соотношения трения и упругости.

  • Недостаточное ($c$ мало): система колеблется с убывающей амплитудой — наш случай. Так ведёт себя гитарная струна или качели без подталкивания.
  • Критическое ($c = 2\sqrt{km}$): система возвращается к равновесию максимально быстро без колебаний. Это идеал для амортизаторов и доводчиков дверей.
  • Избыточное ($c$ велико): система медленно «вползает» в равновесие, тоже без колебаний, но вяло. Как стрелка прибора в густом масле.

Граница между колебательным и неколебательным поведением — критическое затухание $c_{\text{кр}} = 2\sqrt{km}$. Для наших $k = 4$, $m = 1$ это $c_{\text{кр}} = 4$; наше $c = 0.5$ много меньше, поэтому мы в колебательном режиме.

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

В коде затухание добавляется тривиально — ещё одним слагаемым в ускорении. Но именно здесь видна сила векторного/численного подхода: нам не нужно искать аналитическое решение затухающего осциллятора (оно громоздкое, с экспонентой и синусом), достаточно сложить силы и проинтегрировать. Любую новую силу — ветер, магнит, ещё одну пружину — добавляют тем же способом: посчитали суммарную силу, поделили на массу, сделали шаг. Это главное преимущество симуляции перед аналитикой: сложность сил не усложняет код.

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

  • Путать трение от скорости и от положения. Упругая сила зависит от $x$, трение — от $v$; это разные слагаемые.
  • Слишком большой $c$ при большом шаге. Сильное демпфирование с крупным $\Delta t$ может сделать явную схему неустойчивой — скорость «перепрыгнет» ноль.
  • Считать, что затухание всегда даёт колебания. При $c \ge 2\sqrt{km}$ колебаний нет вовсе — система просто сползает к равновесию.

Итог

  • Вязкое трение $F_{\text{тр}}=-cv$ добавляется слагаемым в ускорение.
  • Амплитуда затухающих колебаний спадает как $e^{-\frac{c}{2m}t}$.
  • Три режима: недо-, критическое ($c=2\sqrt{km}$) и избыточное затухание.
  • Симуляция позволяет складывать любые силы без вывода аналитического решения.
Проверьте себя
1. От чего зависит сила вязкого трения в модели затухания?
AОт положения x
BОт скорости v (направлена против неё)
CОт ускорения
DОт времени
2. Что происходит при критическом затухании c=2√(km)?
AКолебания усиливаются
BСистема возвращается к равновесию максимально быстро без колебаний
CПериод удваивается
DЭнергия сохраняется
3. Как в симуляции добавить новую силу (например, трение) к пружине?
AНужно вывести аналитическое решение
BПросто добавить её слагаемым в суммарную силу/ускорение перед шагом
CЭто невозможно без numpy
DПоменять интегратор