function fitsig(n0,P0,F0) % P is a distribution on m^n % F is a collection of functions m*N randomize global n P F n = n0; P = P0; F = F0; P0 = ones(2^n,1); P0 = P0/sum(P0); zz = P0*0 + 1e-12; oo = P0*0+1; if 1 % require sym. stationarity %Aeq = is_stat(2,n); Aeq = is_stat_sym(n); Aeq = [Aeq;oo']; Beq = zeros(size(Aeq,1),1); Beq(end)=1; else Aeq = oo'; Beq = 1; end global opty opty = 1e6; while 1 %P = rand(2^n,1); P = P/sum(P); %P = P/sum(P); %%P = ones(2^n,1); P = P + randn(2^n,1)/2^n/10000; P = randbinsym(n); x = [P(:)]; y = fmincon(@myobj,x,[],[],Aeq,Beq,zz,oo); fprintf('n=%d; opty = %1.9f \n',n,opty); end return function y = myobj(Psig) Psig = makepos(Psig); global n P F opty E0 = maxdev_sym1(P,F,n); E1 = maxdev_sym2(P,Psig,F,n); y = abs(E0-E1); if y < opty global optP optP = Psig; opty = y; fprintf('n=%d; opty = %1.9f \n',n,opty); end return