How to make this problem convex and solve it using CVX?

246 Views Asked by At

How to make this problem convex so that it can be solved by semidefinite programming in cvx? Given $A\in\mathbb{C}^{n\times n}$

\begin{array}{ll} \underset{X\in\mathbb{C^{n\times n}}}{\text{maximize}} & \frac{\mathrm{trace}\big((A^*A+I)X\big)}{\mathrm{trace}\big((A+A^*)X\big)}.\\ \text{subject to} & \mathrm{trace}\big((A-A^*)X\big)=0,\\&\mathrm{trace}(X)=1,\\&X\geq0.\end{array}


I have tried to let $\mathrm{trace}\big((A+A^*)X\big)=1/k$, so that I can rewrite above problem as

\begin{array}{ll} \underset{X\in\mathbb{C^{n\times n}}, k\in\mathbb{R}}{\text{maximize}} & k\times\mathrm{trace}\big((A^*A+I)X\big).\\ \text{subject to} & k\times\mathrm{trace}\big((A+A^*)X\big)=1\\&\mathrm{trace}\big((A-A^*)X\big)=0,\\&\mathrm{trace}(X)=1,\\&X\geq0.\end{array}

CVX code from Matlab:

    n=length(A);
    A1=A'*A+eye(n,n);
    A2=0.5*(A+A'); 
    A3=0.5*(A-A'); 

    cvx_begin
    variable X(n,n) hermitian
    variable k 
    minimize(-k*trace(A1*X));
    subject to
    k*trace(A2*X)==1;
    trace(A3*X)==0;
    trace(X)==1;
    X == hermitian_semidefinite(n);

ERROR code:

Error using  .*  (line 262)
Disciplined convex programming error:
    Invalid quadratic form(s): not a square.


Error in  *  (line 36)
    z = feval( oper, x, y );

Error in QCQP_SDR_GM (line 11)
minimize(-k*trace(A1*X));