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


%% Лабораторная работа: Упрощение линейных систем
% Вариант №13
clear; clc; close all;

%% 1. Определение исходной системы
s = tf('s');
num = [800 2400 1600];
den = [1 9 33 55 36];
W = tf(num, den);

% Нормализация (приведение свободного члена знаменателя к 1)
K = 1600/36; 
W_norm = W / K; % Нормализованная ПФ

%% 2. Упрощение модели до 3-го порядка
% Используем встроенную функцию balred (сбалансированное сокращение порядка)
% Это наиболее точный современный метод в MATLAB, эквивалентный целям методички
W_red = balred(W, 3); 

fprintf('Исходная система W(s):\n');
display(W);
fprintf('Упрощенная система W_red(s):\n');
display(W_red);

%% 3. Построение переходных процессов в разомкнутой системе
figure('Name', 'Разомкнутая система');
step(W, 'b', W_red, 'r--');
grid on;
legend('Исходная', 'Упрощенная');
title('Переходный процесс разомкнутой системы');

%% 4. Построение переходных процессов в замкнутой системе
W_cl = feedback(W, 1);
W_red_cl = feedback(W_red, 1);

figure('Name', 'Замкнутая система');
step(W_cl, 'b', W_red_cl, 'r--');
grid on;
legend('Исходная', 'Упрощенная');
title('Переходный процесс замкнутой системы (единичная ОС)');

%% 5. Сравнение показателей качества
info = stepinfo(W_cl);
info_red = stepinfo(W_red_cl);

% Вывод таблицы сравнения
fprintf('\nСравнение показателей качества (замкнутая система):\n');
fprintf('Показатель       | Исходная | Упрощенная | Ошибка (%%)\n');
fprintf('-----------------------------------------------------\n');

metrics = {'SettlingTime', 'Overshoot', 'RiseTime'};
names = {'Время рег. (с)', 'Перерегул. (%%)', 'Время нарастания'};

for i = 1:length(metrics)
    val = info.(metrics{i});
    val_red = info_red.(metrics{i});
    err = abs(val - val_red) / val * 100;
    fprintf('%-16s | %8.3f | %10.3f | %8.2f%%\n', names{i}, val, val_red, err);
end