% max1d.m
% fd, 14, 29  janvier 2006.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% xlabel (' optimisation a une variable, section doree  ') ;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function rho=max1d ( lambda , a, b, al0, be0 , p , q );  

%  initialisation de l algorithme  
toto  = gg ( lambda , a , b , al0 , be0 , p , q ) ;  
ff   = toto(1:1,1) ; ffmin = ff ; 
grad = toto(2:2,1)  ; 

     rhomin = 0; 
     rhomax =  .1 * grad  ; 
rho = rhomax ; 
toto  = gg ( lambda + rho , a , b , al0 , be0 , p , q ) ;  
ffn   = toto(1:1,1) ;  ffmax = ffn ; 
     rho = rhomax ; 

     for j = 1:11 ; 
     if (ffmax > ffmin) 
     rhomin = rhomax ; ffmin = ffn ; 
rhomax = 1.1 * rhomax ; 
rho = rhomax ; 
toto  = gg ( lambda + rho , a , b , al0 , be0 , p , q ) ;  
ffn   = toto(1:1,1) ; 
ffmax = ffn ; 
     end ; end ; 

[ ffmin  ffmax ] ; 


%  algorithme de la section doree 
phi = (1+sqrt(5))/2 ;

rho1 =  rhomax + (rhomin-rhomax)/phi ;
toto  = gg ( lambda + rho1 , a , b , al0 , be0 , p , q ) ;  
ff1   = toto(1:1,1) ; 
rho2 = rhomin + (rhomax-rhomin)/phi ; 
toto  = gg ( lambda + rho2 , a , b , al0 , be0 , p , q ) ;  
ff2   = toto(1:1,1) ; 

n = 10 ; 
for j=1:n ; 
[ rhomin  rho1  rho2  rhomax  ff1  ff2 ]  ; 
if ((ff1>=ff2)) ;  rhomin = rhomin ; rhomax = rho2 ;  rho2 = rho1 ; ff2 = ff1 ;  
rho1 =  rhomax + (rhomin-rhomax)/phi ;  
toto  = gg ( lambda + rho1 , a , b , al0 , be0 , p , q ) ;  
ff1   = toto(1:1,1) ; 
else ; 
rhomin = rho1 ; rhomax = rhomax  ; rho1 = rho2 ; ff1 = ff2 ;   
rho2 = rhomin + (rhomax-rhomin)/phi ;  
toto  = gg ( lambda + rho2 , a , b , al0 , be0 , p , q ) ;  
ff2   = toto(1:1,1) ; 
end ; 
end ;   
rho=rhomin   ; 
err = abs (rhomax-rhomin)  ; 

