I’m trying to use CVX to solve a simple SDP feasibility problem. The mathematical problem is the SDP relaxation of sensor localization, i.e. [a_i; 1][a_i;1]^T\cdot [I, x; x^T, y]=d_i^2, [I,x; x^T,y]\succeq 0. We take i=1,2,3, and a_1=[1;0], a_2=[1;0],a_3=[0;2], and d_i=\x_0a_i\_2,
where x_0 is generated randomly. I tried the above formulation along with an equivalent one with
[a_i; 1][a_i;1]^T\cdot [I, x; x^T, y]=d_i^2 replaced by [a_i;1]^T [I, x; x^T, y][a_i;1]=d_i^2. But the first version never outputs something reasonable, while the second always outputs x\approx x_0. Below are the two versions:

Version One:
a = [1, 1, 0; 0, 0, 2];
lambda = randn(3, 1); lambda = lambda / sum(lambda);
xtrue = a * lambda;
d = pdist2(xtrue’, a’);
I = eye(2, 2);
cvx_begin %quiet
variable Z(3, 3) semidefinite;
variables x(2) y;
minimize(0);
subject to
Z == [I, x; x’, y];
for i = 1 : 3
dot([a(:, i); 1] * [a(:, i)’, 1], Z) == d(i)^2;
end
cvx_end
norm(x  xtrue) 
Version Two:
a = [1, 1, 0; 0, 0, 2];
lambda = randn(3, 1); lambda = lambda / sum(lambda);
xtrue = a * lambda;
d = pdist2(xtrue’, a’);
I = eye(2, 2);
cvx_begin %quiet
variable Z(3, 3) semidefinite;
variables x(2) y;
minimize(0);
subject to
Z == [I, x; x’, y];
for i = 1 : 3
[a(:, i)’, 1] * Z * [a(:, i); 1] == d(i)^2;
end
cvx_end
norm(x  xtrue)
Any idea on what’s behind this? Many thanks!