Main Content

감쇠 조화 진동자의 물리학

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

목차

  1. 운동 방정식 도출하기

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

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

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

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

  6. 결론

1. 운동 방정식 도출하기

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

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

  • 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) = 

m2t2 x(t)+ct x(t)+kx(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) = 

m2t2 x(t)+γmt x(t)+mx(t)ω02=F(t)

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

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

2t2 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+σ1etγ2-4ω0222-γσ1σ22γ2-4ω02+γσ1etγ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ω02e-γt2where  σ1=tγ2-4ω022

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

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

γ24ω02=2ω0(γ2ω0)21=2ω0ζ21,

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-ω0tζ2-1  σ2=eω0tζ2-1

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

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

e-ω0tζσ22+σ12+ζσ22ζ2-1-ζσ12ζ2-1where  σ1=e-ω0tζ2-1  σ2=eω0tζ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-ω0tζσ12+σ22+ζσ1i21-ζ2-ζσ2i21-ζ2where  σ1=e-ω0t1-ζ2i  σ2=eω0t1-ζ2i

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

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

solUnder = coeffs(solUnder, zeta);
solUnder = solUnder(1);
c = exp(-omega_0 * zeta * t);
solUnder = c * rewrite(solUnder / c, 'cos')
solUnder = e-ω0tζcos(ω0t1-ζ2)
solUnder(t, omega_0, zeta) = solUnder
solUnder(t, omega_0, zeta) = e-ω0tζcos(ω0t1-ζ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('t / \omega_0');
ylabel('amplitude');
lgd = legend('0','1/4','1/2','3/4');
title(lgd,'\zeta');
title('Underdamped');

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

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

solOver = sol
solOver = 

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

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

e-ω0tζeω0tζ2-12+e-ω0tζ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(ω0tζ2-1)e-ω0tζ
solOver(t, omega_0, zeta) = solOver
solOver(t, omega_0, zeta) = cosh(ω0tζ2-1)e-ω0tζ

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

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');

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

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

solCritical(t, omega_0) = limit(sol, zeta, 1)
solCritical(t, omega_0) = e-ω0tω0t+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'});

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');

참고 항목

함수