How to express the simple non-convex constraint? (Moderator's note: It actually is convex)

How to express the non-convex constraint xy>10 in CVX form, with 0<x<100, 0<y<100?

This is a rotated second order cone,
{sqrt(10),x,y} == rotated_lorentz(1)

And add the constraints:

x <= 100
y <= 100

Note that CVX will treat < as <=
If you really need these strictly less than 100, change the RHS to 1-1e-6…

The rotated_lorentz constraint automatically constrains x and y to be >= 0

http://cvxr.com/cvx/doc/funcref.html#sets

This is one of the rare times on this forum in which someone claims something is non-convex, but it actually is convex. Usually, it’s the other way around.

Thanks a lot, Mark. I still have a question. If the case is x*y>z, with x,y,z being variables, how can I express this constraint in CVX?

You can’t.

Rotated second order cone can handle
norm(z)^2 <= x*y
or
norm(z) <= sqrt(x*y)

So you would need a variable q which would represent sqrt(z), and you’d have to be “content” (i.e., able) to use q and never z in your program.