function abclpcheck m=3; LB = zeros(m^2,1)+1e-10; UB = ones(m^2,1); for t=1 ABC = randn(3); %A = ABC(:,1); %B = ABC(:,2); %C = ABC(:,3); A = pnormdim(rand(3),1); [h,j1,j2,t0] = strict(A); a = A(:,j1); b = A(:,j2); % normalization constraints rind = 0; Aeq = zeros(0,m^2); for i=1:m rind = rind+1; for j=1:m Aeq(rind,m*(i-1)+j) = 1; end end Beq = ones(rind,1); % stricture constraints SIGNS = 2*list_all_ind(repmat([2],[1 m]))-3; Aina = zeros(0,m^2); rind = 0; for i1=1:m for i2=i1+1:m for s = 1:size(SIGNS,1) rind = rind+1; ss = SIGNS(s,:); for j=1:m ind1 = coord2ind([j i1],[m m]); ind2 = coord2ind([j i2],[m m]); Aina(rind,ind1) = ss(j); Aina(rind,ind2) = -ss(j); end end end end Bina = ones(size(Aina,1),1)*h*2; % a quick'n'dirty hack to fix A for i=1:m for j=[j1 j2] %for j=1:m cind = coord2ind([i j],[m m]); rind = rind+1; Aina(rind,cind) = 1; Bina(rind,1) = A(i,j)+1e-10; rind = rind+1; Aina(rind,cind) = -1; Bina(rind,1) = -A(i,j)-1e-10; end end f = ABC(:); [xp,fvalp] = linprog( f,Aina,Bina,Aeq,Beq,LB,UB); [xn,fvaln] = linprog(-f,Aina,Bina,Aeq,Beq,LB,UB); if abs(fvalp)>abs(fvaln) x = xp; fval = fvalp; else x = xn; fval = fvaln; end A1 = reshape(x,[m m]); keyboard end return