%% Лабораторная работа №3. Вариант 7
% Исходное уравнение: d2y/dt2 + 7*dy/dt + 12*y = 6*u
clear; clc; close all;
%% 1. Задание передаточной функции системы
num = [6]; % Коэффициенты числителя (6)
den = [1, 7, 12]; % Коэффициенты знаменателя (p^2 + 7p + 12)
sys = tf(num, den);
sys.Variable = 'p';
disp('--- Передаточная функция W(p) ---');
sys
%% ==================== ЗАДАНИЕ 1 ====================
%% Построение АЧХ и ФЧХ через freqresp
w = [0, 0.5, 1, 2, 3, 5, 7, 10, 15, 20]';
rm = shiftdim(freqresp(sys, w));
% Таблица значений: частота, Re, Im, модуль (АЧХ), фаза (ФЧХ)
disp('--- Таблица частотных характеристик [w, Re, Im, A(w), phi(w)] ---');
table_data = [w, real(rm), imag(rm), abs(rm), angle(rm)*180/pi];
disp(table_data);
% Построение АЧХ
figure('Name', 'Амплитудно-частотная характеристика (АЧХ)');
plot(w, abs(rm), 'b-o', 'LineWidth', 1.5);
grid on;
title('Амплитудно-частотная характеристика АЧХ');
xlabel('\omega, рад/с');
ylabel('A(\omega)');
% Построение ФЧХ
figure('Name', 'Фазо-частотная характеристика (ФЧХ)');
plot(w, angle(rm)*180/pi, 'r-s', 'LineWidth', 1.5);
grid on;
title('Фазо-частотная характеристика ФЧХ');
xlabel('\omega, рад/с');
ylabel('\phi(\omega), град');
%% Построение годографа Найквиста
figure('Name', 'Годограф Найквиста');
nyquist(sys);
grid on;
title('Годограф Найквиста W(j\omega)');
%% Построение логарифмических частотных характеристик (ЛЧХ / Боде)
figure('Name', 'Диаграмма Боде (ЛЧХ)');
bode(sys);
grid on;
%% Модель в форме частотных характеристик (frd)
fred = [1, 2, 5, 10];
sys_frd = frd(sys, fred);
disp('--- Модель в форме FRD (частотный отклик) ---');
sys_frd
%% ==================== ЗАДАНИЕ 2 ====================
%% Переходная (step) и импульсно-переходная / весовая (impulse) функции
figure('Name', 'Временные характеристики');
subplot(2, 1, 1);
step(sys, 5);
grid on;
title('Переходная характеристика h(t)');
xlabel('Время, с');
ylabel('Амплитуда');
subplot(2, 1, 2);
impulse(sys, 5);
grid on;
title('Импульсно-переходная (весовая) характеристика w(t)');
xlabel('Время, с');
ylabel('Амплитуда');
%% Модель в пространстве состояний и реакция на начальные условия
sys_ss = ss(sys);
disp('--- Модель в переменных состояния ---');
sys_ss
% Свободное движение при двух наборах начальных условий x0_1 и x0_2
x0_1 = [10; 0];
x0_2 = [0; 10];
figure('Name', 'Реакция на начальные условия');
initial(sys_ss, x0_1, 5);
hold on;
initial(sys_ss, x0_2, 5);
grid on;
legend('Нач. услов. - [10; 0]', 'Нач. услов. - [0; 10]');
title('Переходный процесс при ненулевых начальных условиях');
xlabel('Время, с');
ylabel('Выход y(t)');