urier');
grid on
В
figure (8);
plot (time_X, X (5, :), time_X, X_n (5, :), time_X, X_n_ocen (5, :), 'LineWidth', 2)
title ('x_5 (t)');
xlabel ('t')
hl = legend ('x_5 (t) без спостерігача ',' x_5 (t) c спостерігачем ',' x_о_ц_е_н_5 (t) ');
set (hl, 'FontName', 'Courier');
grid on
Solve_Riccati_Method_Diag.m
% -------------------------------------------------- ----------------------%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Метод діагоналізації для вирішення алгебраїчного рівняння Риккати
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
function P = Solve_Riccati_Method_Diag (A, B, Q, R)
% Розширена матриця системи
Z = [A B * inv (R) * B ';
Q-A ']
% Знаходження власних векторів і власних чисел матриці Z
[V, D] = Eig (Z)
% -------------------------------------------------- ----------------------%
% Побудова матриці S
% Індекси стовпців власних значень Re (lyamda)> 0
Ind_Re_plus = find (sum (real (D))> 0);
% Індекси стовпців власних значень Re (lyamda) <0
Ind_Re_minus = find (sum (real (D)) <0);
% Формування матриці D у вигляді Re (lyamda)> 0 -> Re (lyamda) <0
D1 = sum (D (:, Ind_Re_plus));
D2 = sum (D (:, Ind_Re_minus));
D = [D1 D2];
% Формування матриці S у вигляді Re (lyamda)> 0 -> Re (lyamda) <0
S1 = V (:, Ind_Re_plus);
S2 = V (:, Ind_Re_minus);
S = [S1 S2];
% Пошук стовпців з комплексними коренями в матриці D
Ind_Complex_D = find (imag (D) ~ = 0);
% Формування кінцевої матриці S
for i = 1: 2: length (Ind_Complex_D)
S (:, Ind_Complex_D (i) + 1) = imag (S (:, Ind_Complex_D (i)));
S (:, Ind_Complex_D (i)) = real (S (:, Ind_Complex_D (i)));
end
S = S
% -------------------------------------------------- ----------------------%
poryadok = length (A (1, :));
S12 = S (1: poryadok, poryadok +1: 2 * poryadok);
S22 = S (poryadok +1: 2 * poryadok, poryadok +1: 2 * poryadok);
% -------------------------------------------------- ----------------------%
% Обчислення матриці P
P = -S22 * inv (S12);
Solve_Riccati_Method_Revers_Integr.m
% -------------------------------------------------- ----------------------%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Рішення рівняння Риккати інтегруванням у зворотному часу
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
function P = Solve_Riccati_Method_Revers_Integr (A, B, Q, R, Time, poryadok, P1)
save For_Riccati A B ...