and so is invalid. Briefly explain why each fragment is invalid. Then, rewrite each one
in an equivalent form that conforms to the cvx rule set. In your reformulations, you
can use linear equality and inequality constraints, and inequalities constructed using
cvx functions. You can also introduce additional variables, or use LMIs. Be sure to
explain (briefly) why your reformulation is equivalent to the original constraint, if it is
not obvious.
Check your reformulations by creating a small problem that includes these constraints,
and solving it using cvx. Your test problem doesn’t have to be feasible; it’s enough to
verify that cvx processes your constraints without error.
Remark. This looks like a problem about ‘how to use cvx software’, or ‘tricks for
using cvx’. But it really checks whether you understand the various composition rules,
convex analysis, and constraint reformulation rules.
(a) norm( [ x + 2*y , x - y ] ) == 0
(b) square( square( x + y ) ) <= x - y
(c) 1/x + 1/y <= 1; x >= 0; y >= 0
(d) norm([ max( x , 1 ) , max( y , 2 ) ]) <= 3*x + y
(e) x*y >= 1; x >= 0; y >= 0
(f) ( x + y )^2 / sqrt( y ) <= x - y + 5
(g) x^3 + y^3 <= 1; x>=0; y>=0
(h) x+z <= 1+sqrt(x*y-z^2); x>=0; y>=0
Solution.
(a) The lefthand side is correctly identified as convex, b ut equality constraints are only
valid with affine left and right hand sides. Since the norm of a vector is zero if and
only if the vector is zero, we can express the constraint as x+2*y==0; x-y==0, or
simply x==0; y==0.
(b) The problem is that square() can only accept affine arguments, because it is
convex, but not increasing. To correct this use square_pos() instead:
square_pos( square( x + y ) ) <= x - y
We can also reformulate this constraint by introducing an additional variable.
variable t
square( x+y ) <= t
square( t ) <= x - y
Note that, in general, decomposing the objective by introducing new variables
doesn’t need to work. It works in this case because the outer square function is
convex and monotonic over R
+
.
Alternatively, we can rewrite the constraint as
12