LMI - Feedback Stabilization of Time-Delay System
6 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Rodrigo Zenon Guzman Iturra
le 14 Avr 2020
Commenté : Farshid R
le 28 Oct 2022
Dear community:
I hope you can help me with the following. I am a beginner in the use of Linear Matrix Inequalities in Control Applications. As guide, i am using the book "LMIs in Control Systems: Analysis, Design and Applications" from Guang-Ren Duan and Hai-Hua yu. In order to solve the example 7.16 of the book; I am trying to program the LMI of the Theorem 7.19 in MATLAB, however i got compilation errors, could anybody help me please?

My MATLAB code is as follows:
% Definition of the Matrices
% Clear the workspace
clc
clear all
% Specify parameter matrices
A = [-1 0 1;
0 2 -1;
2 0 -3]
Ad = [ 1 0 1;
2 1 1;
0 0 -1]
B = [1 1;
1 2;
0 1]
d = 0.1;
% LMI problem definition
%% Definition of the Decision Variables
setlmis([]);
X = lmivar(1,[3 1]);
W = lmivar(2,[2,3]);
Beta = lmivar(1,[1 1]);
% Definitions of the LMI
% LMI #1
% LMI #1 LMI(1,1)
lmiterm([1 1 1 X],1,(A + Ad)'); % #1 LMI(1,1) / X*(A + Ad)^T
lmiterm([1 1 1 X],(A + Ad),1); % #1 LMI(1,1) / + (A + Ad)*X
lmiterm([1 1 1 W],B,1); % #1 LMI(1,1) / + BW
lmiterm([1 1 1 -W],1,B'); % #1 LMI(1,1) / + W^T*B^T
lmiterm([1 1 1 0],d,(Ad*Ad')); % #1 LMI(1,1) / + d*Ad*Ad^T
% LMI #1 LMI(2,1)
lmiterm([1 2 1 X],d*A,1); % #1 LMI(2,1) / d*A*X
lmiterm([1 2 1 W],(d*B),1); % #1 LMI(2,1) / d*B*W
% LMI #1 LMI(2,2)
lmiterm([1 2 2 Beta],-1*d,1); % #1 LMI(2,1) / d*A*X
% LMI #1 LMI(3,1)
lmiterm([1 3 1 X],(d*Ad),1); % #1 LMI(2,1) / d*Ad*X
% LMI #1 LMI(3,2)
lmiterm([1 3 2 0],0,1); % #1 LMI(2,1) / 0
% LMI #1 LMI(3,3)
lmiterm([1 3 3 0],-1*d,1); % #1 LMI(2,1) / -d
lmiterm([1 3 3 Beta],d,1); % #1 LMI(2,1) / d*Beta
% LMI #2: 0 < X
lmiterm([-2 1 1 X],1,1); % #2 LMI, right-hand side / X
lmiterm([2 1 1 0],0); % #2 LMI, left-hand side / 0
% LMI #3: 0 < Beta
lmiterm([-3 1 1 Beta],1,1); % #3 LMI, right-hand side / Beta
lmiterm([3 1 1 0],0); % #3 LMI, left-hand side / 0
% LMI #3: -1 < Beta
lmiterm([-4 1 1 Beta],-1,1); % #4 LMI, right-hand side / Beta
lmiterm([4 1 1 0],1); % #4 LMI, left-hand side / 0
stabilz2 = getlmis;
%LMI Solution
[tmin,xfeas] = feasp(stabilz2);
Xvalue = dec2mat(stabilz2,xfeas,X)
Wvalue = dec2mat(stabilz2,xfeas,W)
Betavalue = dec2mat(stabilz2,xfeas,Beta)
k = Wvalue*inv(Xvalue)
0 commentaires
Réponse acceptée
Azeddine Elmajidi
le 13 Mai 2020
Hi,
I think there was some errors in your lmiterm, i prefer to use the gui editor "lmiedit" it helps to avoid errors, with using it i can produce the same results that you have in the book.
%Definition of the Matrices
% Clear the workspace
clc
clear all
% Specify parameter matrices
A = [-1 0 1;
0 2 -1;
2 0 -3]
Ad = [ 1 0 1;
2 1 1;
0 0 -1]
B = [1 1;
1 2;
0 1]
d = 0.1;
% LMI problem definition
%% Definition of the Decision Variables
setlmis([]);
X = lmivar(1,[3 1]);
W = lmivar(2,[2,3]);
Beta = lmivar(1,[1 1]);
% Definitions of the LMI
% LMI #1
% LMI #1 LMI(1,1)
lmiterm([1 1 1 X],1,A','s'); % LMI #1: X*A'+A*X
lmiterm([1 1 1 X],1,Ad','s'); % LMI #1: X*Ad'+Ad*X
lmiterm([1 1 1 W],B,1,'s'); % LMI #1: B*W+W'*B'
lmiterm([1 1 1 0],d*Ad*Ad'); % LMI #1: d*Ad*Ad'
lmiterm([1 2 1 X],d*A,1); % LMI #1: d*A*X
lmiterm([1 2 1 W],d*B,1); % LMI #1: d*B*W
lmiterm([1 2 2 Beta],.5*d,-eye(3),'s'); % LMI #1: -d*Beta*eye(3) (NON SYMMETRIC?)
lmiterm([1 3 1 X],d*Ad,1); % LMI #1: d*Ad*X
lmiterm([1 3 3 Beta],.5*d,eye(3),'s'); % LMI #1: d*Beta*eye(3) (NON SYMMETRIC?)
lmiterm([1 3 3 0],-d*eye(3)); % LMI #1: -d*eye(3)
lmiterm([-2 1 1 X],1,1); % LMI #2: X
lmiterm([-3 1 1 Beta],1,1); % LMI #3: Beta
lmiterm([4 1 1 Beta],1,1); % LMI #4: Beta
lmiterm([-4 1 1 0],1); % LMI #4: 1
stabilz2=getlmis;
%LMI Solution
[tmin,xfeas] = feasp(stabilz2);
Xvalue = dec2mat(stabilz2,xfeas,X)
Wvalue = dec2mat(stabilz2,xfeas,W)
Betavalue = dec2mat(stabilz2,xfeas,Beta)
k = Wvalue*inv(Xvalue)
2 commentaires
Farshid R
le 28 Oct 2022
Could you help me with the problem?
https://www.mathworks.com/matlabcentral/answers/1837598-time-varying-parameter-in-lmi
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Linear Matrix Inequalities dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!