How can I solve Linear Matrix Inequality(LMI) problem which is an affine function of varying parameter??

1,803 views
Skip to first unread message

Vishal Agrawal

unread,
Jan 16, 2014, 4:37:43 AM1/16/14
to yal...@googlegroups.com
A(h(t))'*P-C'*R+P*A(h(t))-R'*C<0;
P>0

where
A(h)=[0 1;h(t) -0.1];
C=[0.2 1];

where
A(h)=[0 1;h(t) -0.1];
C=[0.2 1];

h(t) is a varying parameter whose maximum and minimum value is 0 and -45.86
P is a symmetric matrix variable of dimension 2x2
R is a matrix variable of dimension 1x2

The problem is

I want to solve following LMI which is affine in h(t) :

A(h(t))'*P-C'*R+P*A(h(t))-R'*C<0;
P>0;

where
A(h)=[0 1;h(t) -0.1];
C=[0.2 1];

h(t) is a time varying parameter whose maximum and minimum value is 0 and -45.86
P is a symmetric matrix variable of dimension 2x2
R is a matrix variable of dimension 1x2

I am able to solve LMI without varying parameter h(t) using LMI Toolbox and YALMIP, but not able to solve above one.
I go through the document of functions pvec, psys, quadstab in MATLAB's Robust Control Toolbox, but they are not addressing the type of problem at which I am stuck.

I want to find the value of matrices P and R such that above LMIs are feasible. I am solving the above problem while going through paper for designing observer using differential mean value theorem based approach, the above condition is sufficient to successfully design observer, paper link is : http://ieeexplore.ieee.org/xpl/articleDetails.jsp?tp=&arnumber=1583180&queryText%3Dobserver+design+using+diffrential+mean+value+theorem+approach

Johan Löfberg

unread,
Jan 16, 2014, 4:46:33 AM1/16/14
to
So you want to solve a robust stability problem. The easiest approach is to use a common Lyapunov function and show that the two corner systems are stable.

YALMIP can do this automatically for you. Note that your problem is ill-posed since P and R can be picked arbitrarily close to zero. Hence, you should use a dehomogenizing constraint, such as P>=I. To get nice values, I minimize the trace of P
P = sdpvar(2);
R
= sdpvar(1,2);
h
= sdpvar(1)
A
= [0 1;h -0.1];
C
=[0.2 1];
Lyapunov = [A'*P-C'*R+P*A-R'*C<=0, P>=eye(2)]
Uncertainty = [uncertain(h), -45.86 <= h <= 0];
solvesdp([Lyapunov,Uncertainty],trace(P))

This is equivalent to

P = sdpvar(2);
R
= sdpvar(1,2);
h
= sdpvar(1)

A1
= [0 1;0 -0.1];
A2 = [0 1;-45.86 -0.1];
C
=[0.2 1];

Lyapunov = [A1'*P-C'*R+P*A1-R'*C<=0,A2'*P-C'*R+P*A2-R'*C<=0 P>=eye(2)]
solvesdp(Lyapunov,trace(P))



Vishal Agrawal

unread,
Jan 16, 2014, 5:22:17 AM1/16/14
to yal...@googlegroups.com
Hi Johan!!
Thanks for reply

The first method which you gave to solve the problem, i.e.

= sdpvar(2);
= sdpvar(1,2);
= sdpvar(1)
= [0 1;-0.1];
C
=[0.2 1];
Lyapunov = [A'*P-C'*R+P*A-R'*C<=0, P>=eye(2)]
Uncertainty = [uncertain(h), -45.86 <= h <= 0];
solvesdp([Lyapunov,Uncertainty],trace(P))


While calling 'solvesdp' in MATLAB, I got the following error

***** Starting YALMIP robustification module. *********************
 - Detected 1 uncertain variables
 - Detected 1 independent group(s) of uncertain variables
??? Error using ==> tomSym at 105
Unknown object type for tomSym: lmi

Error in ==> extractConstraints at 25
    [f,c,x0] = extractConstraints(tomSym(f),c,x0);  % Call overloaded function

Error in ==> robustify at 122
F_eq = extractConstraints(UncertainModel.F_xw,'equality');

Error in ==> solverobust at 64
[F,h,failure] = robustify(varargin{:});

Error in ==> solvesdp at 186
        diagnostic = solverobust(F(find(~unc_declarations)),h,options,recover(getvariables(sdpvar(F(find(unc_declarations))))));


Johan Löfberg

unread,
Jan 16, 2014, 6:07:59 AM1/16/14
to yal...@googlegroups.com
Remove tomlab/tomsym from your path. They seem to have a function name which clashes with a function in YALMIP

Mark L. Stone

unread,
Jan 16, 2014, 12:19:40 PM1/16/14
to yal...@googlegroups.com
and YALMIP's better (not to mention cheaper) than TOMSYS anyway :wink

LS

unread,
Jan 6, 2018, 5:03:18 PM1/6/18
to YALMIP
if in the bellow inequality h(t) be a periodic function like : h(t)=asin(t)
how should we solve it?
A'*h(t)*P-C'*R+P*A*h(t)-R'*C<0;
P>0;
Reply all
Reply to author
Forward
0 new messages