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.