# （ x^2+y^2 )^2 <= C

Hello, everyone ! Do you know how to express the constraints in CVX?
x and y are both variable, C is a constant.

``````
C1    ( x^2+y^2 )^2 <= C

C2    ( x^(-2) + y^(-2) ) ^2 <= C
``````

Thank you for your attention very much!

hello, try square_pos function for the square outside (i.e., ()^2). Since the square_pos is nondecreasing, it can accept a convex argument, like x^2 + y^2

`square_pos( pow_pos(x,2) + pow_pos (y,2) )`
`square_pos( pow_p(x,-2) + pow_p (y,-2) )`

This usage seems to cut off part of domains of variable x and y, (i.e., when they are negative). Actually, I don’t know if this change will fit the problem u concern.

I would always use norm as much as possible and avoid iterated squares of squares etc. if they can be moved to the constant part.

``````C1:  C^0.25 >= norm([x,y])
C2:  C^0.5 >= pow_p(x,-2) + pow_p(y,-2)
``````

Yes, the second one will cut off part of the domain, but the function is convex only for x,y>0, so there is no other choice anyway.

Thank you very much! I think you are right at avoiding the iterated squares of squares.

But when the constraint as follows,it seem that we have to iterate squares.

`variable : x, y, q, S `

``````C1:  S  >= ( x^2 +y^2)^2 - 2( q_f - wk )' (q - q_f) - 2( q_f - wb)' (q - q_f)
``````

Yes in this case I guess you have no choice since you have to bound all this by a variable. I guess something like `square_pos(sum_squares([x,y]))` or similar should work.

That should be
`square_pos(sum_square([x,y]))`
I.e., no `s` at the end of `sum_square`

Alternatively, you can use `square_pos(x^2+y^2)` as @pz233 suggests.

help square_pos

square_pos Square of positive part.
square_pos(X) is the square of the postive parts of the elements of X;
i.e., square_pos(X)=MAX(X,0).^2. X must be real.

``````Disciplined convex programming information:
square_pos(X) is convex and nondecreasing in X. Thus when used in
CVX expressions, X must be convex (or affine).
``````