next up previous
Next: Sylvester equation Up: LMITOOL Previous: H-infinity gain

Output Feedback

The problem is here:

Minimize trace(P+Q) under the constraints:

P'-P = 0;


Q'-Q = 0;

and

NB' (A Q + Q A' + Q) NB < 0


NC' (A P + P A' + P) NC < 0


[P I; I Q] > 0

where NB=kernel(B) and NC=kernel(C')

This problem is solved by the function below:

  
 function [LME,LMI,OBJ]=of_eval(XLIST)
 [P,Q]=XLIST(:)
 /////////////////DEFINE LME, LMI and OBJ BELOW
 LME=list(P-P',Q-Q')                                               
 LMI= list(-NB'*(A*Q+Q*A'+Q)*NB,-NC'*(A'*P+P*A+P)*NC,[P I; I Q]);  
 OBJ=trace(P+Q);

Solving function generated by lmitool

 function [P,Q]=of(A,B,C)
// Generated by lmitool on Thu Feb 09 11:22:01 MET 1995
 Mbound = 1e3;abstol = 1e-10;reltol = 1e-10;
 nu = 10;maxiters = 100;
 options=[Mbound,abstol,nu,maxiters,reltol];
 ///////////DEFINE INITIAL GUESS AND PRELIMINARY CALCULATIONS BELOW
 P_init=zeros(A)                                                   
 Q_init=zeros(A)                                                   
 NB=kernel(B');                                                    
 NC=kernel(C);                                                     
 I=eye(A);                                                         
 /////////// 
 XLIST0=list(P_init,Q_init)
 XLIST=lmisolver(XLIST0,of_eval,options)
 [P,Q]=XLIST(:)
Let's try a simple example with 3 states
A=[0,1,0;2,3,1;-1,-2,0];
B=[1,0;-2,1;0,1];
C=[1,2,0;0,1,-2];
[P,Q]=of(A,B,C)
 Q  =

!   1.0251242  - 0.7135499  - 0.3606374 !
! - 0.7135499    1.2950105    0.6655355 !
! - 0.3606374    0.6655355    1.5585759 !
 P  =
 
!   1.5824578    0.8759924  - 0.0078987 !
!   0.8759924    1.4742173  - 0.4268180 !
! - 0.0078987  - 0.4268180    0.8220415 !


Scilab group