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

Figure contains an axes object. The axes object with title Underdamped, xlabel t / blank omega indexOf 0 baseline, 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-ω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');

Figure contains an axes object. The axes object with title Overdamped, xlabel omega indexOf 0 baseline blank 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-ω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'});

Figure contains an axes object. The axes object with title Critically damped, zeta blank = blank 1, xlabel omega indexOf 0 baseline blank 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 blank t, ylabel amplitude contains 6 objects of type functionline, text. These objects represent \pi, 1, 1/\pi.

참고 항목

함수