Méthode de dichotomie

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Étapes successives de la méthode de dichotomie avec comme point de départ, l'intervalle [a1;b1]. Le zéro de la fonction est en rouge.

La méthode de dichotomie ou méthode de la bissection est, en mathématiques, un algorithme de recherche d'un zéro d'une fonction qui consiste à répéter des partages d’un intervalle en deux parties puis à sélectionner le sous-intervalle dans lequel existe un zéro de la fonction.

Principe[modifier | modifier le code]

On considère deux nombres a et b et une fonction f continue sur l'intervalle [a, b] telle que f(a) et f(b) soient de signes opposés. Supposons que nous voulions résoudre l’équation f(x) = 0. Nous savons d'après le théorème des valeurs intermédiaires que f doit avoir au moins un zéro dans l’intervalle [a, b]. La méthode de dichotomie consiste à diviser l’intervalle en deux en calculant c = (a+b) / 2. Il y a maintenant deux possibilités : ou f(a) et f(c) sont de signes contraires, ou f(c) et f(b) sont de signes contraires.

L’algorithme de dichotomie est alors appliqué au sous-intervalle dans lequel le changement de signe se produit, ce qui signifie que l’algorithme de dichotomie est en soi récursif.

L’erreur absolue de la méthode de dichotomie est au plus

 \frac{b-a}{2^{n+1}}

après n étapes. En d’autres termes, l’erreur est diminuée de moitié à chaque étape, ainsi la méthode converge linéairement, ce qui est très lent par comparaison avec la méthode de Newton.

L'avantage par rapport à cette dernière est son domaine d'application plus vaste : il suffit seulement que f(a) et f(b) soient de signes opposés et qu'on puisse déterminer le signe de f(c) à chaque itération. De plus, si on se donne la tolérance relative \epsilon\,, on connaît en théorie le nombre maximum d'itérations nécessaires pour satisfaire cette tolérance :

 2^{n+1} = 1/\epsilon\,

C'est un cas assez peu habituel en calcul numérique pour être noté.

Programmation[modifier | modifier le code]

Sous l'hypothèse que le signe de f(c) soit déterminable, voici une représentation de la méthode en langage Visual Basic. Les variables xL et xR correspondent aux réels a et b précédents. Les valeurs initiales de xL et xR doivent être choisies telles que f(xL) et f(xR) soient de signe opposé (elles encadrent le zéro). La variable epsilon indique avec quelle précision le résultat doit être donné.

'Méthode de dichotomie

'Start loop
  While (xR - xL) > epsilon do
  
  'Calcule le milieu du domaine de définition
  xM = (xR + xL) / 2
  
  'Find f(xM)
  If ((f(xL) * f(xM)) > 0) Then
    'jette la moitié de gauche
    xL = xM
  Else
    'jette la moitié de droite
    xR = xM
  End If
Loop

Limite de la méthode[modifier | modifier le code]

Cette méthode d'une grande robustesse nécessite cependant de connaître à chaque étape le signe de f(c). Dans quelques cas, il peut arriver que la valeur de f(c) soit si proche de 0 que la précision du logiciel de calcul ne permette plus de déterminer le signe de f(c) (le logiciel de calcul assimile f(c) à 0). L'application de l'algorithme risque alors de conduire à l'élimination erronée d'une moitié de l'intervalle et à la convergence vers une valeur éloignée de la racine.

D'une manière plus générale, la détermination du signe de f(c) peut se révéler impossible, même en augmentant la précision du calcul du logiciel. Considérons par exemple un réel \alpha dont on peut calculer des valeurs approchées décimales ou rationnelles \alpha_n à toute précision \frac{1}{n} désirée. Considérons maintenant la fonction f affine sur les intervalles [0, \frac{1}{3}], [\frac{1}{3}, \frac{2}{3}] et [\frac{2}{3}, 1] et telle que f(0)=-1, f(1) = 1, f(1/3) = f(2/3) = \alpha. La méthode de dichotomie demande de déterminer le signe de f(1/2) = \alpha. Or il n'existe aucun algorithme général permettant de décider si \alpha>0, \alpha=0 ou \alpha<0. En effet, un tel algorithme, s'il existait, ne devant effectuer qu'un nombre fini de calcul, devrait prendre sa décision au vu d'un nombre fini de valeurs approchées \alpha_n, ce qui est insuffisant pour conclure.

Cette limite conduit les théoriciens[1] de l'analyse constructive à qualifier la méthode de dichotomie de non constructive et à privilégier l'énoncé alternatif : rechercher une valeur x telle que |f(x)| soit inférieure à une erreur donnée.

Article détaillé : Analyse constructive.

Voir aussi[modifier | modifier le code]


Référence[modifier | modifier le code]

Richard L. Burden, J. Douglas Faires (2000), Numerical Analysis, (7th Ed), Brooks/Cole. ISBN 0-534-38216-9

  1. Erret Bishop, Douglas Bridges, Constructive analysis, Springer-Verlag (1985), p.8