Adloun

Dichotomie, et le nombre de tours

Exercice · niveau 3 (difficile) · mathématiques appliquées (ECG 1re année), chapitre 5 — Fonctions réelles d'une variable réelle · Continuité, théorème des valeurs intermédiaires et bijection

Énoncé

Écrire une fonction Python dichotomie(f, a, b, eps) qui suppose et renvoie une racine à près. Combien de tours faut-il pour , et ? Vérifier la formule .

Corrigé


def dichotomie(f, a, b, eps):
    assert f(a) * f(b) <= 0, "pas de changement de signe sur [a, b]"
    while b - a > eps:
        m = (a + b) / 2
        if f(a) * f(m) <= 0:
            b = m          # la racine est dans [a, m]
        else:
            a = m          # elle est dans [m, b]
    return (a + b) / 2

Le nombre de tours. Chaque tour divise la longueur par deux, donc après tours elle vaut . La condition d'arrêt est

Ici et : il faut tours.

Ce qui fait marcher la méthode, c'est le théorème des valeurs intermédiaires, invoqué à chaque tour : continue et de signes opposés aux bornes garantit une racine dans l'intervalle courant. Sans continuité, la fonction renverrait un nombre sans aucune racine à côté.

La convergence est lente mais sûre : chaque tour gagne un bit, soit environ trois tours par décimale.

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.