Introduction au calcul scientifique et méthodes de résolution d'équations
Introduction au calcul scientifique et méthodes de résolution d'équations
Notes de cours
Petite intro ici. Ces notes de cours s’inspirent très largement du livre de Quarte-
roni, Salieri et Gervasio [1].
I Résolution d’équations
Objectif. Trouver les valeurs de x pour lesquelles une certaine fonction f : R → R
s’annule (f (x) = 0). Autrement dit, il s’agit de trouver les racines de f .
• La résolution exacte n’est pas toujours possible.
Par exemple, si f est un polynôme quelconque de degré supérieur à 4,
La situation se complique encore si f n’est pas un polynôme !
• Dans ce type de cas : résolution numérique approchée,
• Quelle méthode utiliser ? Converge-t-elle ? Avec quelle rapidité ?
• Qualité de l’approximation obtenue ?
1−xn+1
Pn i
Rappel : k=0 x = 1−x .
1
Dans ce cas, T est une racine de la fonction f suivante :
1+T
f (T ) = M − v [(1 + T )n − 1].
T
Équation d’état d’un gaz réel.
• On considère n moles de gaz à une température T et une pression p,
• Quel est le volume V occupé par ce gaz ?
• Équation de van der Waals (Johannes Diderik van der Waals, 1837 – 1923)
pour un gaz réel (6= gaz parfait) :
n 2
p+a (V − nb) = nRT ,
V
Ici, a et b sont des coefficients qui dépendent du gaz considéré, et R est la constante
des gaz parfaits (R ≈ 8.3144621 J·mol−1 ·K−1 ).
Nous obtenons une équation polynomiale de degré 3 en V . Une méthode analy-
tique est possible, mais fastidieuse (méthode de Cardan).
Mécanique Statique.
• On considère le système de quatre barres a1 , a2 , a3 , et a4 suivant :
y
a3
a4
a2
¯
®
a1 x
2
où ai est la longueur de la barre ai . On cherche donc les racines de la fonction
a1 a1 a2 + a22 − a23 + a24
f (x) = cos(β) − cos(x) − cos(β − x) + 1 .
a2 a4 2a2 a4
• Ce problème n’admet des solutions que pour certaines valeurs de β,
• Il y a plusieurs solutions pour certaines valeurs de β,
• Il n’y a pas d’expression explicite de ces solutions dans le cas général.
R(x) = r ; r > 0.
x? = φ(x? ),
3
I.2 Dichotomie
• Considérons une fonction f continue sur un intervalle [a, b],
• Si f (a)f (b) < 0 (c’est-à-dire si f (a) et f (b) sont de signes opposés), alors f
a au moins une racine dans ]a, b[ (Théorème des valeurs intermédiaires).
• Supposons que cette racine est unique. La méthode de dichotomie consiste à
générer une suite d’intervalles ]ak , bk [ de plus en plus petits, qui contiennent
cette racine. Le centre xk de ces intervalles converge vers la racine de f .
Poser a0 = a, b0 = b, k = 0.
Tant que k < n, faire
Poser xk = (ak + bk )/2.
Si f (xk ) = 0, alors
Retourner xk .
Sinon
Si f (ak )f (xk ) < 0,
Poser ak+1 = ak , bk+1 = xk .
Si f (xk )f (bk ) < 0,
Poser ak+1 = xk , bk+1 = bk .
Incrémenter k de 1.
4
itérations pour obtenir ε < bk − ak où :
b−a
k > log2 − 1.
ε
Ceci sera montré en séance de TD.
Poser y = x0 .
Poser x = y − f (y)/f 0 (y).
5
Tant que |y − x| > ε faire
Poser y = x.
Poser x = x − f (x)/f 0 (x).
Fin tant que
Renvoyer x.
0 f 00 (ξ)
f (α) = f (xk ) + f (xk )(α − xk ) + (α − xk )2 .
2
Rappelons que, dans cette formule, ξ est dans l’intervalle ouvert de bornes
α et xk . Puisque f (α) = 0, et selon (2), on obtient :
xk+1 − α f 00 (ξ)
= 0 .
(xk − α)2 2f (xk )
Il suffit alors de passer à la limite quand k → ∞.
• Si la suite xk converge vers une racine α de f de multiplicité m (c’est-à-
dire si f 0 (α) = 0, ..., f (m−1) (α) = 0 et f (m) (α) 6= 0), alors la convergence
de la méthode n’est plus quadratique, mais linéaire. On peut retrouver une
convergence quadratique en modifiant (2) de la manière suivante :
f (xk )
xk+1 = xk − m .
f 0 (xk )
• Ceci necessite de connaître m a priori...
• Comme pour la dichotomie, nous pouvons faire un test d’arrêt qui prend en
6
compte l’erreur maximale voulue. En effet, la différence entre deux itérations
successives fournit un estimateur correct de l’erreur. Ainsi, on peut effectuer
les itérations (2) jusqu’à ce que
|xk+1 − xk | < ε.
• On peut aussi faire un test d’arrêt sur le résidu (c’est-à-dire sur la valeur de
f (xk )). On arrête alors les itérations lorsque |f (xk )| < ε, mais ce test n’est
satisfaisant que lorsque |f 0 (x)| ≈ 1 au voisinage de la racine. Si |f 0 (x)| 1
alors on sous-estime l’erreur et si |f 0 (x)| 1, alors on sur-estime l’erreur.
xk+1 = φ(xk ),
converge, alors elle converge vers α tel que α = φ(α). On appelle cette mé-
thode la méthode du point fixe. La fonction φ est appelée fonction d’itération.
• On dit que α est un point fixe de φ. C’est aussi une racine de f (x) = x−φ(x).
• Toutes le fonctions n’ont pas de point fixe. Par exemple φ(x) = exp(x).
• Le méthode ne converge pas forcément même si φ admet un point fixe.
7
pour tout x0 ∈ [a, b]. On dit que φ est L-Lipschitzienne sur [a, b] lorsque :
Preuve.
i. Théorème des valeurs intermédiaires avec g(x) = φ(x) − x.
ii. Contradiction avec L < 1 si il y a deux points fixes. En outre, puisque φ est
L-Lipschitzienne, on prouve :
|xk − α|
≤ Lk .
|x0 − α|
Théorème d’Ostrowski.
• On considère un point fixe α d’une fonction φ dérivable au voisinage de α.
On suppose que φ0 est continue.
• Si |φ0 (α)| < 1, alors la méthode du point fixe converge vers α dès que x0 est
sufisamment proche de α. De plus :
xk+1 − α
lim = φ0 (α).
k→∞ xk − α
8
• Rappelons que la méthode de Newton est une méthode de point fixe avec :
f (x)
φ(x) = x − .
f 0 (x)
Et que la méthode converge de manière quadratique vers α lorsque f 0 (α) 6= 0.
En fait, plus généralement :
Proposition.
• On considère un point fixe α d’une fonction φ deux fois dérivable au voisinage
de α. On suppose que φ00 est continue et que la méthode du point fixe converge
vers α pour un certain x0 .
• Si φ0 (α) = 0, alors :
xk+1 − α 1 00
lim = φ (α).
k→∞ (xk − α)2 2
9
• a1 ×x (une multiplication)
• a2 ×x×x (deux multiplications)
• a3 ×x×x×x (trois multiplications)
• a4 ×x×x×x×x (quatre multiplications)
À la fin de ce calcul, on remarque que b0 est égal à p(x). Il ne nous a fallu que 4
multiplications et 4 additions. Cette remarque se généralise pour des polynômes
quelconques. Considérons le polynôme
n
X
pn (x) = ak xk . (3)
k=0
Pour calculer la valeur de pn (x) en utilisant l’écriture (3), il est nécéssaire de faire
n sommes et n(n + 1)/2 produits (car pour calculer le monôme de degré i, il faut
i multiplications). Cependant, pn (x) peut être réécrit
10
multiplications. Pour cela, il s’agit de poser bn = an et de calculer, récursivement
bk = ak + bk+1 z, (5)
Poser bn = an .
Pour k = n − 1, n − 2, ..., 0, faire
Poser bk = ak + bk+1 z.
Fin pour
Une remarque importante est que tous les bk calculés par la méthode dépendent
de z. Rappelons en particulier que b0 est égal à pn (z).
où n
X
qn−1 (x; z) = bk xk−1 .
k=1
ak = bk − bk+1 z.
Par conséquent,
ak xk = bk xk − bk+1 zxk .
11
Il suffit maintenant de réindexer la somme restante pour s’aperçevoir que
n−1
X
bk+1 xk = qn−1 (x; z).
k=0
• D’après cette proposition, les racines de pn sont z et les racines de qn−1 (en
tant que polynôme de la variable x).
• Ainsi, nous pouvons trouver toutes les racines de pn par la méthode suivante,
appelée méthode de déflation :
ak = bk − bk+1 x.
12
Par conséquent,
n−1
X n−1
X
k−1
kak x = bk xk−1 − (n − 1)bn xn−1 .
k=1 k=1
Si nous ajoutons nbn xn−1 aux deux membres de cette égalité, nous obtenons, dans
le membre de droite p0n (x) et dans le membre de gauche, qn−1 (x; x).
p3 (x) = x3 − 7x − 6
13
nombre α la méthode semble t-elle converger ?
b) Calculez q2 (x; α).
c) Déterminez les racines de q2 (x; 2).
d) Déterminez toutes les racines de p3 .
II Systèmes linéaires
Considérons le système hydraulique suivant :
x1
5
x3
x2
• Le flux qui passe dans chaque conduite est indiqué à côté de la conduite,
• Les flux positifs vont dans le sens de la flêche,
• Les flux négatifs vont dans le sens inverse à la flêche.
• Que valent les flux x1 , x2 et x3 ? On écrit la conservation du flux aux (trois)
noeuds afin de trouver le système :
x1 + x2
= 5,
x1 − x3 = 3,
x2 + x3 = 2.
14
II.1 Cas général
Considérons un système de m équations linéaires avec n variables (ou inconnues)
x1 , ..., xn :
a1,1 x1 + · · · + a1,n xn = b1 ,
.. .. .. ..
. . . .
am,1 x1 + · · · + am,n xn = bm ,
Objectif. Trouver tous les n-uplets (x1 , ..., xn ) qui satisfont ce système.
• Nous pouvons multiplier une équation par une constante non nulle,
• Nous pouvons ajouter un certain nombre de fois une équation à une autre,
• Nous pouvons échanger deux équations.
Objectif. Se ramener à un système avec (autant que possible) une variable par
ligne et par colonne.
15
en retranchant 3 fois la première ligne à la troisième :
x + 4y − z = 6,
− 4y + 5z = 7,
− 7y + z = −11.
Divisons d’abord la deuxième ligne par 31, puis Ajoutons 3 fois cette deuxième
ligne à la première et 7 fois cette deuxième ligne à la troisième :
x
= 1,
y = 2,
z = 3.
L’unique solution du système (6) se lit ici directement : c’est le triplet (1, 2, 3).
Remarque. Ces calculs peuvent être fait sur la matrice augmentée du système,
c’est-à-dire sur le tableau de nombre obtenu en enlevant les variables, et en rem-
plaçant la colonne des signes = par un trait vertical. C’est de cette manière là que
nous procéderons. Par exemple, pour le système ci-dessus :
1 4 -1 6
2 4 3 19
3 5 -2 7
16
un avant de passer à la colonnee suivante.
• Lorsqu’on traite une colonne, les éliminations se font toujours avec la même
ligne. Cette ligne s’appelle la ligne du pivot. On change de ligne du pivot à
chaque fois qu’on change de colonne du pivot.
1 4 -1 6
2 4 3 19
3 5 -2 7
On retranche 2 fois la première ligne à la deuxième, et 3 fois la première ligne à
la troisième. Pour le traitement de la première colonne, la ligne du pivot est la
première ligne :
1 4 -1 6
0 -4 5 7
0 -7 1 -11
Pour le traitement de la deuxième colonne, la ligne du pivot est la deuxième ligne.
On divise cette ligne par −4. Ceci fait apparaitre un 1 directeur en deuxième
colonne-deuxième ligne. Les 1 directeurs se trouvent au croisement de la colonne
et de la ligne du pivot (on remarque donc que le 1 en première ligne, première
colonne est aussi un 1 directeur) :
1 4 -1 6
0 1 -5/4 -7/4
0 -7 1 -11
On retranche 4 fois la deuxième ligne à la première, et on ajoute 7 fois la deuxième
ligne à la troisième :
1 0 4 13
0 1 -5/4 -7/4
0 0 -31/4 -93/4
Divisons maintenant la troisième ligne par −31/4 pour faire apparaitre un 1
directeur (la dernière ligne du pivot sera la troisième) :
17
1 0 4 13
0 1 -5/4 -7/4
0 0 1 3
Enfin, retranchons 4 fois la troisième ligne à la première et ajoutons là 5/4 de fois
à la deuxième :
1 0 0 1
0 1 0 2
0 0 1 3
Méthode (suite). Les trois règles énoncées ci-dessous ne suffisent pas pour dé-
crire la méthode du pivot de Gauss de manière complète. En effet, dans la méthode
du pivot de Gauss,
Pour faire en sorte que ces règles soient vérifiées, nous allons devoir éventuellement
échanger des lignes ! Considérons un nouvel exemple :
x2 + 2x3 + 3x4 = 9,
x + 2x
1 2 + 3x3 + 4x4 = 15,
x1 + x2 + x3 + x4 = 6,
x + x
1 2 + 2x3 + x4 = 8.
La matrice augmentée de ce système s’écrit :
0 1 2 3 9
1 2 3 4 15
1 1 1 1 6
1 1 2 1 8
Commençons par échanger la première et la deuxième ligne. En général, si il y
a un 0 là où le pivot doit être placé, on l’échange avec la première des lignes
suivantes qui n’a pas de 0 dans la colonne à traiter. Si toutes les lignes suivantes
ont un 0 dans cette colonne, on considère que cette colonne est traitée et on passe
18
à la suivante. Il n’y aura alors pas de 1 directeur dans cette colonne !
1 2 3 4 15
0 1 2 3 9
1 1 1 1 6
1 1 2 1 8
Retranchons la première ligne à la troisième et à la quatrième :
1 2 3 4 15
0 1 2 3 9
0 -1 -2 -3 -9
0 -1 -1 -3 -7
Retranchons deux fois la deuxième ligne à la première et ajoutons-là à la troisième
et à la quatrième :
1 0 -1 -2 -3
0 1 2 3 9
0 0 0 0 0
0 0 1 0 2
Il faut maintenant échanger la troisième et la quatrième ligne pour placer la ligne
du pivot en troisième ligne :
1 0 -1 -2 -3
0 1 2 3 9
0 0 1 0 2
0 0 0 0 0
Ajoutons enfin la troisième ligne à la première ligne et retranchons-là deux fois à
la deuxième ligne :
1 0 0 -2 -1
0 1 0 3 5
0 0 1 0 2
0 0 0 0 0
La quatrième colonne est traitée puisque nous ne pouvons plus fabriquer de ligne
19
du pivot. Ici le système admet plusieurs solutions (c’est le cas quand le nombre
de 1 directeurs est inférieur au nombre d’inconnues). Si on réécrit cette matrice
augmentée comme un système d’équations, on obtient :
x1 = −1 + 2x4 ,
x2 = 5 − 3x4 ,
x3 = 2.
est une autre solution. Pour obtenir toutes les solutions du système, il faut faire
varier les paramètres dans tout R. On écrit l’ensemble des solutions de la manière
suivante :
x1 −1 2
x2 5 −3
; x4 ∈ R
S= = + x4
x3 2
0
x4 0 1
20
1 2 -2 2 1 1
1 1 1 1 1 3
2 1 1 0 1 3
3 2 2 1 2 6
Retranchons 1 fois la première ligne de la deuxième, 2 fois de la troisième et 3
fois de la quatrième :
1 2 -2 2 1 1
0 -1 3 -1 0 2
0 -3 5 -4 -1 1
0 -4 8 -5 -1 3
Multiplions la deuxième ligne par −1.
1 2 -2 2 1 1
0 1 -3 1 0 -2
0 -3 5 -4 -1 1
0 -4 8 -5 -1 3
Retranchons 2 fois la deuxième ligne de la première et ajoutons-là 3 fois à la
troisième et 4 fois à la quatrième :
1 0 4 0 1 5
0 1 -3 1 0 -2
0 0 -4 -1 -1 -5
0 0 -4 -1 -1 -5
Divisons la troisième ligne par −4 :
1 0 4 0 1 5
0 1 -3 1 0 -2
0 0 1 1/4 1/4 5/4
0 0 -4 -1 -1 -5
Retranchons 4 fois la troisième ligne de la première et de la quatrième et ajoutons-
là 3 fois à la deuxième :
21
1 0 0 -1 0 0
0 1 0 7/4 3/4 7/4
0 0 1 1/4 1/4 5/4
0 0 0 0 0 0
La quatrième et la cinquième colonne correspondent à un paramètre chacune.
C’est-à-dire qu’il y a deux paramètres pour ce systèmes (x4 et x5 ). L’ensemble
des solutions s’écrit :
x1 0 1 0
x 7/4 −7/4 −3/4
2
S = x3 = 5/4 + x4 −1/4 + x5 −1/4 ; x4 , x5 ∈ R
x 0 1 0
4
x5 0 0 1
22
1 1 0
0 1 1
0 -1 -1
0 2 2
Retranchons la deuxième ligne de la première et 2 fois de la quatrième, et ajoutons-
là à la troisième :
1 0 -1
0 1 1
0 0 0
0 0 0
L’ensemble des solutions s’écrit :
( ! !)
x1 −1
S= =
x2 1
2 1 3 6
Ajoutons la première ligne à la deuxième et retranchons 2 fois cette ligne à la
troisième :
1 1 2 5
0 2 2 6
0 -1 -1 -5
Divisons la deuxième ligne par 2 :
23
1 1 2 5
0 1 1 3
0 -1 -1 -5
Retranchons la deuxième ligne de la première et ajoutons-là à la troisième :
1 0 1 2
0 1 1 3
0 0 0 -2
Nous ne pouvons plus continuer. La méthode s’arrête. La troisième ligne de cette
matrice augmentée se lit 0 = −2. Dans ce cas (c’est-à-dire, en général, lorsque
le membre de gauche d’une équation est nul et que son membre de droite est
non-nul), le système n’admet pas de solutions !
Le système admet :
• Exactement une solution lorsque toutes les colonnes de la matrice échelonnée
réduite contiennent un 1-directeur et que les lignes qui ne contiennent pas
de 1-directeur ne contiennent que des zéros,
• Aucune solution lorsque le membre de gauche d’une ligne de la matrice éche-
lonnée réduite ne contient que des zéros et que son membre de droite est
non-nul,
• Plusieurs (une infinité) de solutions dans les autres cas. Les solutions sont
alors écrites en fonction de paramètres qui peuvent prendre n’importe quelle
valeur réelle. Ces paramètres sont les variables des colonnes dans lesquelles
la matrice échelonnée réduite n’a pas de 1-directeur.
24
Voici le pseudo-code de l’algorithme que nous avons esquissé. Dans ce pseudo-
code la matrice augmentée est notée A. Rappelons que cette matrice possède n
lignes et m + 1 colonne, puisqu’on doit compter une colonne pour chacune des m
inconnues et une colonne supplémentaire pour le membre de droite. Le coefficient
de ligne i et de colonne j de A est noté A(i, j). La variable l contient la ligne du
pivot (elle est initialisée à 1) et la variable c contient la colonne du pivot.
Poser l ← 1
Pour c qui va de 1 à m faire
Poser i ← l
Tant que i ≤ n et A(i, c) = 0 faire
Poser i ← i + 1
Fin tant que
Si i ≤ n alors
Échanger les lignes i et l de la matrice A
Diviser la ligne l de A par A(l, c)
Pour i qui va de 1 à n faire
Si i 6= l alors
Soustraire A(i, c) fois la ligne l à la ligne i dans la matrice A
Fin si
Fin pour
Poser l ← l + 1
Fin si
Fin pour
25
les fonctions de la forme y = Cet où C est une constrante réelle.
F (t) = −a v
26
l’autre de proies, on obtient un système de deux équations à deux inconnues :
dy1
= C1 y1 (1 − b1 y1 − d2 y2 ) ,
dt
dy2 = C2 y2 (1 − b2 y2 − d1 y1 ) .
dt
Ici y1 est la population de proies et y2 est la population de prédateurs, C1 et
C2 sont les taux de croissances de ces populations (indépendants de l’autre
population).
On dit que y0 est la donnée initiale. Notons que le problème de Cauchy est un pro-
blème un peu plus fort que simplement l’équation différentielle, puisqu’il précise
la valeur de y(t0 ).
pour tout t, y1 , y2 .
Dans ce cas le problème de Cauchy admet une unique solution y et cette solution
est de classe C 2 .
27
implicite
1
ln(t2 + y 2 ) + arctan(y/t) = C,
2
où C est une constante. Cependant, il n’existe pas de formule simple du type
y(t) = ... Il existe même des équations différentielles pour lesquelles on ne
2
peut pas trouver de relation implicite. Par exemple y 0 = e−t .
• Pour ces raisons, nous chercherons des solutions approchées.
ti = t0 + i h.
Nous allons trouver une approximation ui de y(ti ). La suite des valeurs u0 , ...,
uN est appelée la solution humérique. Pour cela, une première méthode consiste
à construire u1 , ..., un itérativement avec u0 = y0 et :
Ceci revient à supposer que y est confondue avec sa tangente en ti dans l’intervalle
[ti , ti+1 ]. Cette méthode s’appelle la méthode d’Euler explicite. Elle consiste à
calculer ui+1 à partir de ui par l’équation (7).
28
chy avec t0 = 0 et y0 = 1. La solution de ce problème est :
y(t) = (t − 1)2 .
Ceci revient à supposer que y est confondue avec sa tangente en ti+1 dans l’in-
tervalle [ti , ti+1 ].Cette méthode s’appelle la méthode d’Euler implicite. En effet,
l’équation (8) exprime ui+1 en fonction de ui mais aussi de lui-même ! En d’autres
termes, il faut trouver ui+1 comme une solution de cette équation.
y 0 = −y 2 ,
y(t) = 1/t.
29
En effet, pour cette fonction,
(
y(t0 ) = y(1) = y0 = 1,
y 0 (t) = −1/t2 = −(1/t)2 = −(y(t))2 .
Une troisième méthode, dite méthode d’Euler modifiée consiste à supposer que y 0
est constante dans l’intervalle ]ti , ti+1 ], que cette constante est y 0 (ti + h/2) :
Or, d’après notre équation différentielle, y 0 (ti + h/2) = f (ti + h/2, y(ti + h/2)),
ce qui donne :
ui+1 = ui + h f (ti + h/2, y(ti + h/2)).
30
Finalement, on estime y(ti + h/2) en confondant y avec sa tangente en ti dans
l’intervalle ]ti , ti + h/2] :
h
y(ti + h/2) = ui + f (ti , ui ).
2
Cette méthode consiste donc à construire u1 , ..., un itérativement avec u0 = y0
et :
h
ui+1 = ui + h f (ti + h/2, ui + f (ti , ui )). (9)
2
Cette méthode est plus précise que la méthode d’Euler explicite.
y 0 = −y 2 ,
31
• i = 0 ; k = u0 + f (t0 , u0 )/2 = 2.
√
u1 = u0 + f (t0 + h/2, k) = 1 + 2 2 ≈ 3.8284.
√ p √
• i = 1 ; k = u1 + f (t1 , u1 )/2 = 1 + 2 2 + 1 + 2 2 ≈ 5.7851.
√ √ √
q p
u2 = u1 + f (t1 + h/2, k) = 1 + 2 2 + 2 1 + 2 2 + 1 + 2 2 ≈ 8.6389.
32
(1.0 ; 0.6683)
0.6
(0.8 ; 0.4057)
0.4
(0.6 ; 0.2161)
0.2
(0.4 ; 0.0907) (0.2 ; 0.0213)
0
0 0.2 0.4 0.6 0.8 1
• Initialisation : u0 = y0 = 0 et i = 0
• i = 0 : u1 = u0 + 0.2(sin(t0 ) + u0 ) = 0.2 sin(0).
Donc u1 = 0.
• i = 1 : u2 = u1 + 0.2(sin(t1 ) + u1 ) = 0.2 sin(0.2)
Donc u2 ≈ 0.0397.
• i = 2 : u3 = u2 + 0.2(sin(t2 ) + u2 ) ≈ 0.0397 + 0.2(sin(0.4) + 0.0397)
Donc u3 ≈ 0.1256.
• i = 3 : u4 = u3 + 0.2(sin(t3 ) + u3 ) ≈ 0.1256 + 0.2(sin(0.6) + 0.1256)
Donc u4 ≈ 0.2636.
• i = 4 : u5 = u4 + 0.2(sin(t4 ) + u4 ) ≈ 0.2636 + 0.2(sin(0.8) + 0.2636)
Donc u5 ≈ 0.4598.
• Initialisation : u0 = y0 = 0 et i = 0
• i = 0 : k = u0 + 0.1(sin(t0 ) + u0 ) = 0.1 sin(0) = 0.
u1 = u0 + 0.2(sin(t0 + 0.1) + k) = 0.2 sin(0.1) ≈ 0.0200.
33
• i = 1 : k = u1 + 0.1(sin(t1 ) + u1 ) ≈ 0.0200 + 0.1(sin(0.2) + 0.0200).
Donc k ≈ 0.0418
u2 = u1 + 0.2(sin(t1 + 0.1) + k) ≈ 0.0200 + 0.2(sin(0.3) + 0.0418).
Donc u2 ≈ 0.0874.
• i = 2 : k = u2 + 0.1(sin(t2 ) + u2 ) ≈ 0.0874 + 0.1(sin(0.4) + 0.0874).
Donc k ≈ 0.1351
u3 = u2 + 0.2(sin(t2 + 0.1) + k) ≈ 0.0874 + 0.2(sin(0.5) + 0.1351).
Donc u3 ≈ 0.2103.
• i = 3 : k = u3 + 0.1(sin(t3 ) + u3 ) ≈ 0.2103 + 0.1(sin(0.6) + 0.2103).
Donc k ≈ 0.2878
u4 = u3 + 0.2(sin(t3 + 0.1) + k) ≈ 0.2103 + 0.2(sin(0.7) + 0.2878).
Donc u4 ≈ 0.3968.
• i = 4 : k = u4 + 0.1(sin(t4 ) + u4 ) ≈ 0.3968 + 0.1(sin(0.8) + 0.3968).
Donc k ≈ 0.5082
u5 = u4 + 0.2(sin(t4 + 0.1) + k) ≈ 0.3968 + 0.2(sin(0.9) + 0.5082).
Donc u5 ≈ 0.6551.
34
• Initialisation : u0 = y0 = 0 et i = 0
• i = 0 : Calculons :
1 1
u1 = (u0 + 0.2 sin(0.2)) = sin(0.2) ≈ 0.0497.
0.8 4
• i = 1 : Calculons :
1 1
u2 = (u1 + 0.2 sin(0.4)) = (0.0497 + 0.2 sin(0.4)) ≈ 0.1594.
0.8 0.8
• i = 2 : Calculons :
1 1
u3 = (u2 + 0.2 sin(0.6)) = (0.1594 + 0.2 sin(0.6)) ≈ 0.3405.
0.8 0.8
• i = 3 : Calculons :
1 1
u4 = (u3 + 0.2 sin(0.8)) = (0.3405 + 0.2 sin(0.8)) ≈ 0.6049.
0.8 0.8
• i = 4 : Calculons :
1 1
u5 = (u4 + 0.2 sin(1)) = (0.6049 + 0.2 sin(1)) ≈ 0.9665.
0.8 0.8
Plaçons les approximations obtenues avec chacune de ces méthodes, ansi que le
graphe de la solution exacte sur la même figure :
(1.0 ; 0.6683)
0.6
(0.8 ; 0.4057)
0.4
(0.6 ; 0.2161)
0.2
(0.4 ; 0.0907) (0.2 ; 0.0213)
0
0 0.2 0.4 0.6 0.8 1
Sur cette figure, les approximations par les méthode d’Euler explicite, modifiée et
implicite sont respectivement en bleu, rouge et vert.
On observe que :
• La méthode modifiée est la plus précise,
• Les méthodes explicite et implicite donnent des erreurs comparables,
• La méthode explicite sous-estime y et la méthode explicite sur-estime y.
35
III.5 La méthode de Crank-Nicolson
Puisque les méthodes explicites et implicites donnent des erreurs opposées et
comparables en valeur absolue, il est naturel d’envisager une méthode mixte dans
laquelle l’itéré suivant ui+1 est la moyenne de ce que donneraient les méthodes
explicites et implicites, c’est-à-dire :
f (ti , ui ) + f (ti+1 , ui+1 )
ui+1 = ui + h .
2
Cette méthode s’appelle la méthode de Crank-Nicolson. Comme la méthode d’Eu-
ler implicite, elle nécessite d’obtenir ui+1 à chaque itération comme solution d’une
équation. Appliquons-là avec le problème de Cauchy précédent.
Commençons par écrire l’équation à résoudre à l’étape i, donc la solution est ui+1 .
Pour notre problème de Cauchy :
f (ti , ui ) + f (ti+1 , ui+1 ) h
ui+1 = ui + h = ui + (sin(ti ) + sin(ti+1 ) + ui + ui+1 ).
2 2
Nous pouvons écrire une solution exacte de cette équation :
2 h h h
ui+1 = 1+ ui + sin(ti ) + sin(ti+1 ) .
2−h 2 2 2
Il suffira donc de calculer ui+1 en fonction de ui , de h, de ti et de ti+1 en utilisant
l’expression ci-dessus. Attention, là aussi, il est généralement nécessaire d’utili-
ser une méthode numérique approchée pour résoudre l’équation de la méthode
implicite pour des fonctions f (t, y) plus compliquées !
(1.0 ; 0.6683)
0.6
(0.8 ; 0.4057)
0.4
(0.6 ; 0.2161)
0.2
(0.4 ; 0.0907) (0.2 ; 0.0213)
0
0 0.2 0.4 0.6 0.8 1
Sur cette figure, les approximations par les méthode d’Euler explicite, modifiée et
implicite sont respectivement en bleu, rouge et vert, et les approximations par la
méthode de Crank-Nicolson sont en violet.
Références
[1] A. Quarteroni, F. Salieri, P. Gervasio, Calcul Scientifique. Cours, exercices
corrigés et illustrations en MATLAB et Octave, Springer, 2010.
37