function [xs,NBeval] = dichotoBis(fct,num,a,b,tol)
%
% function [xs,NBeval] = dichotoBis(fct,num,a,b,tol) 
%
% Methode de dichotomie 
%
% Arguments dÕentree : 
% fct : chaine de caracteres contenant le nom de la fonction 
%       dont on cherche le minimum (dÕen-tete y = fct(num,x)) 
% num : argument du choix de la fonction test dans "fct". 
% a : borne inferieure de lÕintervalle 
% b : borne superieure de lÕintervalle 
% tol : precision pour le test dÕarret 
%
% Arguments de sortie : 
% xs : valeur approchee du minimisant. 
% NBeval : nombre dÕevaluations de la fonction "fct". 
%          Estimation du cout de la methode.  
%
%
  NBeval = 1; alpha = a; beta = b; gamma = (alpha+beta)/2; 
  fgamma = feval(fct,num,gamma);
  while ( (abs(beta-alpha) > 2*tol) )
    miag = (alpha + gamma) / 2; fmiag = feval(fct,num,miag); 
    migb = (beta  + gamma) / 2; fmigb = feval(fct,num,migb);
    NBeval = NBeval + 2;
    if (fmiag < fgamma) 
      beta  = gamma; gamma = miag; fgamma = fmiag;
    elseif (fmigb < fgamma) 
      alpha = gamma; gamma = migb; fgamma = fmigb;  
    else
      alpha = miag; beta = migb; 
    end
  end
  NBeval = NBeval + 2;
  falpha = feval(fct,num,alpha);
  fbeta  = feval(fct,num,beta);
  if ((falpha < fbeta)&(falpha < fgamma))
     xs = alpha;
  elseif ((fbeta < falpha)&(fbeta < fgamma))
     xs = beta;
  else 
     xs = gamma;
  end
