No title

 

 

 

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)


 

Post a Comment

Previous Post Next Post