mathématiques approfondies (ECG 1re année) · Chapitre 11 · Exercice
Dichotomie : le nombre d'itérations se calcule d'avance
Informatique et algorithmique · Suites, séries et calculs approchés · niveau 2
É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.
Exercices semblables
- Approcher corrigé
- L'escalier de la suite de Héron corrigé
- L'ordre de convergence des rectangles corrigé
- Trois lois simulées à la main corrigé
- Simuler une loi de Poisson corrigé