# Anyway to handle the error: Only scalar quadratic forms can be specified in CVX?

Hi,

I am using CVX for minimizing a function of the form Trace(AX)+real(a^H x) over X \in C^{N \times N} and x \in C^{N \times 1} (A and b have the same size as X and x, respectively). The following constraint is one of the constraints on X and x:
X \geq xx^H

I thought because xx^H is a convex expression, CVX can handle this constraint, but I get the error Only scalar quadratic forms can be specified in CVX.

Is there anyway I can formulate the mentioned constraint in CVX?

Use Schur complement to express this as a semidefinite constraint
[X x;x' 1]== semidefinite(N+1)

Or if using sdp mode,
[X x;x' 1] >= 0

If you lifted this from a paper, this is most likely what they had in mind. Perhaps X \ge xx^H was introduced as a convex relaxation of X = xx^H.

Note that xx^H is not a scalar (unless N = 1), so it can’t be a scalar convex function.

1 Like

Thanks a lot for your reply Mark. It was very helpful. Just one quick question. What is the sdp mode? I always define semidefinite functions as “==semidefinite”. In what cases can I use “>=0”?

I have not picked the problem from a paper. It is the problem I am working on for my own paper. The original problem is to minimize x^HAx + real(a^H x) subject to some constraints. I have reformulated the objective function as Trace(AX)+real(a^H x), where X=xx^H. I also solved the problem in its original form because the problem is convex anyway even without defining X=xx^H. However, the final solution for x involved inversion of (A+ some N \times N matrix) and I couldn’t prove the mentioned matrix is always invertible.

sdp mode = semidefinite programming mode. http://cvxr.com/cvx/doc/sdp.html

X \ge xx^H is a convex relaxation of X = xx^H, so there is no guarantee that X = xx^H at the optimum.

1 Like

Actually, if X = xx^h does hold, then X is a rank one matrix. therefore, presuming N > 1, X would be singular.

1 Like

Thanks Mark. Indeed, it seems there is no guarantee that the obtained X is rank one and this is exactly my main problem. If X=xx^H does not hold, the obtained solution for x is not completely accurate.