function ephiconv(m0,n0) global m n m = m0; n = n0; global LB UB saf raf Lipk saf = 1; raf = n; global Ainf Binf mylinopt mylinopt = optimset('Diagnostics','off'); mylinopt = optimset('Display','off'); [Ainf,Binf] = lipab(m,n); while 1 %P1 = unifP(m,n); %F1 = rand(m^n,1); F1 = randlip'; ab1 = rand(2,1); %P2 = unifP(m,n); %F2 = rand(m^n,1); F2 = randlip'; ab2 = rand(2,1); lam = rand; ab2(2) = ab1(2); %P3 = lam*P1 + (1-lam)*P2; ab3 = lam*ab1 + (1-lam)*ab2; F3 = lam*F1 + (1-lam)*F2; v1 = myfunc2([ab1; F1]); v2 = myfunc2([ab2; F1]); v3 = myfunc2([ab3; F1]); %v1 = myfunc([P1; F1]); %v2 = myfunc([P2; F2]); %v3 = myfunc([P3; F3]); % NOT convex in (P,F) %v1 = myfunc([P1; F1]); %v2 = myfunc([P1; F2]); %v3 = myfunc([P1; F3]); % YES convex in F %v1 = myfunc([P1; F1]); %v2 = myfunc([P2; F1]); %v3 = myfunc([P3; F1]); % NOT convex in P good = (v3 < lam*v1 + (1-lam)*v2 +1e-9) %good = (v3 < max(v1,v2) + 1e-9) if ~good keyboard end end return function y = myfunc1(x) global m n P = x(1:m^n); F = x(m^n+1:end); U = prodmeas(P,m,n); [hh,Ht,H] = gethhn(P,m,n); lhs = P'*F; rhs = H*U'*F; y = rhs - lhs; return function y = myfunc2(x) global m n ab = x(1:2); F = x(3:end); a = ab(1); b = ab(2); A(1,1) = a; A(2,1) = 1-a; A(1,2) = b; A(2,2) = 1-b; C = ones(m,1)/m; P = markfillprob(A,C,n); U = prodmeas(P,m,n); %[hh,Ht,H] = gethhn(P,m,n); tha = abs(a-b); H = sum(tha.^[0:n-1]); lhs = P'*F; rhs = H*U'*F; y = rhs - lhs; return function phi = randlip global Ainf Binf m n mylinopt global saf raf K = genK(m,n); [x,fval] = linprog(-K,Ainf,Binf,[],[],0*K+saf,0*K+raf,0,mylinopt); phi = x'; return