clear all; clc;
% --- Données du problème ---
A = [-2 1;
1 -1];
B = [1;
2];
C = [ 2 1;
-1 0];
% --- Initialisation des LMIs ---
setlmis([]);
% P et Q : matrices symétriques 2x2
P = lmivar(1,[2 1]); % P = [p1 p2; p2 p3]
Q = lmivar(1,[2 1]); % Q = [q1 q2; q2 q3]
% ============================
% LMI #1 : AP + PA' + BB' < 0
% ============================
L1 = newlmi;
lmiterm([L1 1 1 P], A, 1, 's'); % AP + P*A'
lmiterm([L1 1 1 0], B*B'); % + BB'
% ==============================================
% LMI #2 : [ -Q CP ; PC' -P ] < 0 (Schur)
% ==============================================
L2 = newlmi;
% bloc (1,1) = -Q
lmiterm([L2 1 1 Q], -1, 1);
% bloc (1,2) = CP
lmiterm([L2 1 2 P], C, 1);
% bloc (2,1) = PC'
lmiterm([L2 2 1 P], 1, C');
% bloc (2,2) = -P
lmiterm([L2 2 2 P], -1, 1);
% (optionnel mais propre) : P > 0, Q > 0
L3 = newlmi;
lmiterm([-L3 1 1 P], 1, 1); % P > 0
L4 = newlmi;
lmiterm([-L4 1 1 Q], 1, 1); % Q > 0
% --- Fin de la modélisation ---
LMI = getlmis();
% ============================
% Objectif : minimiser tr(Q)
% ============================
% Q et P sym 2x2 -> 3 variables chacun -> 6 variables au total
% tr(Q) = q1 + q3 => c = [1 0 1 0 0 0]
c = [1 0 1 0 0 0];
[optTrace, xopt] = mincx(LMI, c);
% --- Extraction des solutions ---
Qsol = dec2mat(LMI, xopt, Q)
Psol = dec2mat(LMI, xopt, P)
H2_squared = trace(Qsol)
H2_norm = sqrt(H2_squared)
DC22222222222222222222222222222222222222222222222222222222222222222222222
A = [1 1; 1 3; 2 1];
b = [8 18 14]';
c = [-4 -5]';
setlmis([]);
X = lmivar(2, [2 1]); % vecteur x = [x1; x2]
% Contrainte 1 : A(1,:)*x <= b(1)
lmiterm([1 1 1 X], A(1,:), 1); % A(1,:)*x
lmiterm([1 1 1 0], -b(1)); % -b(1)
% Contrainte 2 : A(2,:)*x <= b(2)
lmiterm([2 1 1 X], A(2,:), 1);
lmiterm([2 1 1 0], -b(2));
% Contrainte 3 : A(3,:)*x <= b(3)
lmiterm([3 1 1 X], A(3,:), 1);
lmiterm([3 1 1 0], -b(3));
lmis = getlmis();
disp('----- FEASP RESULT -----')
[tmin, xfeas] = feasp(lmis);
x_feasp = dec2mat(lmis, xfeas, X)
disp('----- MINCX RESULT -----')
[objective, x_mincx] = mincx(lmis, c)
DC11111111111111111111111111111111111111111111111111111111111111111111111111111111111
clear all; close all; clc;
% --------------------------
% MATRICES DU PROBLEME
% À REMPLIR !
% --------------------------
A = randn(6); % DOIT être 6×6
B = randn(6,4); % DOIT être 6×4
C = randn(4,6); % DOIT être 4×6
% --------------------------
% DECLARATION DES LMIs
% --------------------------
setlmis([]);
% X : matrice symétrique 6×6
X = lmivar(1, [6 1]);
% S : matrice avec structure imposée
% bloc 1 : 2×2 diagonal scalaire (s1 * I2)
% bloc 2 : 2×2 symétrique (s2, s3, s4)
S = lmivar(1, [2 0; 2 1]);
% --------------------------
% LMI #1 :
% [ A'X + XA + C'SC XB ]
% [ B'X -S ] < 0
% --------------------------
L1 = newlmi;
% Bloc (1,1) = A'X + XA + C'SC
lmiterm([L1 1 1 X], A, 1, 's'); % A'X + X*A
lmiterm([L1 1 1 S], C', C); % C' S C
% Bloc (1,2) = X B
lmiterm([L1 1 2 X], 1, B);
% Bloc (2,1) = B' X
lmiterm([L1 2 1 X], B', 1);
% Bloc (2,2) = -S
lmiterm([L1 2 2 S], -1, 1);
% --------------------------
% LMI #2 : X > 0
% --------------------------
L2 = newlmi;
lmiterm([-L2 1 1 X], 1, 1);
% --------------------------
% LMI #3 : S > I
% --------------------------
L3 = newlmi;
lmiterm([-L3 1 1 S], 1, 1); % S > 0
lmiterm([ L3 1 1 0], -1); % -I
% --------------------------
% RESOLUTION
% --------------------------
LMI = getlmis;
[tmin, xfeas] = feasp(LMI);
disp("tmin = "), disp(tmin);
Xsol = dec2mat(LMI, xfeas, X)
Ssol = dec2mat(LMI, xfeas, S)