|
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 :
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.
Si f(x1) a
même signe que f(a), a devient superflu et on le remplace par
x1; auquel cas x2 = (x1+b)/2
et
[x1,x2]
est un meilleur encadrement de
s que [a,b] (c'est le cas de la figure).
Sinon b devient superflu, on le remplace par x1 et x2 devient alors (a + x1)/2 . En itérant le procédé, on obtient alors une suite (xn) vérifiant : | xn - s | < (b - a)/2n. Ce qui prouve que la suite (xn) converge vers s.
! Il s'agira de bien choisir son encadrement de départ, à savoir :
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.
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> function fonc() |
∗∗∗
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...