Python (école d'ingénieur) · Chapitre 11 · Exercice
Implémentation de la méthode de Newton
Résolution d'équations non linéaires
Énoncé
Écrire une fonction newton(f, df, x0, epsilon, maxiter) et la tester sur la fonction (dont la racine est ) avec une initialisation .
Corrigé
import math
def newton(f, df, x0, epsilon=1e-12, maxiter=100):
"""
Méthode de Newton-Raphson.
"""
x = x0
for n in range(maxiter):
fx = f(x)
if abs(fx) < epsilon:
print(f"Convergence après {n+1} itérations")
return x
dfx = df(x)
if abs(dfx) < 1e-15:
raise RuntimeError("Dérivée nulle")
x_new = x - fx / dfx
if abs(x_new - x) < epsilon:
print(f"Convergence après {n+1} itérations")
return x_new
x = x_new
raise RuntimeError(f"Non convergence après {maxiter} itérations")
# Test
f = lambda x: math.cos(x) - x
df = lambda x: -math.sin(x) - 1
racine = newton(f, df, 0.5)
print(f"Racine : {racine:.10f}")
print(f"Vérification : cos({racine:.10f}) - {racine:.10f} = {f(racine):.2e}")
Résultat dans la console :
Convergence après 4 itérations
Racine : 0.7390851332
Vérification : cos(0.7390851332) - 0.7390851332 = 0.00e+00
Newton converge en seulement 4 itérations, illustrant sa convergence quadratique locale rapide.
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.