Hermitian symmetric positive definite


(Jack Nguyen) #1

Hello,
I’m currently facing the simple constraint but I don’t know how to implement in CVX. The constraint is as follows
Trace(A^H * inv(X) ) <= C, where A is constant Hermitian positive definite matrix and X is variable of the Hermitian positive definite matrix. Could anyone help me how to implement that constraint?

Thanks so much,


(Mark L. Stone) #2

If you use
trace_inv(X*inv(A^H)) <= C
I believe that would constrain X*inv(A^H) to be psd, which I think. you don’t want, but if you do, great.

But I think you can modify the Schur complement approach to trace_inv, as found in the code cvx/functions/@cvx/trace_inv.m

Re-write trace(inv(X)*inv(A^H)) as trace(sqrtm(inv(A^H))*inv(X)*sqrtm(inv(A^H)))

Then incorporate into Schur complement by changing
[Y,eye(n);eye(n),X] >= 0;
to
[Y sqrtm(inv(A^H));sqrtm(inv(A^H)) X] >= 0;

I.e., Add an extra argument to trace_inv, and apart from any error checking, use this extra argument in place of eye(n). I don’t guarantee that this is correct. Consider this post to be for entertainment purposes only.

Edit: Other than the assumed dimensions, I guess what I describe is pretty much the same as what is done in matrix_frac, which is at cvx/functions/@cvx/marix_frac.m