function mcd_testmain NN = 7; global nstate nstate = 2; global FN Fdmax = 0; fname = '/usr1/lkontor/MCDBAD.mat'; for t=1:1000000 %d = rand*10; d = 1; FN = randFN(nstate,NN,d,'exact'); %Fmax = max(FN{NN}); %Fmin = min(FN{NN}); %Fdel = Fmax - Fmin; %Fdmax = max(Fdel,Fdmax) %n = ceil(rand*(NN-2))+1; n = round(randinseg(2,NN-1)); %n = 3; %n = 1; a = rand; %b = rand; b = randinseg(0,a); %x = round(rand)+1; x = []; %L = NN - n; %L = NN; %if (L>0) %x0 = round(rand(1,L)); %x1 = 1-x0; % x0 = round(rand(1,L)) % x1 = round(rand(1,L)) %else % x0 = []; % x1 = []; %end x=[]; for a=.001:.05:1 %for b=0.001:.05:1 for b=0.001:.05:a % a = 1; % b = 0; [alf0, bet0] = alfbet(n,[0],a,b); [alf1, bet1] = alfbet(n,[1],a,b); %[alf0, bet0] = alfbet(n,[x0],a,b); %[alf1, bet1] = alfbet(n,[x1],a,b); [alf, bet] = alfbet(n,[],a,b); nn=0:n-1; h = abs(a-b); H0 = sum(h.^nn); %H0 = Hn(3,a,b); %g00 = ( abs(alf0-bet0) <= d*H0+1e-10); %g11 = ( abs(alf1-bet1) <= d*H0+1e-10); g = ( abs(alf-bet) <= d*H0+1e-10); %if ~(g00 & g11) if ~g 'its all over' good = robustsave(fname,10,FN,n,x,a,b); keyboard end %[A,B,C] = ABC(n,a,b,d); %gA = (A<=2*C+1e-10); %gB = (B<=C+1e-10); %gB=1; %if ~(gA & gB) g10 = ( abs(alf1-bet0) <= 2*d*H0+1e-10); g01 = ( abs(alf0-bet1) <= 2*d*H0+1e-10); if ~(g10 & g01) 'no sir' keyboard end %fprintf('A+B=%1.4f\n',A+B); if 0 ga = ( abs(alf0-alf1) <= d*H0+1e-10); gb = ( abs(bet0-bet1) <= 2*d*H0+1e-10); %gb = 1; if ~(ga & gb) 'not quite' keyboard end end if 0 [alfo0, beto0] = alfbet(n-1,[0 0],a,b); [alfo1, beto1] = alfbet(n-1,[0 1],a,b); d1 = alfo0-alfo1; d2 = beto1-beto0; if ~(abs(d1+d2)<=d*H0+1e-10) 'muzar' keyboard end end if 0 g00 = ( abs(alf0-bet0) <= d*4+1e-10); g01 = ( abs(alf0-bet1) <= d*4+1e-10); g10 = ( abs(alf1-bet0) <= d*4+1e-10); g11 = ( abs(alf1-bet1) <= d*4+1e-10); %if ~(g00 & g01 & g10 & g11) % 'meod muzar' % keyboard %end end end end %fprintf('good t = %d a=%1.3f b=%1.3f FF=[%s] \n',t,a,b,num2str(FN{3})); fprintf('good t = %d n = %d \n',t,n); %fprintf('good t = %d n = %d maxE = %1.9f \n',t,n,maxE); %fprintf('good t = %d n = %d minG = %1.7f maxG = %1.7f \n',t,n,minG,maxG); %if (rand<0.005) %end end return function h = Hn(n,a,b) h = 3; return function h = Hn_old(n,a,b) if (n==1) h = 1; else H0 = Hn(n-1,a,b); h = H0 + (a-b)^(n-1); end return function [A,B,C] = ABC(n,a,b,d) if (n==1) A = d; B = d; C = d; else [A0, B0, C0] = ABC(n-1,a,b,d); A = a *A0 + b *B0; B = (1-a)*A0 + (1-b)*B0; C = C0 + (a-b)^(n-1); end return