ExerciceTerminale, chapitre 3 — Fonctions numériques · Continuité et théorème des valeurs intermédiaires
Exercice 27 Méthode de dichotomie
On reprend encore la fonction définie sur par , dont on a montré à l'exercice 24 qu'elle s'annule en un unique réel . Le balayage de l'exercice précédent est simple, mais coûteux. On va lui substituer une méthode bien plus rapide, qui repose sur une idée unique : couper l'intervalle en deux, et ne conserver que la moitié qui contient .
Partie A : le principe, à la main
1. Rappeler pourquoi et permettent d'affirmer que .
2. Calculer . En comparant son signe à celui de et de , dire dans laquelle des deux moitiés ou se trouve . Quelle est l'amplitude du nouvel encadrement ?
3. Recommencer avec le milieu de l'intervalle obtenu, et ainsi de suite. Recopier et compléter le tableau suivant, où et désignent les bornes de l'encadrement obtenu après étapes, et le milieu de :
4. Donner l'encadrement de obtenu au bout de étapes, ainsi que son amplitude.
Partie B : pourquoi cela fonctionne, et à quelle vitesse
5. À chaque étape, on remplace par l'une de ses deux moitiés. Justifier que :
6. Expliquer précisément à quel moment on utilise le théorème des valeurs intermédiaires, et à quel moment on utilise la stricte monotonie de . Que resterait-il de la méthode si n'était pas continue ?
7. Déterminer le plus petit entier tel que , puis celui tel que .
8. Le balayage de pas de l'exercice 26 demandait jusqu'à calculs de . Combien la dichotomie en demande-t-elle pour la même précision ? Commenter.
9. Que se passerait-il si l'on appliquait la dichotomie à une fonction continue admettant trois racines dans , avec et ? La méthode échouerait-elle, ou bien fournirait-elle l'une des racines ?
Partie C : mise en œuvre en Python
10. Recopier et compléter le script suivant, qui renvoie un encadrement de d'amplitude strictement inférieure à e :
def dichotomie(a, b, e):
while b - a >= e:
m = (a + b) / 2
if f(m) < 0:
a = ...
else:
b = ...
return a, b11. Justifier que la condition du while finit toujours par devenir fausse.
12. Modifier ce script pour qu'il renvoie également le nombre d'étapes effectuées.
Corrigé
Partie A : le principe, à la main
1. est continue sur (fonction polynôme) et . D'après le théorème des valeurs intermédiaires, l'équation admet au moins une solution dans ; et comme est strictement croissante, cette solution est unique. Donc
2.
Cette valeur est du même signe que , et de signe contraire à : le changement de signe a donc lieu entre et . On en déduit donc que
3. On poursuit, en calculant à chaque étape le milieu puis le signe de son image :
Règle de mise à jour : si , alors (car est croissante) et l'on remplace par ; si , alors et l'on remplace par .
4. Après étapes : Vérification : on avait trouvé à l'exercice 24, ce qui appartient bien à cet intervalle. ✓
Partie B : pourquoi cela fonctionne, et à quelle vitesse
5. À chaque étape, on conserve exactement l'une des deux moitiés de , donc La suite des amplitudes est donc géométrique de raison et de premier terme . On en déduit donc que
6. Le théorème des valeurs intermédiaires sert à garantir qu'un changement de signe entraîne la présence d'une racine : c'est lui qui autorise, à chaque étape, à affirmer que la moitié conservée contient bien . La stricte monotonie sert à garantir que cette racine est unique, donc que les deux moitiés ne peuvent pas en contenir chacune une, et que l'intervalle conservé est bien le bon.
Sans continuité, tout s'effondre : la fonction sur vérifie , et pourtant elle ne s'annule jamais. La dichotomie appliquée à cette fonction convergerait vers , qui n'est pas une racine mais un point de discontinuité.
7. On cherche le plus petit entier tel que , c'est-à-dire . Or et , donc .
De même, équivaut à . Or et , donc .
8. La dichotomie demande pour une précision de , contre jusqu'à pour le balayage.
Commentaire. Le balayage divise l'amplitude par au prix de fois plus de calculs : le coût est proportionnel à la précision. La dichotomie, elle, divise l'amplitude par à chaque calcul supplémentaire : gagner un chiffre décimal ne coûte que ou étapes de plus. C'est la différence entre une croissance linéaire et une croissance exponentielle du gain de précision.
9. La méthode n'échoue pas. À chaque étape, le signe de est soit celui de , soit celui de : dans les deux cas, l'une au moins des deux moitiés présente encore un changement de signe, et c'est celle que l'on conserve. Le procédé converge donc vers une racine.
En revanche, : cela dépend entièrement des valeurs des milieux successifs. C'est bien la stricte monotonie, et elle seule, qui garantissait jusqu'ici que la racine trouvée était la racine.
Partie C : mise en œuvre en Python
10. Comme est croissante, signifie : c'est donc la borne gauche que l'on remonte. Dans le cas contraire, on abaisse la borne droite.
def dichotomie(a, b, e):
while b - a >= e:
m = (a + b) / 2
if f(m) < 0:
a = m
else:
b = m
return a, b11. À chaque tour de boucle, la quantité b - a est divisée par : elle vaut après tours. Comme tend vers , elle finit par devenir strictement inférieure à e, et la condition du while devient fausse.
12. Il suffit d'ajouter un compteur :
def dichotomie(a, b, e):
n = 0
while b - a >= e:
m = (a + b) / 2
if f(m) < 0:
a = m
else:
b = m
n = n + 1
return a, b, n