단순 조화 진동에서는 오로지 용수철에 의한 복원력만을 고려한다. 하지만 실제로는 마찰력 등의 다른 외력이 물체의 운동에 영향을 미치기 때문에 이를 무시할 수는 없다. 따라서 속도에 비례해서 작용하는 마찰력이 있다고 가정해보자. 이러한 힘을 제동력retarding force라 한다. 제동력이 작용하는 진자의 운동을 감쇠 조화 진동damped harmonic oscillation이라 한다. 구체적인 예로는 공기저항 등이 있다. 제동력이 −cx˙와 같다고 하면 운동 방정식은 다음과 같다.
⟹mx¨+cx˙+kxx¨+mcx˙+mkx=0=0
여기서 ω02=mk으로 치환하고, γ=2mc라고 하자. 이때 ω0를 고유각진동수, γ를 감쇠 인자damping factor라고 부른다. 그러면 운동 방정식은 아래와 같다.
x¨+2γx˙+ω02x=0
위와 같은 미분 방정식은 미분 연산자D:=dtd를 이용하여 쉽게 풀 수 있다. 미분 연산자로 위의 운동 방정식에 적용하면 아래와 같다.
⟹D2x+2γDx+ω02x(D2+2γD+ω02)x=0=0
따라서 D2+2γD+ω02=0을 풀면 된다. 이 방정식의 해는 근의 공식에 의해 아래와 같다.
그러면 삼각함수의 덧셈정리에 의해, 어떤 실수 A, ϕ0에 대해서 아래의 식이 성립한다.
x(t)=e−γtAcos(ωdt+ϕ0)
e−γt에 의해서 그래프의 크기는 지수적으로 감소하면서, 앞의 두 경우와는 달리 cos이 포함되기 때문에 진동을 한다.
시뮬레이션
감쇠 조화 진동자의 경우 진동수와 감쇠 인자의 차이에 따라 과다감쇠, 임계감쇠, 미급감쇠로 나뉘어진다. 각각의 상황에서 진동자가 어떻게 움직이는지 시각적으로 볼 수 있다면 이를 이해하는데 큰 도움이 된다. 줄리아에서는 단순히 그래프를 그리는 것을 넘어서 굉장히 쉽게 gif파일로 만들 수 있다. 다음은 감쇠 조화 진동자 움짤을 만들고 저장하는 코드와 실제 실행 화면이다.
using Plots
O_γ=3
O_ω=1function Overdamping(x)
0.5exp((-O_γ+sqrt(O_γ^2-O_ω^2))*x)+0.5exp((-O_γ-sqrt(O_γ^2-O_ω^2))*x)
end
C_γ=1
C_ω=1function Criticaldamping(x)
exp(-C_γ*x)+x*exp(-C_γ*x)
end
U_γ=1
U_γ=U_γ^2
U_ω=5
U_ω=U_ω^2function 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)