Lycée Benjamin Franklin D. Blottière, B. Mollier PTSI − 2014-2015 Informatique TP n◦ 5 Résolution approchée d’une équation numérique par dichotomie Contexte • a et b sont des nombres réels tels que a < b. • f : [a, b] → R est une fonction continue sur l’intervalle [a, b] (ce qui s’interprète en disant que l’on peut tracer la courbe de f sans lever le crayon). • Les valeurs de f en a et en b sont de signes opposés, i.e. f (a) f (b) ≤ 0. Problématique Dans le contexte précédent, le théorème des valeurs intermédiaires assure que l’équation (⋆) f (x) = 0 d’inconnue x ∈ [a, b] possède (au moins) une solution. La question que l’on pose est la suivante. Comment trouver une valeur approchée d’une solution de (⋆) avec une précision arbitrairement « petite » ε > 0 donnée ? Résolution du problème posé par dichotomie 1 Pour résoudre le problème posé, on va construire une suite d’intervalles ([an , b n ])n∈N telle que 1. [an , b n ] contient une solution de (⋆), pour tout n ∈ N ; 2. la longueur b n − an de l’intervalle [an , b n ] est égale à b−a 2n , pour tout n ∈ N. Une telle suite nous permet de résoudre le problème posé, comme on l’explique ci-dessous. Soit un entier naturel n fixé. Soit xn une solution de l’équation (⋆) dans l’intervalle [an , b n ] (un tel xn existe d’après 1., mais nous n’en connaissons pas d’explicite a priori et c’est là notre problème). Alors |xn − an | = xn − an ≤ b n − an = b−a 2n la dernière égalité découlant de 2.. Donc an livre une valeur approchée d’une solution de l’équation (⋆) avec une erreur inférieure ou égale à b−a 2n . Remarque : Nous aurions en fait pu prendre un nombre arbitrairement choisi dans [an , b n ], plutôt que an , pour avoir une valeur approchée d’une solution de l’équation (⋆) avec une erreur inférieure ou égale à b−a 2n . b−a Quitte à prendre n suffisamment grand, on a b−a 2n ≤ ε, puisque 2n tend vers 0 quand n tend vers +∞. Pour un tel n, la valeur de an fournit donc une valeur approchée d’une solution de l’équation (⋆), telle que l’erreur commise soit inférieure ou égale à ε. Après avoir expliqué qu’une suite d’intervalles ([an , b n ])n∈N vérifiant les propriétés 1. et 2. répond à notre problématique, il reste à en construire une. On peut procéder « de proche en proche », comme suit, pour cela. 1. Vient du grec : « couper en deux ». 1 • Étape 0 On pose a0 := a et b 0 := b. D’après ces définitions et les hypothèses (cf. contexte), on a 1. f (a0 ) f (b 0 ) ≤ 0 et donc l’équation (⋆) possède une solution dans [a0 , b 0 ] (cf. théorème des valeurs intermédiaires) ; 2. b 0 − a0 = b − a. • Étape 1 On introduit le milieu c 0 du segment [a0 , b 0 ] et on pose ¯ ¯ a1 := a0 et b 1 := c 0 si f (a0 ) f (c 0 ) ≤ 0 ¯ ¯ a1 := c 0 et b 1 := b 0 sinon. Alors quelque que soit le cas 1. f (a1 ) f (b 1 ) ≤ 0 et donc l’équation (⋆) possède une solution dans [a1 , b 1 ] (cf. théorème des valeurs intermédiaires) ; 2. b 1 − a1 = b0 −a 0 2 = b−a 2 . Pourquoi ? • Étape 2 On introduit le milieu c 1 du segment [a1 , b 1 ] et on pose ¯ ¯ a2 := a1 et b 2 := c 1 si f (a1 ) f (c 1 ) ≤ 0 ¯ ¯ a2 := c 1 et b 2 := b 1 sinon. Alors quelque que soit le cas 1. f (a2 ) f (b 2 ) ≤ 0 et donc l’équation (⋆) possède une solution dans [a2 , b 2 ] (cf. théorème des valeurs intermédiaires) ; 2. b 2 − a2 = b1 −a 1 2 = b−a 4 . Pourquoi ? .. . • Étape n On suppose construit un intervalle [an−1 , b n−1 ] tel que 1. f (an−1 ) f (b n−1 ) ≤ 0 ; 2. b n−1 − an−1 = b−a . 2n−1 On introduit le milieu c n−1 du segment [an−1 , b n−1 ] et on pose ¯ ¯ an := an−1 et b n := c n−1 si f (an−1 ) f (c n−1 ) ≤ 0 ¯ ¯ an := c n−1 et b n := b n−1 sinon. Alors quelque que soit le cas 1. f (an ) f (b n ) ≤ 0 et donc l’équation (⋆) possède une solution dans [an , b n ] (cf. théorème des valeurs intermédiaires) ; 2. b n − an = bn−1 −a n−1 2 = b−a 2n . Pourquoi ? .. . 2 N.B. : Répondre à chacun des « Pourquoi ? » n’est pas optionnel ! C’est le cœur de l’algorithme qui est caché dans ces questions. Une fois apportée une réponse au premier, les réponses aux autres sont analogues. La figure ci-dessous donne une idée de la mise en œuvre de la construction décrite ci-dessus. 4 2 2 0 4 6 a 0 := a 8 b 0 := b a1 b1 a2 b2 a3 b3 a4 b4 a5 a6 b5 b6 Exercice 1 Écrire un programme qui affiche une valeur approchée de la 2 solution de l’équation x = cos(x) d’inconnue x ∈ [0, π], avec une erreur inférieure ou égale à 10−5 , en implémentant l’algorithme de dichotomie exposé précédemment. Exercice 2 L’équation (E ) : x 2 − 6x + 5 = 0 possède deux solutions dans R : 2 et 3. 2. Le théorème des valeurs intermédiaires, judicieusement appliqué, nous assure qu’il existe au moins une solution. Ici, on peut démontrer l’unicité de la solution. Comment ? 3 1. Que se passe-t-il si l’on adapte le programme de l’exercice 1 à cette équation, en partant de l’intervalle [1, 3] ? On regardera en particulier le nombre d’itérations. 2. Améliorer le programme précédent, pour corriger le problème décelé à la question 1. 4