I am trying to implement an optimization problem of minimizing the inverse of trace of the inverse psd matrix. However, the / invokes X/Y as X.*(1./(Y)) with the condition being that Y is a constant. In my case X/Y = 1/(trace_inv(X)) or , Y = trace_inv(CVX variable). Here’s the code for you to check it out.
N = 8;
P = 0.1;
cvx_begin
variable X(Ns,Ns) symmetric
minimize(1/(trace_inv(X))) %% or (inv_pos(trace_inv(X)))
subject to
norm((trace(X)-P),2) <= 1e-5;
cvx_end
I’ve tried to implement it using a dummy variable (code below) which doesn’t work either.
N = 8;
P = 0.1;
cvx_begin
variable X1(Ns,Ns) symmetric
variable Y
minimize(-Y)
subject to
(trace_inv(X1).* Y) == 1;
norm((trace(X1)-P),2) <= 1e-5;
If X is diagonal and positive definite (positive diagonal), then as described at Error using logdet: A should be a square matrix of double or single class , 1/trace_inv(X) is the harmonic mean divided by Ns, which is concave (and can be handled in CVX per the Mosek Modeling Cookbook link there). Note that I corrected my linked answer which originally misstated the harmonic mean as being convex, rather than concave.
Therefore, this is a non-convex optimization problem as stated.
But do you really want minimize(-1/trace_inv(X), as implied by your 2nd formulation? if so, the Mosek Modeling Cookbook link for Harmonic Mean shows how to handle that if X is diagonal positive definite. It X` is not diagonal positive definite, I don’t know whether the problem is convex. Do you? If not, it is incumbent on you to show us a convexity proof (unless someone else comes along and does so).