function ephimarkov(m0,n0) global m n randomize m = m0; n = n0; global pstr pstr = 'ephimarkov' global lstr rstr global LB UB saf raf saf = 1; raf = 1e10; pdim = m*m; fdim = m^n; xdim = pdim + fdim; LB = zeros(xdim,1); LB(pdim+1:end) = 0*LB(pdim+1:end) + saf; UB = LB*0; UB(1:pdim) = 0*UB(1:pdim) + 1; UB(pdim+1:end) = 0*UB(pdim+1:end) + n; %UB(pdim+1:end) = 0*UB(pdim+1:end) + 1e6; [Aeq0, Beq] = normab(m,m); Aeq = assembleblock({Aeq0,zeros(0,fdim)}); Ain = []; Bin = []; global maxr maxr = 0; while 1 A = pnormdim(rand(m),1); %F = saf + rand(m^n,1); F = randlip; x = [A(:);F(:)]; y = fmincon(@radrat,x,Ain,Bin,Aeq,Beq,LB,UB); fprintf('%s: n=%d m=%d; rat = %s/%s; maxr = %1.9f \n',pstr,n,m,lstr,rstr,maxr); end return function y = radrat(x) global m n global lstr rstr global LB UB saf raf global pstr pdim = m*m; fdim = m^n; xdim = pdim + fdim; A = makepos(reshape(x(1:pdim),[m m])); F = x(pdim+1:end); %F = pl(F); F = max(F,saf); F = min(F,raf); C = ones(m,1)/m; P = markfillprob(A,C,n); U = prodmeas(P,m,n); [tha,hh] = stricthh(A); lam2 = lambda2(A); Hn = sum( tha.^(0:n-1) ); Hn1 = sqrt(Hn); Ln = sum( lam2.^(0:n-1) ); %Lam = 1/(1-lam2); FP = abs(F'*P); FU = abs(F'*U); lstr = 'FP'; rstr = 'FU*Hn1'; %rstr = 'FU'; %rstr = 'FU*(1+tha)'; lhs = eval(lstr); rhs = eval(rstr)+1e-12; r = lhs/rhs; y = -r; global maxr if r > maxr global optP optF optP = P; optF = F; maxr = r; fprintf('%s: n=%d m=%d; rat = %s/%s; maxr = %1.9f \n',pstr,n,m,lstr,rstr,maxr); end 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 function c=i2c(i,m,n) dims = repmat(m,[1 n]); c = ind2coord(i,dims); return