TP Python - Imlémentation de la méthode
Newton Raphson de résolution d’équations
nonlinaires
——————
Département Génie Electrique
UCAD - ESP
Prof. Lamine THIAW
———————————————————————————————
1 Principe de la méthode de Newton-Raphson
La méthode de Newton-Raphson fait partie des méthodes itératives permettant
de résoudre des équations non-linéaires.
Soit à résoudre l’équation définie par :
f (x) = c
Le principe de la méthode est illustré sur la figure 1. Il comporte les étapes
suivantes :
1. Si x(0) est une estimation initiale de la solution, et ∆x(0) une petite
déviation par rapport à la vraie solution, alors on peut écrire :
f (x(0) + ∆x(0) ) = c
2. Le développement en série de Taylor autour du point x(0) donne :
(0) (0)
d2 f
(0) df (0) 1
f (x )+ ∆x + (∆x(0) )2 + · · · = c
dx 2! dx2
3. En négligeant les termes de degrés élevés, on obtient : ∆c(0) = c −
(0)
df
f (x(0) ) ' dx ∆x(0)
4. Connaissant l’estimation de l’erreur ∆x(0) , il est alors possible de dé-
terminer une nouvelle estimation de la solution : x(1) = x(0) + ∆x(0) =
(0)
x(0) + ∆c
df (0)
( dx )
1
5. De façon similaire, on peut obtenir ∆c(1) = c − f (x(1) ) et x(2) =
(1)
x(1) + ∆cdf (1)
( dx )
6. La solution est ainsi améliorée itérativement, jusqu’à ce que la précision
souhaitée soit obtenue.
Figure 1 – Principe de la méthode de Newton-Raphson
On peut ainsi résumer l’algorithme de Newton-Raphson comme suit :
1. Partant d’une estimation xk de la solution, calculer
∆c(k) = c − f (x(k) )
2. Calculer l’erreur :
∆c(k)
∆x(k) = (k)
df
dx
3. L’estimation suivante de la solution est :
x(k+1) = x(k) + ∆x(k)
4. Répéter les itérations jusqu’à ce que la précision (fixée d’avance) soit
obtenue :
|x(k+1) − xk | ≤
Pour un système à n-dimension :
f1 (x1 , x2 , · · · , xn ) = c1
f2 (x1 , x2 , · · · , xn ) = c2
... ... ...
fn (x1 , x2 , · · · , xn ) = cn
2
Le développement en série de Taylor autour du point x(0) en négligeant les
termes d’ordre élevé donne :
∂f1 (0) ∂f1 (0) ∂f1 (0)
(0)
c1 − (f1 )(0) ( ∂x ) ( ∂x ) ... ( ∂x )
1 2 n
∆x1
∂f2 (0) ∂f2 (0) ∂f2 (0) (0)
c2 − (f2 )(0) ( ∂x1 ) ( ∂x2 ) ... ( ∂x ) ∆x2
n
=
.. .. .. ..
..
. .
. . ... .
cn − (fn )(0) ( ∂f n (0)
∂x1 ) ( ∂f n (0)
∂x2 ) ... ∂fn (0)
( ∂x ) ∆x
(0)
n
n
∆C (k) = J (k) ∆X (k)
⇒ ∆X (k) = [J (k) ]−1 ∆C (k)
∆X - vecteur des résidus
∆C - vecteur des incréments
J - matrice jacobienne
On met à jour l’estimation par :
X (k+1) = X (k) + ∆X (k)
2 Implémentation de la méthode de Newton-
Raphson
Ecrire un programme Python permettant de résoudre des équations nonlinaires
en appliquant la méthode Newton Raphson.
Appliquer la méthode aux exemples ci-dessous.
3 Example 1
x4 − 21x3 + 147x2 − 379x + 252 = 0
On utilisera comme solution initiale x(0) = 0.
4 Example 2
x21 − x22 + x23 = 11
x1 x2 + x22 − 3x3 = 3
x1 − x1 x3 + x2 x3 = 6
(0) (0) (0)
On utilisera comme solutions initiales : x1 = 1, x2 = 1 and x3 = 1.