function mcd_affine NN = 7; global nstate nstate = 2; global FN maxD = 0; for t=1:1000000 %for t=1 d = rand*10; FN = randFN(nstate,NN,d,'non'); %n = ceil(rand*(NN-2))+1; n = round(randinseg(2,NN-1)); %n = 1; %n = 1; a = rand; %b = rand; b = randinseg(0,a); %b = a; %x = round(rand)+1; x = []; if 0 global STATS STATS = []; load AFFINEBAD for a=.001:.01:1 for b=0.001:.01:a [alf0, bet0] = alfbet(n,[1 x],a,b); [alf1, bet1] = alfbet(n,[2 x],a,b); h = a-b; H1 = Hn(n+1,a,b); d1 = alf0 - alf1; d2 = bet1 - bet0; d3 = alf1 - bet1; a1 = 0; b1 = 0; AY00 = abs(a1*d1 + b1*d2 + d3); g00 = H1 - AY00; a1 = 1; b1 = 0; AY10 = abs(a1*d1 + b1*d2 + d3); g10 = H1 - AY10; a1 = 1; b1 = 1; AY11 = abs(a1*d1 + b1*d2 + d3); g11 = H1 - AY11; gmin = min([g00 g10 g11]); STATS = [STATS;[h gmin a b d1 d2 d3 alf0 alf1 bet0 bet1 g00 g10 g11 AY00 AY10 AY11 H1]]; % 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 end end save AFFINE STATS end if 0 FN = randFN(nstate,2); D = abs(F([1 1]) - F([2 2])); maxD = max(D,maxD); end if 0 FN = randFN(nstate,3); d1 = F([1 1 1]) - F([1 2 2]); d2 = F([2 2 2]) - F([2 1 1]); d3 = F([1 2 2]) - F([2 2 2]); th = .25; g = ( abs(d1*a + d2*b + d3) <= th+Hn(3,a,b) + 1e-10 ); if ~g 'ya messed up again' keyboard end end if 1 % might just have a ring of truth for a=.001:.05:1 for b=0.001:.05:a [alf0, bet0] = alfbet(n,[1 x],a,b); [alf1, bet1] = alfbet(n,[2 x],a,b); d1 = alf0 - alf1; d2 = bet1 - bet0; d3 = alf1 - bet1; a1 = 0; b1 = 0; th = .25; %Fpn = th+Hn(n+1,a,b) - abs(a1*d1 + b1*d2 + d3); Fpn = d*(th+Hn(3,a,b)) - abs(a1*d1 + b1*d2 + d3); g00 = ( Fpn >= -1e-10 ); a1 = 1; b1 = 0; %Fpn = th+Hn(n+1,a,b) - abs(a1*d1 + b1*d2 + d3); Fpn = d*(th+Hn(3,a,b)) - abs(a1*d1 + b1*d2 + d3); g10 = ( Fpn >= -1e-10 ); a1 = 1; b1 = 1; %Fpn = th+Hn(n+1,a,b) - abs(a1*d1 + b1*d2 + d3); Fpn = d*(th+Hn(3,a,b)) - abs(a1*d1 + b1*d2 + d3); g11 = ( Fpn >= -1e-10 ); if ~(g00 & g10 & g11) save AFFINEBAD FN n x a b 'your affine crap still dont work' keyboard end ab01 = abs(alf0-bet1); ab10 = abs(alf1-bet0); %g = ( max(ab01,ab10) <= th+Hn(n+1,a,b) + 1e-10 ); g = ( max(ab01,ab10) <= d*(th+Hn(3,a,b)) + 1e-10 ); if ~g 'meod muzar' 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('t = %d maxD = %d \n',t,maxD); %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); end return function h = Hn(n,a,b) if (n==1) h = 1; else H0 = Hn(n-1,a,b); h = H0 + (a-b)^(n-1); end return