function frat(m0,n0,F0) global m n F m = m0; n = n0; F = F0; global pstr pstr = 'frat' global lstr rstr xdim = m*F; %LB = zeros(xdim,1) - 10; LB = zeros(xdim,1); UB = LB*0 + pi; global maxr maxr = 0; while 1 %A = randn(m,F); A = rand(m,F); x = A(:); y = fmincon(@radrat,x,[],[],[],[],LB,UB); fprintf('%s: n=%d m=%d F=%d; rat = %s/%s; maxr = %1.9f \n',pstr,n,m,F,lstr,rstr,maxr); end return function y = radrat(x) global m n F global lstr rstr global pstr xdim = m*F; A = reshape(x,[m F]); FF = A2F(A); a = min(max(A')); %lstr = 'a*max(FF)'; %rstr = 'min(FF)'; %lstr = 'a'; %rstr = 'min(FF)'; lstr = '(max(FF)/min(FF))'; rstr = '(n/a)'; lhs = eval(lstr); rhs = eval(rstr)+1e-12; r = lhs/rhs; y = -r; global maxr if r > maxr global optA optA = A; maxr = r; fprintf('%s: n=%d m=%d F=%d; rat = %s/%s; maxr = %1.9f \n',pstr,n,m,F,lstr,rstr,maxr); end return