My optimization problem looks like:
cvx_begin
variable x(2, 2) semidefinite;
minimize(VNE(x))
subject to
trace(x) == 1
cvx_end
Where, VNE or Von Neumann Entropy is defined as follows: $$vne(\phi) = \sum_{i}\lambda_i log(\lambda_i)$$ Where $\lambda_i$ are the eigenvalues of $\phi \in C_n$. $C_n$ is the space of all Positive semi-definite unit trace complex matrices.
When I run this optimization problem, matlab gives the following error:
Error using eig
Invalid data type. Input matrix must be double or single.
I understand that I'm sending a variable instead of a matrix with definite values. How do I fix this problem?
Thanks.
Install CVXQUAD http://ask.cvxr.com/t/cvxquad-how-to-use-cvxquads-pade-approximant-instead-of-cvxs-unreliable-successive-approximation-for-gp-mode-log-exp-entr-rel-entr-kl-div-log-det-det-rootn-exponential-cone-cvxquads-quantum-matrix-entropy-matrix-log-related-functions/5598 .
Per https://en.wikipedia.org/wiki/Von_Neumann_entropy#Definition , Von Neumann Entropy of the matrix
xequals-trace(x*logm(x)). Note thelnin the Wikipedia article means what is calledlogmin MATLAB. As shown at https://github.com/hfawzi/cvxquad ,quantum_entr(x) = -trace(x*logm(x)), and is concave inx. Therefore I will presume you wish to maximize Von Neumann Entropy (or equivalently, minimize its negative).So the CVX program is
If you really do wish to minimize Von Neumann Entropy, that would be a non-convex optimization problem, and can not be handled by CVX.
If you have follow up questions on CVX usage, presuming they are for convex optimization problems, they would be better addressed at the CVX Forum http://ask.cvxr.com/