LMI - Feedback Stabilization of Time-Delay System
6 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Rodrigo Zenon Guzman Iturra
il 14 Apr 2020
Commentato: Farshid R
il 28 Ott 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 Commenti
Risposta accettata
Azeddine Elmajidi
il 13 Mag 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 Commenti
Farshid R
il 28 Ott 2022
Could you help me with the problem?
https://www.mathworks.com/matlabcentral/answers/1837598-time-varying-parameter-in-lmi
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Linear Matrix Inequalities in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!