% opti2.m
% fd, 14  janvier 2006.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% xlabel (' opti2. Optimisation a une variable, section doree  ') ;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear ; format long 
m=101 ; xmin=0. ;  xmax = 1 ; dx=(xmax - xmin) /m ; 
x =zeros(m+1,1) ;   f =zeros(m+1,1) ;  
ymin=1.e30 ; ymax=-1.e30 ; 
for k=1 : m+1 ;  xx = xmin + (k-1) * dx ; 
x(k:k,1) = xx ;  
yy=ff(xx);
ymin = min ( yy , ymin ) ; 
ymax = max ( yy , ymax ) ; 
x(k:k,1) = xx ;  f(k:k,1) = yy ;  end ; 


hold  off ; 
plot(x,f(:,1),'k;fonction a minimiser;' ) ;
hold on
axis ( [ -.01 , 1.01 , .74 , 1.10 ]) ;
title ('section doree a une variable') ;


n = 25 , phi = (1+sqrt(5))/2 ;  
a=xmin ; b=xmax ;   ya=ff(a) ; yb = ff(b) ; 
% si je suis dans l option kk , je connais xkk et ykk
x1 =  b + (a-b)/phi ;  y1 = ff(x1) ;  x2 = a + (b-a)/phi ;  y2=ff(x2) ; 
for j=1:n ;
xx = [a,x1,x2,b] ; yy = [ya,y1,y2,yb] ;
if j==1 ; plot(xx,yy, '*r;iteration 1;') ; pause (.05) ; end ;  
if j==2 ; plot(xx,yy, '+b;iteration 2;') ; pause (.05) ; end ;  
if j==3 ; plot(xx,yy, 'om;iteration 3;') ; pause (.05) ; end ;  
if j==4 ; plot(xx,yy, 'xk;iteration 4;') ; pause (.05) ; end ;   
if j==5 ; plot(xx,yy, '+g;iteration 5;') ; pause (.05) ; end ; 
if j==6 ; plot(xx,yy, '*r;iteration 6;') ; pause (.05) ; end ; 
%%% plot(a,ya,'*b;;', x1,y1, '*g;;' , x2,y2, '*g;;', b,yb, '*r;;' ) ;


% j ,  a , x1 , x2 , b  
if ((y1<=y2)) ;  a = a ; b = x2 ; yb = y2 ;  x2 = x1 ; y2 = y1 ;  
x1 =  b + (a-b)/phi ;  y1 = ff(x1) ;  
% j ,  a , x1 , x2 , b  
else ; 
a = x1 ; ya = y1 ; b = b  ; x1 = x2 ; y1 = y2 ;   
x2 = a + (b-a)/phi ;  y2=ff(x2) ; 
% j ,  a , x1 , x2 , b ,   
end ;

end ; 
a , b , ecart=abs (b-a)
		
print('02-section-doree-une-variable', '-djpg','-S891,630');
hold  off ; 


