>> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% >> % Example from AHO1 where no strictly >> % complementary solution exists >> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% >> C = [0 0 0; 0 0 0; 0 0 1]; >> A1 = [1 0 0; 0 0 0; 0 0 0]; >> A2 = [0 0 1; 0 1 0; 1 0 0]; >> A3 = [0 1 0; 1 0 0; 0 0 1]; >> b = [1 0 0]'; >> blk = 3; >> m = 3; >> makeA >> >> initvars >> sdp tau = 0.9990, scalefac = 1 sdp: elapsed time = 0.39385 seconds sdp: elapsed cpu time = 0.40000 seconds sdp: flops = 5.72750e+04 sdp: Number of iterations = 12 sdp: final value of X.Z = 2.312e-09 sdp: final primal infeasibility = 2.220e-16 sdp: final dual infeasibility = 5.752e-17 sdp: primal objective value = 1.1559195968314993e-09 sdp: dual objective value = -1.1559195968284586e-09 >> >> [sort(blkeig(X,blk)) -sort(blkeig(-Z,blk))] ans = 1.2096e-11 1.0000e+00 6.7641e-05 3.3820e-05 1.0000e+00 1.2096e-11 >> >> % the true solutions X and Z each have rank 1, >> % but observe how the eigenvalues of the computed >> % solution are much less accurate than for problems with >> % strictly complementary solutions, and are not indicative >> % of the true ranks. >> >> primalcond(A,blk,X,1.0e-03); % confirms that solution is primal NONdegenerate primalcond = 1.000e+00 >> dualcond(A,blk,Z,1.0e-03); % confirms that solution is dual NONdegenerate dualcond = 1.414e+00 >> sdpcond(A,b,C,blk,X,y,Z); % condition number is infinite, since SC failed sdpcond: gap = 2.312e-09 sdpcond: primal infeasibility = 2.220e-16 sdpcond: dual infeasibility = 5.752e-17 sdpcond: cond estimate of 3x3 block matrix = 4.124e+04 >> % cond estimate is not large because eigenvalues which should >> % be zero are not very small