I would like to hear some comments on the what I got after some experiences on the model. I am not sure this is because of way of writing code or there is another reason. Please let me know your comments.
Let’s suppose we want to know the sum of the two largest eigenvalues of a matrix A \in \cal S^n. the primal and dual pair is known as:
Primal:
\max ~\langle A, X \rangle
$~~~~~~~~~s.t. \langle I, X \rangle = k $
~~~~~~~~~~~~~~~~~~ 0 \preceq X \preceq I
Dual: ~~\min ~\lambda k + Z
~~~~~~~~~~ s.t.~~\lambda I + Z - A \succeq 0
~~~~~~~~~~~~~~~~~Z \succeq 0
Their codes in MATLAB are, respectively:
k = 2;
A = randn(n);
A = A’*A
cvx_begin sdp
variable X(n,n) symmetric
X == semidefinite(n)
I = eye(n);
maximize (trace(A * X))
subject to
trace(I * X) == k;
X <= I;
cvx_end
cvx_begin sdp
variable Z symmetric
Z == semidefinite(n)
variable y
I = eye(n);
minimize (k * y + trace(I * Z))
subject to
y * I + Z >= A
cvx_end
I used the same matrix A (generated by rand() command) for dual and got these answer:
Primal:
Status: Solved
Optimal value (cvx_optval): +35.1233
Dual:
Status: Solved
Optimal value (cvx_optval): +42.9898
Now, my question is that we know the Slater condition is held for both primal and dual, then we would expected to have the same optimum values. But why I have these?
I really appreciate any helps.