function spectralmarkovplot(m0,n0) global m n randomize m = m0; n = n0; global pstr pstr = 'spectralmarkov' global lstr rstr global C %C=ones(m,1)/m; LL = []; HH = []; while 1 A = pnormdim(rand(m),1); C=rand(m,1); C=C/sum(C); P = markfillprob(A,C,n); ae = sort(abs(eig(A))); lam2 = ae(end-1); tha = stricthh(A); Ln = sum(lam2.^(0:n-1)); %Ln = sum(sqrt(lam2).^(0:n-1)); [hh,Ht,Hn] = gethhn(P,m,n); hh = hh+eye(n); H2 = (max(eig(hh'*hh))); LL(end+1) = 1/(1-lam2); HH(end+1) = Hn; plot(HH,LL,'.'); drawnow end return function y = radrat(x) global m n global lstr rstr global pstr global C pdim = m*m; %fdim = m; %xdim = pdim + fdim; xdim = pdim; A = makepos(reshape(x(1:pdim),[m m])); %f = x(pdim+1:end); P = markfillprob(A,C,n); ae = sort(abs(eig(A))); lam2 = ae(end-1); tha = stricthh(A); %rstr = 'tha'; %lstr = 'lam2'; Ln = sum(lam2.^(0:n-1)); %Ln = sum(sqrt(lam2).^(0:n-1)); [hh,Ht,Hn] = gethhn(P,m,n); hh = hh+eye(n); H2 = (max(eig(hh'*hh))); %lstr = 'TV(A*f)'; %rstr = 'lam2*TV(f)'; lstr = 'Hn'; %lstr = 'H2'; rstr = 'Ln'; lhs = eval(lstr); rhs = eval(rstr)+1e-12; r = lhs/rhs; y = -r; global maxr if r > maxr global optA optC optf optA = A; optC = C; %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