I would like to solve a simple lyapunov equation problem, P*A + A’*P < 0. And the matrix A I am using is Hurwitz as following
A = [-9.690300337427388 & 0.430619270930755 & -1.224948874123738;
-1.962604643307266 & -10.247516519829006 & -1.954876539648875;
1.830517287587137 & -0.053241271269972 & -6.483027388191852];
When I solve this lyapunov equation problem with different precisions, the problem results are different.
When the precision is set to be ‘high’ or ‘best’, the result is infeasible (which is not true since matrix A is Hurwitz). And when the precision is set to be ‘default’, the problem is solved.
The code is as following
cvx_begin sdp
cvx_precision high or best or default
variable P(3,3) symmetric
P*A + A'*P <= -eye(3)
P >= eye(3)
cvx_end
I am using Mosek solver (ver 7.1.0.12). I do not understand why the low precision gives me solved result, but high precision shows the problem infeasible, and in fact the problem should be solvable since A is Hurwitz.
Any thought on this would be helpful. Thanks a lot!
And the output is as following when the precision is set to be best
Calling Mosek 7.1.0.12: 12 variables, 6 equality constraints
MOSEK Version 7.1.0.12 (Build date: 2014-12-12 07:25:47)
Copyright (c) 1998-2014 MOSEK ApS, Denmark. WWW: http://mosek.com
Platform: Linux/64-X86
Computer
Platform : Linux/64-X86
Cores : 4
Problem
Name :
Objective sense : min
Type : CONIC (conic optimization problem)
Constraints : 6
Cones : 0
Scalar variables : 0
Matrix variables : 2
Integer variables : 0
Optimizer started.
Conic interior-point optimizer started.
Presolve started.
Linear dependency checker started.
Linear dependency checker terminated.
Eliminator - tries : 0 time : 0.00
Eliminator - elim’s : 0
Lin. dep. - tries : 1 time : 0.00
Lin. dep. - number : 0
Presolve terminated. Time: 0.01
Optimizer - threads : 4
Optimizer - solved problem : the primal
Optimizer - Constraints : 6
Optimizer - Cones : 0
Optimizer - Scalar variables : 0 conic : 0
Optimizer - Semi-definite variables: 2 scalarized : 12
Factor - setup time : 0.00 dense det. time : 0.00
Factor - ML order time : 0.00 GP order time : 0.00
Factor - nonzeros before factor : 21 after factor : 21
Factor - dense dim. : 0 flops : 8.40e+02
ITE PFEAS DFEAS GFEAS PRSTATUS POBJ DOBJ MU TIME
0 3.9e+01 1.0e+00 1.0e+00 0.00e+00 0.000000000e+00 0.000000000e+00 1.0e+00 0.03
1 4.3e+00 1.1e-01 1.1e-01 -1.90e+00 0.000000000e+00 3.092603089e+01 1.1e-01 0.07
2 8.9e-01 2.3e-02 2.3e-02 -5.15e-01 0.000000000e+00 3.567647460e+01 2.3e-02 0.08
3 8.3e-02 2.1e-03 2.1e-03 8.17e-01 0.000000000e+00 2.129837998e+00 2.1e-03 0.08
4 4.2e-03 1.1e-04 1.1e-04 9.66e-01 0.000000000e+00 1.084320890e-01 1.1e-04 0.08
5 2.1e-04 5.3e-06 5.3e-06 9.98e-01 0.000000000e+00 5.426029347e-03 5.3e-06 0.09
6 1.0e-05 2.7e-07 2.7e-07 1.00e+00 0.000000000e+00 2.713124814e-04 2.7e-07 0.09
7 2.3e-11 6.0e-13 6.0e-13 1.00e+00 0.000000000e+00 2.713124814e-04 6.0e-13 0.09
Interior-point optimizer terminated. Time: 0.09.
MOSEK PRIMAL INFEASIBILITY REPORT.
Problem status: The problem is primal infeasible
Optimizer terminated. Time: 0.18
Interior-point solution summary
Problem status : PRIMAL_INFEASIBLE
Solution status : PRIMAL_INFEASIBLE_CER
Dual. obj: 2.8813551680e-11 Viol. con: 0e+00 barvar: 0e+00
Optimizer summary
Optimizer - time: 0.18
Interior-point - iterations : 7 time: 0.09
Basis identification - time: 0.00
Primal - iterations : 0 time: 0.00
Dual - iterations : 0 time: 0.00
Clean primal - iterations : 0 time: 0.00
Clean dual - iterations : 0 time: 0.00
Clean primal-dual - iterations : 0 time: 0.00
Simplex - time: 0.00
Primal simplex - iterations : 0 time: 0.00
Dual simplex - iterations : 0 time: 0.00
Primal-dual simplex - iterations : 0 time: 0.00
Mixed integer - relaxations: 0 time: 0.00
Status: Infeasible
Optimal value (cvx_optval): +Inf