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.
Figure: Recherche d'un zéro par dichotomie