Hi, this is my first time here.
I confront a simple problem:
clear all;
close all;
clc
A = [1 2;
1 0];
cvx_begin sdp
variables x(2)
minimize(0)
subject to
[eye(2) Ax;(Ax)’ 7]>=0;
norm(x,2)<=2;
cvx_end
The original constraint is: <I_2, X> = 4
- < > is a matrix inner product.
- X = xx^T
I try to use norm(x,2) == 2; however, it is an error.
norm(x,2)<=2 is correct; however, the optimal solution is [0;0], which is not what I want.
I try to use
norm(x,2)<=2.01;
norm(x,2)>=1.99;
it shows:
Invalid constraint: {convex} >= {real constant}
How do I fix it?
norm(x) is a convex function, so a constraint
norm(x) <= real constant
is convex and follows CVX 'x DCP rules.
norm(x) >= real constant
and
norm(x) == real constant
are not convex and are not allowed n CVX.
So your problem as described is non-convex.
However, because you have specified an objective
minimize(0)
you just have a feasibility problem, which means you could try to use a convex objective to help you out. I played around for a minute with different objective functions, and discovered that minimize(x(2)) or maximize(x(2)) produce a solution for which norm(x) = 2, and therefore satisfy your original feasibility problem.
cvx_begin sdp
variables x(2)
maximize(x(2))
subject to
[eye(2) A*x;(A*x)' 7]>=0;
norm(x,2)<=2;
cvx_end
Calling SeDuMi 1.34: 10 variables, 3 equality constraints
For improved efficiency, SeDuMi is solving the dual problem.
------------------------------------------------------------
Edited out solver output
------------------------------------------------------------
Status: Solved
Optimal value (cvx_optval): +1.72721
>> disp(x)
-1.008345327824377
1.727205748021872
>> disp(norm(x))
1.999999999036261
Changing the objective function to minimize(x(2)) results in the optimal x being the negative of that above, and so is another feasible solution. I don’t claim that these are the only feasible solutions, but given that you specified a feasibility problem, even if it had been convex and allowed by CVX, CVX would have only provided you a single feasible solution.
Thanks!!
However, if the problem becomes more general such as the following (2 cases):

Note:
- X=xx^T, where x \in R^n
-
l(x) \in R^n. Each element in this vector is a polynomial of x_i . Yes, the first inequality is an LMI.
- In is an identity matrix.
How to rewrite the second inequality as a valid cvx inequality constraint?
It is equivalent to ||x||_2^2 =\eta^2 or ||x||_2^2 \geq \eta^2 then how to fix it in a more general way?
The problem is non-convex. I don’t see how to solve it in a general way with CVX.
For your first version, maybe I was just lucky to stumble upon a solution, or as I was thinking, maybe the RHS value of 2 was not "random’, and so something was going on which made that work out. Specifically, the optimal x was was just on the boundary of feasibility of the LMI, i.e., minimum LHS eigenvalue = 0, and that corresponded to norm(x) = 2.
I’m certain this FAQ has reduced the number of questions like this on the forum. And still: 90% of the posts we mark as Nonconvex are fully addressed by it.