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
- 7 autres exercices corrigés dans ce chapitre, et 7 à chercher avec le tuteur
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.