減衰調和振動
減衰調和振動1
バネ定数を$k$とするとき、単振動の運動方程式は次のようになる。
$$ m \ddot {x}+kx=0 $$
単振動ではバネの復元力のみを考慮する。しかし、実際には摩擦力などの他の外力が物体の運動に影響を与えるため、これを無視することはできない。そこで、速度に比例する摩擦力があると仮定してみよう。この力を減速力retarding forceと言う。この減速力が働く振子の運動を減衰調和振動damped harmonic oscillationと言う。具体的な例には、空気抵抗などがある。減速力が$-c\dot{x}$のようであれば、運動方程式は以下のようになる。
$$ \begin{align*} && m \ddot{x} +c \dot{x} +kx&=0 \\ \implies && \ddot{x} +\frac{c}{m} \dot{x} +\frac{k}{m}x&=0 \end{align*} $$
ここで、${\omega_{0}}^{2}=\frac{k}{m}$で代替すると、$\gamma = \frac{c}{2m}$とする。このとき、$\omega_{0}$を固有角振動数、$\gamma $を減衰係数damping factorと呼ぶ。すると、運動方程式は下のようになる。
$$ \ddot{x} + 2\gamma \dot{x} + {\omega_{0}} ^{2} x=0 $$
このような微分方程式は微分演算子$D:=\frac{ d }{ d t}$を利用して簡単に解ける。微分演算子を上の運動方程式に適用すると以下のようになる。
$$ \begin{align*} && D^{2}x + 2\gamma D x + {\omega_{0}} ^{2} x &=0 \\ \implies && \left( D^{2} +2\gamma D + {\omega_{0}} ^{2} \right)x &=0 \end{align*} $$
したがって、$D^{2}+2\gamma D +{\omega_{0}}^{2}=0$を解けばよい。この方程式の解は根の公式によって下のようになる。
$$ D=-\gamma \pm \sqrt{\gamma ^{2} -{\omega_{0}} ^{2} } $$
したがって、
$$ Dx = \left( -\gamma \pm \sqrt{\gamma ^{2} -{\omega_{0}} ^{2}} \right)x $$
これは単純な1階微分方程式なので、解は以下のように求めることができる。
$$ \begin{equation} x(t)=Ae^{(-\gamma + \sqrt{\gamma ^{2} -{\omega_{0}}^{2}})t }+Be^{(-\gamma - \sqrt{\gamma ^{2} -{\omega_{0}}^{2}})t } \label{eq1} \end{equation} $$
このとき、$A$、$B$は定数である。指数に根が含まれているため、上記の式のグラフは$\gamma ^{2}-{\omega_{0}}^{2}$の値によって異なる。
過減衰overdamping
$$ \gamma ^{2} - {\omega_{0}}^{2}>0 $$
平衡点からバネがついた物体を引っ張って放したとき、物体は平衡点に戻るが、図のように減衰力が強いために振動は起こらない。
臨界減衰critical damping
$$ {\gamma} ^{2} -{\omega_{0}}^{2}=0 $$
この場合、$\eqref{eq1}$の二つの解が同じである。したがって、第二の解を求める必要があり以下のように知られている。
$$ x(t)=Ae^{-\gamma t} +Bte^{-\gamma t} $$
過減衰と同様に振動は起こらないが、過減衰に比べて非常に速く平衡点近くまで到達することが分かる。
未減衰underdamping
$$ \gamma^{2} -{\omega_{0}}^{2} <0 $$
簡単にするために、$i\omega_{d}=\sqrt{\gamma^{2} - {\omega_{0}} ^{2}}$としよう。dはdampedの最初の文字から来ている。すると運動方程式は以下のようになる。
$$ x(t) = e^{-\gamma t}\left( A e^{i\omega_{d}t} + Be^{-i\omega_{d}t} \right) $$
このとき位置$x$は実数でなければならず、$x^{\ast}(t)=x(t)$を満たさなければならない。$^{\ast}$は共役複素数を意味する。これにより、以下の条件を得る。
$$ Ae^{i\omega_{d}t}+Be^{-i\omega_{d}t}=A^{\ast}e^{-i\omega_{d}t}+B^{\ast}e^{i\omega_{d}t} \implies B=A^{\ast} $$
したがって、運動方程式は以下のようになる。
$$ x(t) = e^{-\gamma t}\left( A e^{i\omega_{d}t} + A^{\ast}e^{-i\omega_{d}t} \right) $$
そして、$A=a+ib$とすると、以下の式が成立する。
$$ x(t) = e^{-\gamma t}\left[ a\left( e^{i\omega_{d}t}+e^{-i\omega_{d}t}\right) + ib\left( e^{i\omega_{d}t}-e^{-i\omega_{d}t}\right) \right] $$
オイラーの公式を適用すると、以下のようになる。
$$ x(t) = e^{-\gamma t}\left[ 2a\cos (\omega_{d}t)-2b\sin (\omega_{d}t) \right] $$
すると、三角関数の加法定理により、ある実数$A$、$\phi_{0}$に対して以下の式が成立する。
$$ x(t)=e^{-\gamma t}A \cos(\omega_{d}t+\phi_{0}) $$
$e^{-\gamma t}$によって、グラフの大きさは指数関数的に減少しつつ、前の二つの場合とは異なり$\cos$が含まれるために振動する。
シミュレーション
減衰調和振動子の場合、振動数と減衰係数の差によって、過減衰、臨界減衰、未減衰に分けられる。各状態で振動子がどのように動くかを視覚的に見ることができれば、理解するのに大きな助けになる。Juliaでは、単にグラフを描くことを超えて、非常に簡単にgifファイルを作成して保存することができる。以下は、減衰調和振動子のアニメーションを作成して保存するコードと、実際の実行画面である。
using Plots
O_γ=3
O_ω=1
function Overdamping(x)
0.5exp((-O_γ+sqrt(O_γ^2-O_ω^2))*x)+0.5exp((-O_γ-sqrt(O_γ^2-O_ω^2))*x)
end
C_γ=1
C_ω=1
function Criticaldamping(x)
exp(-C_γ*x)+x*exp(-C_γ*x)
end
U_γ=1
U_γ=U_γ^2
U_ω=5
U_ω=U_ω^2
function Underdamping(x)
real(exp.(-U_γ*x).*cos.(1im*sqrt(Complex(U_γ-U_ω))*x))
end
p = plot([Overdamping, Criticaldamping, Underdamping], zeros(0),label=["Overdamping" "Criticaldamping" "Underdamping"], xlim=(0,15), ylim=(-0.7,1.2))
anim = Animation()
for x = range(0, stop=15, length = 200)
push!(p, x, Float64[Overdamping(x), Criticaldamping(x), Underdamping(x)])
frame(anim)
end
gif(anim,"Damping_fps30.gif",fps=30)
参照
Grant R. Fowles and George L. Cassiday, Analytical Mechanics (7th Edition, 2005), p96-100 ↩︎