next up previous contents index
Next: Exécution des fonctions définies Up: No Title Previous: Abréviations de type

Recherche de zéros par dichotomie

  

On cherche à calculer un zéro d'une fonction réelle continue f sur un intervalle [a,b], prenant des valeurs de signes opposés aux extrémités. Le théorème des valeurs intermédiaires assure l'existence d'un zéro. L'idée de la dichotomie est de chercher un zéro sur [a,(a+b)/2] ou bien sur [(a+b)/2,b], selon le signe de f((a+b)/2).

double zero_dicho(double a, double b) {
  double m = (a+b)/2;
  double fm = f(m);

  if (fabs(fm)<eps) {
    return m;
  } else {
    if (f(a)*fm<0) {
      return zero_dicho(a,m);
    } else {
      return zero_dicho(m,b);
    }
  }
}

La condition d'arrêt est fabs(fm)<eps, eps étant une variable globale, et fabs étant la fonction de la bibliothèque mathématique calculant la valeur absolue d'un double.


  
Figure 5: Recherche d'un zéro par dichotomie
\begin{figure}
 \begin{center}
 \leavevmode
 
\fbox {
 \epsfig{file=fig/zero_dicho.eps}
 }
 \end{center} \end{figure}



Jean-Philippe Chancelier
9/29/1998