Этот пример исследует физику ослабленного гармонического генератора
решение уравнений движения в случае никаких движущих сил,
исследование случаев под - сверх - и критическое затухание

Выведите уравнение движения
Решите уравнение движения (F = 0)
Случай Underdamped ()
Сверхослабленный случай ()
Критически ослабленный случай ()
Заключение
Рассмотрите принудительный гармонический генератор с затуханием показанного ниже. Смоделируйте силу сопротивления как пропорциональную скорости, с которой перемещается генератор.

Определите уравнение движения где
масса
коэффициент демпфирования
коэффициент упругости
движущая сила
syms x(t) m c k F(t) eq = m*diff(x,t,t) + c*diff(x,t) + k*x == F
eq(t) =
Перепишите использование уравнения и .
syms gamma omega_0 eq = subs(eq, [c k], [m*gamma, m*omega_0^2])
eq(t) =
Отделите массу . Теперь у нас есть уравнение в удобной форме, чтобы анализировать.
eq = collect(eq, m)/m
eq(t) =
Решите уравнение движения с помощью dsolve в случае никаких внешних сил, где . Используйте начальные условия модульного смещения и обнулите скорость.
vel = diff(x,t); cond = [x(0) == 1, vel(0) == 0]; eq = subs(eq,F,0); sol = dsolve(eq, cond)
sol =
Исследуйте, как упростить решение путем расширения его.
sol = expand(sol)
sol =
Заметьте, что каждый термин имеет фактор , или , используйте collect собрать эти условия
sol = collect(sol, exp(-gamma*t/2))
sol =
Термин появляется в различных частях решения. Перепишите его в более простой форме путем представления коэффициента затухания .
Замена ζ в термин выше дает:
syms zeta; sol = subs(sol, ... sqrt(gamma^2 - 4*omega_0^2), ... 2*omega_0*sqrt(zeta^2-1))
sol =
Далее упростите решение путем замены в терминах и ,
sol = subs(sol, gamma, 2*zeta*omega_0)
sol =
Мы вывели общее решение для движения ослабленного гармонического генератора без движущих сил. Затем мы исследуем три особых случая коэффициента затухания где движение берет более простые формы. Эти случаи называются
underdamped ,
сверхослабленный , и
критически ослабленный .
Если то является чисто мнимым
solUnder = subs(sol, sqrt(zeta^2-1), 1i*sqrt(1-zeta^2))
solUnder =
Заметьте условия в вышеупомянутом уравнении и отзыве идентичность
Перепишите решение в терминах .
solUnder = coeffs(solUnder, zeta);
solUnder = solUnder(1);
c = exp(-omega_0 * zeta * t);
solUnder = c * rewrite(solUnder / c, 'cos')solUnder =
solUnder(t, omega_0, zeta) = solUnder
solUnder(t, omega_0, zeta) =
Система колеблется в собственной частоте и затухания на экспоненциальном уровне .
Постройте решение с 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');
Если то чисто действительно, и решение может быть переписано как
solOver = sol
solOver =
solOver = coeffs(solOver, zeta); solOver = solOver(1)
solOver =
Заметьте условия и вспомните идентичность .
Перепишите выражение в терминах .
c = exp(-omega_0*t*zeta);
solOver = c*rewrite(solOver / c, 'cosh')solOver =
solOver(t, omega_0, zeta) = solOver
solOver(t, omega_0, zeta) =
Постройте решение видеть, что оно затухает без колебания.
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');
Если , затем решение упрощает до
solCritical(t, omega_0) = limit(sol, zeta, 1)
solCritical(t, omega_0) =
Постройте решение для критически ослабленного случая.
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'});

Мы исследовали различные состояния затухания на гармонический генератор путем решения ОДУ, который представляет его движение с помощью коэффициента затухания . Постройте все три случая вместе, чтобы сравнить и контрастировать их.
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');