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.