I apologize in advance if I’m doing something extremely silly here, but I can’t figure out what is causing some weird behaviour on one of my CVX problems. Here is a minimal CVX example that displays the weirdness that I’m encountering:
cvx_begin sdp quiet variable X(2,2) hermitian minimize norm_nuc(X) subject to trace(X) == 1; X >= 0; X(1,2) == 0.2*1i; cvx_end
The above code should return a value of 1, since the nuclear norm of every positive semidefinite matrix is just equal to its trace, which is constrained to be 1 here. However, when I run this code (on MATLAB R2013a, using CVX 2.1), I get a value of 1.4000 in cvx_optval. Nonetheless, subsequently running
on the output of the above CVX problem gives a value of 1.000, as expected. Where is the 1.4000 coming from?
The problem seems to be with the 0.2*1i constraint. If I change that to a real number, then this problem goes away. Also, I get the same weirdness whether I use SDPT3 or SeDuMi as the solver.