I want to solve the Lyapunov equation with matlab
조회 수: 5 (최근 30일)
이전 댓글 표시
Why, when I calculate R, I don't find -I? Thank you."
% Définition des matrices du système
A = [0 1;0 0];% Remplacez ... par la matrice A de votre système
B=[2;5];
K=[-0.131 -1.6874];
Ak=A+B*K;
E = [1 2;0 0]; % Remplacez ... par la matrice E de votre système
I = eye(size(A)); % Matrice identité de même taille que A
Q = [1 0 ;0 1]; % Remplacez ... par une matrice Q définie positive
% Fonction pour résoudre l'équation de Lyapunov avec la condition E
lyapunov_solve = @(P) (Ak'*P*E + E'*P*Ak + I)
% Initialisation de P
P0 = Q; % Vous pouvez également utiliser une autre initialisation si nécessaire
% Résolution de l'équation de Lyapunov avec la condition E
options = optimoptions('fsolve', 'Display', 'off'); % Options pour fsolve
Ps= fsolve(lyapunov_solve, P0, options)
% Vérification de la positivité de P
if all(eig(Ps) > 0)
disp('La matrice P est définie positive.');
else
disp('La matrice P n''est pas définie positive.');
end
R =Ak'*Ps*E + E'*Ps*Ak
댓글 수: 0
답변 (2개)
Torsten
2024년 2월 27일
Use MATLAB's "lyap" or "dlyap".
댓글 수: 1
Christine Tobler
2024년 2월 28일
If you don't have Control Systems Toolbox, you can also look at the more generic sylvester function in base MATLAB.
Torsten
2024년 2월 28일
편집: Torsten
2024년 2월 28일
You can also do it this way, but your system does not seem to have a solution:
% Définition des matrices du système
A = [0 1;0 0];% Remplacez ... par la matrice A de votre système
B=[2;5];
K=[-0.131 -1.6874];
Ak=A+B*K;
E = [1 2;0 0]; % Remplacez ... par la matrice E de votre système
I = eye(size(A)); % Matrice identité de même taille que A
Q = [1 0 ;0 1]; % Remplacez ... par une matrice Q définie positive
% Fonction pour résoudre l'équation de Lyapunov avec la condition E
P = sym('P',[2 2]);
eqns = Ak'*P*E + E'*P*Ak + I == 0;
[A,b] = equationsToMatrix(eqns)
sol = A\b
lyap(Ak.',I,[],E.')
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Computations에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!