Botafogo

Méthode de dichotomie (ou méthode de la bissection)

Le mot dichotomie vient du grec dikhotomia qui signifie “division en deux parties”.Une méthode de dichotomie est une méthode dans laquelle on met en “opposition” deux sous-intervalles. Dans la méthode de la bissection, à chaque itération, on est amené à choisir entre deux sous-intervalles. Ce choix se base sur le théorème de Bolzano qui est un cas particulier du théorème des valeurs intermédiaires.

Théorèmes des valeurs intermédiaires et de Bolzano

Théorème 1.1. (Théorème des valeurs intermédiaires).
Soit une fonction continue , soit , compris entre et , alors
Théorème 1.2. (Théorème de Bolzano).
Soit une fonction continue , si , alors
Le théorème de Bolzano a été appelé théorème de la valeur intermédiaire en Analyse I au semestre d’automne.

Méthode de la bissection

Dans la méthode de la bissection, on commence par s’assurer que l’hypothèse du théorème de Bolzano est bien vérifiée pour l’intervalle de départ considéré. On sait alors que contient une racine . On choisit de prendre comme première approximation de cette racine le point milieu de , c’est-à-dire le point

Si , on a trouvé une racine de . Sinon, on choisit parmi les deux sous-intervalles (identiques) définis par , et , celui qui contient nécessairement une racine :

  • Si , on considère comme nouvel intervalle le sous-intervalle . Ce dernier contient en effet nécessairement un zéro de par le théorème de Bolzano.
  • Sinon, c’est-à-dire si , on considère comme nouvel intervalle le sous-intervalle . Ce dernier contient en effet nécessairement un zéro de par le théorème de Bolzano car on doit avoir .

On itère alors en prenant comme nouvelle approximation de le milieu de . Et ainsi de suite. La figure suivante permet de visualiser concrètement les premières itérations de la méthode de la bissection :

Algorithme de la méthode de la bissection

  • Choix d’un “bon” intervalle de départ tel que (au moins) un zéro .
  • Construction d’une suite de sous-intervalles , avec , et tels que :
    • Initialisation : on pose , et .
    • Pour :
      • si , alors et on s’arrête ;
      • si , on pose : , et , et on passe à l’itération suivante ;
      • si , on pose : , et , et on passe à l’itération suivante.
  • On s’arrête soit quand est trouvé ; soit quand une condition d’arrêt est remplie.

Condition d’arrêt et erreur commise

Dans la méthode de la bissection, la longueur des intervalles devient de plus en plus petite, , et les valeurs fournissent des approximations de plus en plus précises de la racine . Souvent, on termine la méthode quand l’intervalle considéré à une étape est plus petit qu’une certaine tolérance (précision) que l’on aimerait atteindre :

représente la longueur de l’intervalle . Intéressons-nous à l’erreur absolue commise à l’étape en se souvenant qu’à chaque étape la longueur de l’intervalle est divisée par deux :

Pour s’assurer que , avec la tolérance souhaitée, le nombre minimal d’itérations à effectuer est donc :

Dans cette expression, la fonction est la fonction réciproque de la fonction puissance de . Remarques:

  • La méthode de la bissection converge toujours. En effet, on note que et , et . Par conséquent, on a bien .
  • La convergence est lente : il faut itérations pour améliorer d’une décimale la précision. ()
  • On ne peut pas définir d’ordre de convergence (l’erreur n’est pas réduite de façon monotone d’une itération à l’autre).
  • Si la fonction est monotone dans l’intervalle considéré, on n’a qu’un zéro dans cet intervalle.
Si la fonction possède plusieurs zéros sur l’intervalle , on commence souvent par découper en un certain nombre (suffisant) de sous-intervalles pour appliquer ensuite sélectivement la méthode de la bissection sur chacun des sous-intervalles intéressants, c’est-à-dire sur chaque sous-intervalles contenant un zéro par la condition de Bolzano. On appelle cette technique méthode de la bissection par intervalles. Nous allons l’utiliser dans l’exercice 1 de la série 15.

Exemple : résolution de l’équation de Kepler

Le code Python suivant permet de résoudre l’équation de Kepler avec une tolérance à l’aide de la méthode de la bissection :
python
import numpy as np

def f(E):
    return E - 0.96727426*np.sin(E) - 0.0073673887 

a = 0
b = 0.5
eps = 1e-8

compteur_iterations = 0 

point_milieu = (a + b)/2

if f(a)*f(b) >= 0:
    print("L'intervalle [a,b] n'est pas approprié !")
else:
    while (b - a)/2 > eps:
        if f(a)*f(point_milieu) < 0:
            a = a
            b = point_milieu
            point_milieu = (a + b)/2
            compteur_iterations += 1
        elif f(point_milieu)*f(b) < 0:
            a = point_milieu
            b = b
            point_milieu = (a + b)/2
            compteur_iterations += 1
        elif f(point_milieu) == 0:
            print('La solution obtenue est exacte !')
            break
        else:
            print("Le zéro n'a pas pu être approché.")
            break

print(f"L'approximation de la racine cherchée est alpha = {point_milieu}.")
print(f"Elle a été obtenue après {compteur_iterations} itérations.")
text
L'approximation de la racine cherchée est alpha = 0.19091079384088516.
Elle a été obtenue après 25 itérations.
En représentant l’écart entre solution approchée et solution exacte en fonction du nombre d’itérations, on constate, sans surprise, que l’erreur n’est pas réduite de façon monotone d’une itération à l’autre. On ne peut donc effectivement pas définir d’ordre de convergence pour la méthode de la bissection.
Remarquons que, comme la solution exacte n’est pas connue, cette représentation a été obtenue en posant .

Polycopié rédigé par Roger Sauser, CMS. Sauf indication contraire, le contenu de ce document est soumis à une licence Creative Commons internationale, Attribution - Utilisation non commerciale - Partage dans les mêmes conditions 4.0 International (CC BY-NC-SA 4.0).

© 2026 Projet Botafogo. En savoir plus.