주요 콘텐츠

감쇠 조화 진동자의 물리학

R2026b

이 예제에서는 구동력이 없는 경우의 운동 방정식을 풀어 감쇠 조화 진동자의 물리학을 살펴봅니다. 이 예제에서는 저감쇠, 과감쇠, 임계감쇠의 경우를 조사합니다.

Plot showing the amplitude of a damped harmonic oscillator over time, for underdamped, overdamped, and critically damped conditions

목차

  1. 운동 방정식 도출하기

  2. 운동 방정식 풀기(F = 0)

  3. 저감쇠의 경우(ζ<1)

  4. 과감쇠의 경우(ζ>1)

  5. 임계감쇠의 경우(ζ=1)

  6. 결론

1. 운동 방정식 도출하기

아래에 표시된 것처럼 감쇠가 있는 강제 조화 진동자를 가정해 보겠습니다. 진동자가 움직이는 속도에 비례하는 저항력을 모델링합니다.

Mass-spring-damper system

운동 방정식을 정의합니다. 여기서 각각은 다음과 같습니다.

  • m은 질량입니다.

  • c는 감쇠 계수입니다.

  • k는 스프링 상수입니다.

  • F는 구동력입니다.

syms x(t) m c k F(t)
eq = m*diff(x,t,t) + c*diff(x,t) + k*x == F
eq(t) = 

m ∂2∂t2 x(t)+c ∂∂t x(t)+k x(t)=F(t)

c=mγ와 k=mω02을 사용하여 방정식을 재작성합니다.

syms gamma omega_0
eq = subs(eq,[c k],[m*gamma m*omega_0^2])
eq(t) = 

m ∂2∂t2 x(t)+γ m ∂∂t x(t)+m x(t) ω02=F(t)

질량 m으로 나눕니다. 이제 해석하기에 편리한 형식의 방정식이 만들어졌습니다.

eq = collect(eq,m)/m
eq(t) = 

∂2∂t2 x(t)+γ ∂∂t x(t)+x(t) ω02=F(t)m

2. 운동 방정식 풀기(F = 0)

외력이 없는 경우(즉, F=0) dsolve를 사용하여 운동 방정식을 풉니다. 단위 변위와 속도 0을 초기 조건으로 사용합니다.

vel = diff(x,t);
cond = [x(0) == 1, vel(0) == 0];
eq = subs(eq,F,0);
sol = dsolve(eq,cond)
sol = 

e-t γ2-σ12 γ+σ12 σ1-e-t γ2+σ12 γ-σ12 σ1where  σ1=γ-2 ω0 γ+2 ω0

해를 전개하여 해를 단순화하는 방법을 검토합니다.

sol = expand(sol)
sol = 

σ1 σ22+σ1 et γ2-4 ω0222-γ σ1 σ22 γ2-4 ω02+γ σ1 et γ2-4 ω0222 γ2-4 ω02where  σ1=e-γ t2  σ2=e-t γ2-4 ω022

각 항에는 σ1 인수 또는 e-γt/2 인수가 있으며 collect를 사용하여 이들 항을 수집합니다.

sol = collect(sol,exp(-gamma*t/2))
sol = 

e-σ12+eσ12-γ e-σ12 γ2-4 ω02+γ eσ12 γ2-4 ω02 e-γ t2where  σ1=t γ2-4 ω022

항 γ2-4ω02은 해의 여러 부분에 나타납니다. 감쇠비 ζ≡γ2ω0를 적용하여 더 단순한 형식으로 재작성합니다.

ζ를 위의 항에 대입하면 다음과 같습니다.

γ2-4ω02=2ω0(γ2ω0)2-1=2ω0ζ2-1,

syms zeta;
sol = subs(sol, ...
    sqrt(gamma^2 - 4*omega_0^2), ...
    2*omega_0*sqrt(zeta^2-1))
sol = 

e-γ t2 σ22+σ12+γ σ24 ω0 ζ2-1-γ σ14 ω0 ζ2-1where  σ1=e-ω0 t ζ2-1  σ2=eω0 t ζ2-1

ω0 및 ζ를 γ에 대입하여 해를 더욱 단순화합니다.

sol = subs(sol,gamma,2*zeta*omega_0)
sol = 

e-ω0 t ζ σ22+σ12+ζ σ22 ζ2-1-ζ σ12 ζ2-1where  σ1=e-ω0 t ζ2-1  σ2=eω0 t ζ2-1

구동력이 없는 감쇠 조화 진동자의 운동에 대한 일반해를 도출해 보았습니다. 다음으로 감쇠비 ζ의 3가지 특수한 경우를 살펴보겠습니다. 이 경우, 운동은 더 단순한 형태를 갖습니다. 이러한 3가지 경우는 다음과 같이 불립니다.

  • 저감쇠(ζ<1)

  • 과감쇠(ζ>1)

  • 임계감쇠(ζ=1)

3. 저감쇠의 경우(ζ<1)

ζ<1이면 ζ2-1=i1-ζ2은 순수 허수입니다.

solUnder = subs(sol,sqrt(zeta^2-1),1i*sqrt(1-zeta^2))
solUnder = 

e-ω0 t ζ σ12+σ22+ζ σ1 i2 1-ζ2-ζ σ2 i2 1-ζ2where  σ1=e-ω0 t 1-ζ2 i  σ2=eω0 t 1-ζ2 i

위 방정식에 있는 항 eiω0tζ2-1±e-iω0tζ2-1에 주목하고 항등식 eix=cos(x)+isin(x).를 다시 살펴봅니다.

해를 cos에 대해 재작성합니다

solUnder = coeffs(solUnder,zeta);
solUnder = solUnder(1);
c = exp(-omega_0*zeta*t);
solUnder = c*rewrite(solUnder/c,"cos")
solUnder = e-ω0 t ζ cos(ω0 t 1-ζ2)
solUnder(t,omega_0,zeta) = solUnder
solUnder(t, omega_0, zeta) = e-ω0 t ζ cos(ω0 t 1-ζ2)

시스템은 ω01-ζ2의 고유 주파수에서 진동하고 1/ω0ζ의 지수적 레이트로 감쇠합니다.

ω0t 및 ζ의 함수로 나타낸 fplot으로 해를 플로팅합니다.

z = [0 1/4 1/2 3/4];
w = 1;
T = 4*pi;
lineStyle = {"-","--",":k","-."};

fplot(@(t) solUnder(t,w,z(1)),[0 T],lineStyle{1});

hold on;
for k = 2:numel(z)
    fplot(@(t) solUnder(t,w,z(k)),[0 T],lineStyle{k});
end
hold off;
grid on;
xticks(T*linspace(0,1,5));
xticklabels({"0","\pi","2\pi","3\pi","4\pi"});
xlabel("\omega_0 t");
ylabel("amplitude");
lgd = legend("0","1/4","1/2","3/4");
title(lgd,"\zeta");
title("Underdamped");

Figure contains an axes object. The axes object with title Underdamped, xlabel omega indexOf 0 baseline t, ylabel amplitude contains 4 objects of type functionline. These objects represent 0, 1/4, 1/2, 3/4.

4. 과감쇠의 경우(ζ>1)

ζ>1이면 ζ2-1은 순수 실수이며 해는 다음으로 재작성할 수 있습니다.

solOver = sol
solOver = 

e-ω0 t ζ σ22+σ12+ζ σ22 ζ2-1-ζ σ12 ζ2-1where  σ1=e-ω0 t ζ2-1  σ2=eω0 t ζ2-1

solOver = coeffs(solOver,zeta);
solOver = solOver(1)
solOver = 

e-ω0 t ζ eω0 t ζ2-12+e-ω0 t ζ2-12

항 (eω0tζ2-1+e-ω0tζ2-1)2에 주목하고 항등식 cosh(x)=ex+e-x2을 다시 살펴봅니다.

표현식을 cosh에 대해 재작성합니다.

c = exp(-omega_0*t*zeta);
solOver = c*rewrite(solOver/c,"cosh")
solOver = cosh(ω0 t ζ2-1) e-ω0 t ζ
solOver(t,omega_0,zeta) = solOver
solOver(t, omega_0, zeta) = cosh(ω0 t ζ2-1) e-ω0 t ζ

해를 플로팅하여 진동 없이 감쇠하는지 확인합니다.

z = 1 + [1/4 1/2 3/4 1];
w = 1;
T = 4*pi;
lineStyle = {"-","--",":k","-."};

fplot(@(t) solOver(t,w,z(1)),[0 T],lineStyle{1});

hold on;
for k = 2:numel(z)
    fplot(@(t) solOver(t,w,z(k)),[0 T],lineStyle{k});
end
hold off;
grid on;
xticks(T*linspace(0,1,5));
xticklabels({"0","\pi","2\pi","3\pi","4\pi"});
xlabel("\omega_0 t");
ylabel("amplitude");
lgd = legend("1+1/4","1+1/2","1+3/4","2");
title(lgd,"\zeta");
title("Overdamped");

Figure contains an axes object. The axes object with title Overdamped, xlabel omega indexOf 0 baseline t, ylabel amplitude contains 4 objects of type functionline. These objects represent 1+1/4, 1+1/2, 1+3/4, 2.

5. 임계감쇠의 경우(ζ=1)

ζ=1이면 해는 다음과 같이 단순화됩니다.

solCritical(t,omega_0) = limit(sol,zeta,1)
solCritical(t, omega_0) = e-ω0 t ω0 t+1

임계감쇠된 경우에 대한 해를 플로팅합니다.

w = 1;
T = 4*pi;

fplot(solCritical(t, w), [0 T])
xlabel("\omega_0 t");
ylabel("x");
title("Critically damped, \zeta = 1");
grid on;
xticks(T*linspace(0,1,5));
xticklabels({"0","\pi","2\pi","3\pi","4\pi"});

Figure contains an axes object. The axes object with title Critically damped, zeta = 1, xlabel omega indexOf 0 baseline t, ylabel x contains an object of type functionline.

6. 결론

감쇠비 ζ를 사용해 조화 진동자의 운동을 표현하는 ODE의 해를 구하여 조화 진동자에 대한 다양한 감쇠 상태를 검토해 보았습니다. 3가지 경우 모두를 함께 플로팅하여 비교하고 대조합니다.

zOver  = pi;
zUnder = 1/zOver;
w = 1;
T = 2*pi;
lineStyle = {"-","--",":k"};

fplot(@(t) solOver(t,w,zOver),[0 T],lineStyle{1},LineWidth=2);
hold on;
fplot(solCritical(t, w), [0 T], lineStyle{2},LineWidth=2)
fplot(@(t) solUnder(t,w,zUnder),[0 T],lineStyle{3},LineWidth=2);
hold off;

textColor = lines(3);
text(3*pi/2,0.3 ,"over-damped"      ,Color=textColor(1,:));
text(pi*3/4,0.05,"critically-damped",Color=textColor(2,:));
text(pi/8  ,-0.1,"under-damped");

grid on;
xlabel("\omega_0 t");
ylabel("amplitude");
xticks(T*linspace(0,1,5));
xticklabels({"0","\pi/2","\pi","3\pi/2","2\pi"});
yticks((1/exp(1))*[-1 0 1 2 exp(1)]);
yticklabels({"-1/e","0","1/e","2/e","1"});
lgd = legend("\pi","1","1/\pi");
title(lgd,"\zeta");
title("Damped Harmonic Oscillator");

Figure contains an axes object. The axes object with title Damped Harmonic Oscillator, xlabel omega indexOf 0 baseline t, ylabel amplitude contains 6 objects of type functionline, text. These objects represent \pi, 1, 1/\pi.

참고 항목

함수