One part of my objective function is \parallel AX \parallel_F^2, A is a constant matrix and X is variable matrix. When I use CVX to solve this problem, I write down ** norm(AX,‘fro’)^2***, and this code violate DCP rules because of the square term. How can I escape this DCP checking?

`square_pos(norm(A*X,‘fro’))`

You would benefit from a careful reading of the CVX Users’ Guide http://cvxr.com/cvx/doc/

I doubt that is correct @Mark_L_Stone. Why square_pos of a norm? Or maybe I should read the manual too.

Yes @Erling, perhaps you should read the CVX Users’ Guide.

`square_pos`

is needed for CVX 1.x and 2.x. Or in any event, something other than `^2`

.

Due to the sign-dependent curvature analysis used by CVX 3,.0beta, but not used by CVX 1.x or 2.x , CVX 3.0beta is smart enough to allow squaring of a norm without requiring use of `square_pos`

. Unfortunately, CVX 3.0beta is riddled with bugs which I doubt will ever be corrected, so I don’t recommend its use.

Here is what happens when `^2`

rather than `square_pos`

is used in CVX 2.2

```
cvx_begin
variable x
norm(x,'fro')^2
```

Error using cvx/pow_cvx (line 142)

Disciplined convex programming error:

Illegal operation: {convex} .^ {2}

(Consider POW_P, POW_POS, or POW_ABS instead.)

Error in .^ (line 55)

z = pow_cvx( x, y, ‘power’ );

Error in ^ (line 9)

z = power( x, y );

I should read the manual too.