Adloun

La dichotomie

Exercice supplémentaire · niveau 3 (difficile) · sciences numériques et technologie (seconde), chapitre 4 — Les boucles · La boucle non bornée : while

Énoncé

On cherche en encadrant : on part de et , on calcule le milieu , et l'on remplace ou par selon que est inférieur ou supérieur à . Écrire le programme qui s'arrête quand , et compter les tours.

Corrigé

a = 1
b = 2
tours = 0
while b - a > 1e-6:
    m = (a + b) / 2
    if m * m < 2:
        a = m
    else:
        b = m
    tours = tours + 1
print(a, tours)   # 1.4142131... en 20 tours

Vingt tours suffisent pour six décimales, car la largeur de l'intervalle est divisée par deux à chaque étape : après tours elle vaut , et .

C'est spectaculairement plus efficace qu'un balayage : avancer par pas de demanderait un million de tours pour le même résultat. Chaque tour élimine la moitié des candidats restants — c'est le principe de la dichotomie, que l'on retrouve dans la recherche d'un mot dans un dictionnaire.

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.