A determinant is needed in a constraint, but CVX does not support det()
In general, det
is neither concave nor convex.
However, CVX supports det_rootn
and log_det
Reference guide — CVX Users' Guide
help det_rootn
det_rootn nth-root of the determinant of an SPD matrix.
For a square matrix X, det_rootn(X) returns
POW(DET(X),1/(size(X,1))
if X is symmetric (real) or Hermitian (complex) and positive semidefinite,
and -Inf otherwise.This function can be used in many convex optimization problems that call for LOG(DET(X)) instead. For example, if the objective function contains nothing but LOG(DET(X)), it can be replaced with det_rootn(X), and the same optimal point will be produced. Disciplined convex programming information: det_rootn is concave and nonmonotonic; therefore, when used in CVX specifications, its argument must be affine.
help log_det
log_det Logarithm of the determinant of an SDP matrix.
For a square matrix X, log_det(X) returns
LOG(DET(X))
if X is symmetric (real) or Hermitian (complex) and positive semidefinite,
and -Inf otherwise.When used in a CVX model, log_det(X) causes CVX's successive approximation method to be invoked, producing results exact to within the tolerance of the solver. Therefore, whenever possible, the use of DET_ROOTN(X) is to be preferred, because the latter choice can be represented exactly in an SDP. For example, the objective MAXIMIZE(log_det(X)) can be (and should be) replaced with MAXIMIZE(DET_ROOTN(X)) in fact, log_det(X) is implemented simply as N*LOG(DET_ROOTN(X)). Disciplined convex programming information: log_det is concave and nonmonotonic; therefore, when used in CVX specifications, its argument must be affine.