Adloun

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

Le cours du chapitre · Tous les exercices du chapitre