ChronoMath, une chronologie des MATHÉMATIQUES
à l'usage des professeurs de mathématiques, des étudiants et des élèves des lycées & collèges

Méthode dichotomique pour l'équation f(x) = 0    
      
Pas de théorie, je veux utiliser le programme en ligne  |  Autres méthodes  |  Recherche dichotomique

La méthode dichotomique (du grec dikhotomia = action de partager en deux) s'applique à la recherche d'un zéro isolé s d'une fonction continue f lorsque celle-ci change de signe dans un voisinage V de s. Par isolé, on entend, que s est le seul zéro de f dans ce voisinage.

Cette méthode d'approximations successives est en application d'un théorème de Bolzano :

Si f est une fonction continue sur ]a,b[ et change de signe sur cet intervalle, alors f s'annule en (au moins) un point c de ]a,b[.

  On voit ici la limite de la méthode : elle ne saura pas rechercher les zéros d'ordre pair : une annulation de f sans changement de signe, comme f(x) = x3 - 2x2 - 4x + 8 = (x + 2)(x - 2)2, sort du champ d'application du théorème cité en introduction. On pourra, par exemple, recourir à la méthode des tangentes.

La méthode dichotomique est un algorithme simple et performant assurant le calcul de l'erreur d'approximation : pour illustrer la méthode, on se propose de résoudre l'équation :

1 < x < 2 , sin x = x/2       (e)

On peut espérer au plus 15 chiffres significatifs exacts, mode de calcul usuel de JavaScript. L'application du théorème Bolzano à la fonction f(x) = sin x - x/2 et une représentation graphique, même sommaire, permet d'affirmer que la solution de notre équation, qui doit donc annuler la fonction f, est unique et comprise entre 1,5 et 2.

Étude :     

Soit f vérifiant le théorème de Bolzano cité ci-dessus et s la solution de l'équation f(x) = 0, isolé dans ]a,b[. On choisit comme première approximation de s la valeur x1 = (a+b)/2.

Il s'agira de bien choisir son encadrement de départ, à savoir :

a < b   et   f(a).f(b) < 0
 

Programmation de la méthode en JavaScript :

  Pour tester ce programme vous devez entrer votre fonction en utilisant une syntaxe comprise par le langage JavaScript. L'instruction with (Math), placée en début de procédure, évite à l'utilisateur de préciser Math devant chaque fonction mathématique utilisée. Les opérations et fonctions usuelles sont les suivantes :

Tant que vous cliquerez sur OK, le programme poursuivra la dichotomie. La précision maximale de JavaScript est 10-15. Un bon compromis pourra être de pousser les calculs jusqu'à une erreur inférieure à 10-6.

 fonctions mathématiques usuelles


Exemple d'exécution : la fonction donnée est ici f(x) = sin(x) - x/2 ; on fournit a = 1.5 et b = 2 au programme

<SCRIPT LANGUAGE=JavaScript>
var x,f,pi,e
function meth_dicho()
{
pi=3.141592653589793 ; e=2.7182818284590452
f="sin(x)-x/2",a=1,b=2;
f=prompt("Entrez votre fonction :",f)
if (f==null) {return}
ya=1;yb=1
while (ya*yb>0)
{
a=prompt("Entrez a :",a)
if (a==null) {return} else {a=eval(a)}
b=prompt("Entrez b :",b)
if (b==null) {return} else {b=eval(b)}
x=b;yb=fonc();x=a;ya=fonc();
if (ya*yb>0) {alert("Mauvais encadrement")}
}
while (b-a>1E-15)
{
x=a ; ya=fonc()
if (ya==0){alert(a+" est solution");return}
x=(a+b)/2 ; y=fonc()
if (y==0) {alert(x+" est solution");return}
if (ya*y< 0) {b=x} else {a=x}
if (!confirm("x = "+x+"\n"+"erreur maxi = "+eval(b-a))) return
}
alert("x = "+x+"\n"+"erreur maxi = "+eval(b-a)+"\n"+"fin d'algorithme")
}

function fonc()
{with(Math)
{y=eval(f) return y}
}
</SCRIPT>


Résoudre à 10-3 près, l'équation x3 - x - 1 = 0
Rép : Une étude élémentaire permet de constater l'unique solution de cette équation entre 1 et 2 et même, plus précisément à entre 1 et 1,5. On peut aussi remarquer que l'équation donnée équivaut x3 = x + 1, donc à intersecter la cubique y = x3 avec la droite y = x + 1.
L'application de la méthode à f(x) = x3 - x - 1 sur l'intervalle [1;1.5] conduit à :

x

erreur maxi

1,25

0,25

1,375

0,125

1,3125

0,0625

1,34375

0,03125

1,328125

0,015625

1,3203125

0,0078125

1,32421875

0,00390625

1,326171875

0,001953125

1,3251953125

0,0009765625 < 10-3

On peut donc conclure x = 1,325 à 10-3 près. En poussant plus loin les calculs, on obtient x = 1,324717957...

Un autre exercice d'application (niveau Ter/Sup) :                         Autres méthodes :


© Serge Mehl - www.chronomath.com