Adloun

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

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 →