Hi Mark, how to express log(trace(AX)+b) in CVX. I am expression it directly in cvx, but not sure whether it violet the cvx rule.
As I know, if you express it directly in cvx, the cvx may give some warings. It doesn’t mean you are wrong.
You can use the ‘rel_entr’ function.
You can check this:
so, I should use like this rel_entr(trace(A*X)+b) ? I am not sure.
Replace
log(cvx_expression)
with
-rel_entr(1,cvx_expresion)
Nice, thank you very much .
You can enter it in CVX directly as
log(trace(A*X)+b)
If you, use CVX 2.2 and have available Mosek as solver, this suffices. In such case, you can use -rel_entr(1,trace(A*X)+b)
instead of log(trace(A*X)+b)
, but it is just an unnecessary reduction in the understandability of the code.
If you do not have Mosek available as solver, then you should use -rel_entr(1,trace(A*X)+b)
and install CVXQUAD’s exponential.m
replacement as described in the link provided by @NWPU_Xiu
Thank you very much Mark.