function psisketch0(m0,n0) global Ainf Binf m n mylinopt maxr %warning off warning on %m = 2; %n = 3; m = m0; n=n0; mylinopt = optimset('Diagnostics','off'); mylinopt = optimset('Display','off'); K = randn(m^n,1); phi = randlip(m,n)'; LBK = -ones(size(K)); UBK = ones(size(K)); LBf = zeros(size(K)); UBf = n*ones(size(K)); LB = [LBK]; UB = [UBK]; global w maxr = 0; while 1 w = rand(n,1); %w = n*w/sum(w); % this is important!!! %w = 0*w+1; %wsum = sum(w) [Ainf,Binf] = lipabw(m,n,w); %keyboard x = randn(m^n,1); [x,fval] = fmincon(@myobj_ratio,x,[],[],[],[],LB,UB); r = abs(fval); if r > maxr global maxalf maxK maxalf = w; maxK = x; maxr = r; end fprintf('m=%d n=%d maxr = %1.9f \n',m,n,maxr); end return function y = myobj_ratio(x) global m n maxr w %phi = x(1:m^n)'; %K = x(m^n+1:end); K = x; yPhi = phinorm(K); yPsi = psinorm(K,m,n)+realmin; %[yPhi yPsi] r = yPhi/yPsi; if r > maxr global maxalf maxK maxalf = w; maxK = x; maxr = r; fprintf('m=%d n=%d maxr = %1.9f \n',m,n,maxr); end y = -r; return function y = phinorm(K) global Ainf Binf m n mylinopt w W = sum(w); [x,fvalp] = linprog( K,Ainf,Binf,[],[],0*K,0*K+W,0,mylinopt); [x,fvaln] = linprog(-K,Ainf,Binf,[],[],0*K,0*K+W,0,mylinopt); y = max(abs(fvalp),abs(fvaln)); return function y = psinorm(K,m,n) y = max(Psi(K,m,n),Psi(-K,m,n)); return function y = psiwnorm(K,w) global m n y = max(Psiw(K,m,n,w),Psiw(-K,m,n,w)); return function S = Psi(K,m,n) global w S = 0; for t=1:n S = S + w(t)*sum(K.*(K>0)); K = getK1(K,m,n-t+1); end %S = S / sum(w); %S = S+pl(K); return