Adloun

mathématiques appliquées (ECG 1re année) · Chapitre 5 · Exercice

Dichotomie, et le nombre de tours

Fonctions réelles d'une variable réelle · Continuité, théorème des valeurs intermédiaires et bijection · niveau 3 (difficile)

É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.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre