Adloun

Python (école d'ingénieur) · Chapitre 11 · Exercice

Comparaison dichotomie vs fausse position

Résolution d'équations non linéaires

Énoncé

Comparer le nombre d'itérations de la dichotomie et de la fausse position pour sur avec .

Corrigé

def regula_falsi_compteur(f, a, b, epsilon=1e-12):
    u, v = a, b
    iterations = 0
    while True:
        iterations += 1
        x = (u * f(v) - v * f(u)) / (f(v) - f(u))
        if abs(f(x)) < epsilon or abs(v - u) < epsilon:
            return x, iterations
        if f(u) * f(x) <= 0:
            v = x
        else:
            u = x

def dichotomie_compteur(f, a, b, epsilon=1e-12):
    u, v = a, b
    iterations = 0
    while abs(v - u) > 2 * epsilon:
        iterations += 1
        w = (u + v) / 2
        if f(u) * f(w) <= 0:
            v = w
        else:
            u = w
    return (u + v) / 2, iterations

f = lambda x: x**2 - 2
racine_dicho, iter_dicho = dichotomie_compteur(f, 1, 2)
racine_rf, iter_rf = regula_falsi_compteur(f, 1, 2)

print(f"Dichotomie   : {iter_dicho} itérations, racine = {racine_dicho:.12f}")
print(f"Regula Falsi : {iter_rf} itérations, racine = {racine_rf:.12f}")
print(f"Ratio        : {iter_dicho / iter_rf:.2f}")

Résultat dans la console :

Dichotomie   : 40 itérations, racine = 1.414213562373
Regula Falsi : 4 itérations, racine = 1.414213562373
Ratio        : 10.00

La fausse position converge nettement plus rapidement dans ce cas, car elle utilise une approximation linéaire par la sécante plutôt que de diviser aveuglément l'intervalle en deux.

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →