I am trying to plot the feasible region of a rank constrained semidefinite program shown below:
The Mathematica code that I am using is the following:
FeasibleRegionRanksdp =
RegionPlot[
Tr[{{0.09, 0}, {0, 7}}.{{x1^2, x1*x2}, {x1*x2, x2^2}}] <= 1 &&
Tr[{{7, 0}, {0, 0.09}}.{{x1^2, x1*x2}, {x1*x2, x2^2}}] <= 1 &&
Tr[{{1.05, -0.95}, {-0.95, 1.05}}.{{x1^2, x1*x2}, {x1*x2, x2^2}}] <= 1 &&
Tr[{{1.05, 0.95}, {0.95, 1.05}}.{{x1^2, x1*x2}, {x1*x2, x2^2}}] <= 1 &&
MatrixRank[{{x1^2, x1*x2}, {x1*x2, x2^2}}, Tolerance -> 0] ==1 &&
Min[Eigenvalues[{{x1^2, x1*x2}, {x1*x2, x2^2}}]] >= 0,
{x1, -0.5, 0.5}, {x2, -0.5, 0.5}]
The result that I am obtaining is the following non-convex region:
My questions is:
1) Is the rank constraint imposed correctly in Mathematica?
2) Is the positive semidefiniteness constraint also correct in the code?
based on my understanding, the rank constraint is the only non-convex constraint and so the region should be non convex. But once I remove the rank constraint, the non convexity should be removed and the region should be convex which is not the case as could be checked by removing the rank constraint and plotting.
I would really appreciate any help with this.