Dichotomie : le nombre d'itérations se calcule d'avance
Exercice · niveau 2 · mathématiques approfondies (ECG 1re année), chapitre 11 — Informatique et algorithmique · Suites, séries et calculs approchés
Énoncé
L'équation possède une unique solution dans . Déterminer avant de programmer le nombre d'itérations de dichotomie assurant une précision de , puis écrire le programme.
Corrigé
L'unicité d'abord. est continue et : est strictement croissante. Comme , elle s'annule une fois et une seule sur .
Le nombre d'itérations se déduit. Chaque tour divise par deux la longueur de l'intervalle, qui vaut donc après tours, la racine y étant enfermée. Il suffit que
Vingt itérations suffisent, et dix-neuf ne suffisent pas au vu de cette majoration, puisque .
def g(x):
return x**3 + x - 1
def dichotomie(a, b, n):
for k in range(n):
m = (a + b) / 2
# on garde la moitie ou g change de signe
if g(a) * g(m) <= 0:
b = m
else:
a = m
return (a + b) / 2
print(dichotomie(0.0, 1.0, 20)) # 0.6823277473449707
Contrôle. La valeur affichée vérifie : la racine est bien là. On gagne même un facteur sur la précision en rendant le milieu du dernier intervalle plutôt qu'une de ses bornes.
Le point à retenir. Le rang d'arrêt résulte de l'étude mathématique, il ne se choisit pas au juger. Ici l'étude donne un nombre d'itérations connu à l'avance : c'est ce qui distingue une boucle for de vingt tours, dont on sait ce qu'elle garantit, d'une boucle while dont on espère seulement qu'elle s'arrête.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.