Загрузка данных


clear; clc; close all;

% Задание 1
w1 = tf(7, [21 1]);
w2 = tf(2, [1 0]);
w3 = tf(4*[1 1], [10 1]);
w4 = tf(1, [16 4 1]);

w_raz = minreal((w1*w2 + w4) * w3);
w_zam = minreal(feedback(w_raz, 1));

w_raz.variable = 'p';
w_zam.variable = 'p';
disp(w_raz);
disp(w_zam);

[num_zam, den_zam] = tfdata(w_zam, 'v');

% Задание 2
d2 = [2 16 24 34 20];
r2 = roots(d2);
disp(r2);
if all(real(r2) < 0)
    disp('система устойчива');
else
    disp('система неустойчива');
end

% Задание 3
[~, den_raz] = tfdata(w_raz, 'v');
if den_raz(end) == 0
    disp('разомкнутая система на границе устойчивости');
end

H = [den_zam(2) den_zam(4) den_zam(6) 0          0;
     den_zam(1) den_zam(3) den_zam(5) 0          0;
     0          den_zam(2) den_zam(4) den_zam(6) 0;
     0          den_zam(1) den_zam(3) den_zam(5) 0;
     0          0          den_zam(2) den_zam(4) den_zam(6)];

minors = zeros(1, 5);
for k = 1:5
    minors(k) = det(H(1:k, 1:k));
end
disp(minors);

if all(minors > 0)
    disp('замкнутая система устойчива');
else
    disp('замкнутая система неустойчива');
end

% Задание 4
w = 0:0.005:2;
p_pts = 1j * w;
GM = polyval(den_zam, p_pts);

figure;
plot(real(GM), imag(GM));
grid on;

% Задание 5
w_raz5 = tf([2 1], [0.3 5 1]);
[~, den5] = tfdata(w_raz5, 'v');
r5 = roots(den5);
disp(r5);
if all(real(r5) < 0)
    disp('разомкнутая система устойчива');
else
    disp('разомкнутая система неустойчива');
end

figure;
nyquist(w_raz5);
grid on;

% Задание 6
[Gm, ~, ~, ~] = margin(w_raz5);
if isinf(Gm)
    disp('критический коэффициент передачи бесконечен');
else
    disp(Gm);
end