0% ont trouvé ce document utile (0 vote)
11 vues30 pages

Equ Diff 1

Transféré par

Mahamadou Traoré
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
11 vues30 pages

Equ Diff 1

Transféré par

Mahamadou Traoré
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Équations différentielles

c.i.
c.l.

Géraldine Faure
[email protected]

Université Clermont Auvergne

2020

L3PhysNum (EUPI) Équations différentielles 2020 1 / 30


Equations différentielles à conditions initiales

Méthodes
Théorème de Cauchy
Méthodes Numériques
Euler explicite, implicite
Heun
RK2
RK4
Adams

L3PhysNum (EUPI) Équations différentielles 2020 2 / 30


Introduction

Deux catégories :
• problèmes à conditions initiales (C.I.)
• problèmes à conditions aux limites (C.L.)


F y , y 0 , y 00 , . . . , y (p) = g(t) (1)
On cherche la fonction y (t) sur un intervalle, g(t) est le second membre de l’équation.
Si g(t) = 0 on dit que l’équation différentielle est homogène.
Si p = 1 l’équation différentielle est d’ordre 1, et si p > 1, on peut toujours se ramener à un
système d’équations différentielles du 1er ordre.

L3PhysNum (EUPI) Équations différentielles 2020 3 / 30


Équations différentielles C.I.

Problème de Cauchy
Soit : (
dy (t)
= f (y (t), t) (2)
dt
y (t0 ) = y0

où y : [a, b] → Rn et f : R × Rn → Rn et t0 ∈ [a, b]

Équation différentielle du second ordre



dy (t)

 = z(t)
 2
d y (t) dy (t)

 dt
 = f (t, y (t), )  dz(t)


 2 dt dt = f (t, y (t), z(t))
dt (4)
y(t0 ) = y0 (3)  y(t0 ) = y0
dy 
dy
y00
 

 = 
 = z(t0 ) = y00
dy t=t0 
dy t=t0

d
   
y (t) z(t)
= (5)
dt z(t) f (t, y , z)

L3PhysNum (EUPI) Équations différentielles 2020 4 / 30


Équations différentielles C.I.

Généralisation
 dy1
 dt
= f1 (y1 , y2 , . . . , yn , t)
 dy2
= f2 (y1 , y2 , . . . , yn , t)
dt (6)
 .dy. n.

dt
= fn (y1 , y2 , . . . , yn , t)
avec les conditions initiales : 
 y1 (0) = y10
y2 (0) = y20
(7)
 ...
yn (0) = yn0

On peut écrire ce système sous la forme

d→
− −
→ −

y
dt
= f (→
y , t) (8)


y (0) = −

y 0

avec −
→y = (y1 , y2 , . . . , yn )


f = (f1 , f2 , . . . , fn )
et −

y0 = (y10 , y20 , . . . , y0n )

L3PhysNum (EUPI) Équations différentielles 2020 5 / 30


Théorème de Cauchy-Lipschitz

Théorème
Si
1 f : [t0 , t0 + a] × Rn → Rn est continue
2 Il existe L tel que pour tout (x , y , z) on ait :

||f (x , y ) − f (x , z)|| ≤ L||y − z||

alors le problème de Cauchy (


dy (t)
= f (y (t), t)
dt
y (t0 ) = y0
a une solution unique.
∂f
La condition 2 est remplie si ∂y (t, y ) est bornée uniformément en t.
Dans la suite on cherchera à résoudre des problèmes de Cauchy (fonction f convenable,
Lipschitzienne)

L3PhysNum (EUPI) Équations différentielles 2020 6 / 30


Méthodes Numériques : Principe

principe
On subdivise l’intervalle I en N sous-intervalles de longueur h, h est donc le pas de discrétisation.
On intègre l’équation différentielle
y 0 (t) = f (t, y (t))
entre tn et tn+1 (avec h = tn+1 − tn )
Z tn+1
y (tn+1 ) − y (tn ) = f (t, y (t))dt (9)
tn

Pour chaque nœud tn = t0 + nh avec 1 ≤ n ≤ N, on cherche la valeur inconnue un qui approche


y (tn )
L’ensemble des valeurs (u0 = y0 , u1 , u2 , . . . , uN ) représente la solution numérique.

L3PhysNum (EUPI) Équations différentielles 2020 7 / 30


Suivant la méthode de calcul du membre de droite de l’équation (9) on obtient différents schémas
de calcul.
Méthode d’Euler explicite : la plus simple à mettre en œuvre
Méthode d’Euler implicite
Méthode d’Euler modifiée
Méthode de Heun
Méthode de Runge-Kutta à l’ordre 2 et à l’ordre 4
Méthode d’Adams (pas multiples)

L3PhysNum (EUPI) Équations différentielles 2020 8 / 30


Méthode Euler progressif

schéma explicite d’Euler


rectangle à gauche Z tn+1
f (t, y (t))dt ≈ hf (tn , y (tn )) (10)
tn

On obtient à partir de (9) et (10) :


n
u0 = y (t0 ) = y0
(11)
un+1 = un + hf (tn , un ) ∀n = 0, 1, 2, . . . , N − 1

Ce schéma est dit explicite puisque le terme un+1 est fonction de un . A partir de la connaissance
de la c.i. y0 , u0 = y0 , le processus peut être exécuté.

L3PhysNum (EUPI) Équations différentielles 2020 9 / 30


Méthode Euler progressif

Exercice


dy
= f (t, y ) = t(1 − y )
dt (12)
y (0) = 0

Appliquer le schéma de Euler progressif (explicite) sur l’intervalle [0; 3], avec un pas h = 0, 5.
Pour cela, faites un tableau dont la dernière colonne correspondra à la valeur absolue de l’erreur,
t2
sachant que la solution exacte est y (t) = 1 − e − 2

A vos calculettes ! !

L3PhysNum (EUPI) Équations différentielles 2020 10 / 30


Solution

n tn yn yexacte |erreur |
0 0,000 0,000 0,0 0
1 0,500 0,000 0,117 0,117
2 1,000 0,250 0,393 0,143
3 1,500 0,625 0,675 0,05
4 2,000 0,906 0,865 0,041
5 2,500 0.9997 0,956 0,0437
6 3,000 1,000 0,989 0,011

Table – Résolution de (12), par Euler explicite avec h = 0, 5 et t0 = 0. On a les récurrences


suivantes :tn+1 = tn + h = t0 + nh = 0, 5 + tn et yn+1 = yn + 0, 5tn (1 − yn )

L3PhysNum (EUPI) Équations différentielles 2020 11 / 30


Méthode Euler rétrograde

schéma implicite d’Euler


rectangle à droite Z tn+1
f (t, y (t))dt ≈ hf (tn+1 , y (tn+1 )) (13)
tn

A partir des équations (9) et (13), on obtient :


n
u0 = y (t0 ) = y0
(14)
un+1 − hf (tn+1 , un+1 ) = un ∀n = 0, 1, 2, . . . , N − 1

Ce schéma est dit implicite puisque le terme un+1 est fonction de un et un+1 . Il n’est pas possible
d’obtenir directement un+1 .
deux possibilités :
résoudre l’équation (14) un+1 − hf (tn+1 , un+1 ) = un pour déterminer un+1
estimer un+1 par la méthode d’Euler progressif

L3PhysNum (EUPI) Équations différentielles 2020 12 / 30


Méthode Euler rétrograde

schéma implicite d’Euler


Soit ug
n+1 une estimation de un+1 , on obtient alors :
(
u0 = y0
ug
n+1 = un + hf (tn , un ) (15)
un+1 = un + hf (tn+1 , un+1
˜ )

L3PhysNum (EUPI) Équations différentielles 2020 13 / 30


Méthode Euler modifiée

schéma d’Euler modifiée


quadrature du point milieu
Z tn+1
h h
f (t, y (t))dt ≈ hf (tn + , y (tn + )) (16)
tn
2 2

A partir des équations (9) et (16), on obtient :



u0 = y (t0 ) = y0
(17)
un+1 = un + hf (tn + h2 , un+1/2 ) ∀n = 0, 1, 2, . . . , N − 1

où un+1/2 est une approximation de y (tn + h2 ) = y (tn+1/2 ).


De même que précédemment (Euler rétrograde), on utilise Euler progressif pour prédire un+1/2
par u^
n+1/2
On obtient le schéma d’Euler modifié suivant :
(
u0 = y0
u^
n+1/2 = un + h2 f (tn , un ) (18)
un+1 = un + hf (tn+1/2 , u^ n+1/2 ) ∀n = 0, 1, 2, . . . , N − 1

L3PhysNum (EUPI) Équations différentielles 2020 14 / 30


Méthode de Heun

schéma de Heun
utilisation de la formule des Trapèzes, on obtient le schéma de Heun suivant :

u0 = y0
(19)
un+1 − h2 f (tn+1 , un+1 ) = un + h2 f (tn , un ) ∀n = 0, 1, 2, . . . , N − 1

En prédisant un+1 on obtient :


(
u0 = y0
ug
n+1 = un + hf(tn , un )  (20)
un+1 = un + h2 f (tn , un ) + f (tn+1 , ug
n+1 )

L3PhysNum (EUPI) Équations différentielles 2020 15 / 30


A partir de Simpson

Z tn+1
h 
f (t, y )dt ≈ f (tn , yn ) + 4f (tn+1/2 , yn+1/2 ) + f (tn+1 , yn+1 ) (21)
tn
6

en utilisant le même raisonnement que précédemment on obtient le schéma RK2 suivant :


 u0 = y0
un + h2 f (tn , un )
 u^ =
n+1/2
ug = un + hf (tn , un )
 n+1
 h
 
un+1 = un + 6
f (tn , un ) + 4f (tn+1/2 , u^
n+1/2 ) + f (tn+1 , u
g n+1 )
(22)

L3PhysNum (EUPI) Équations différentielles 2020 16 / 30


Méthode Runge Kutta ordre 2, RK2

RK2
On utilise les différences centrées au 1er ordre

yi+1 − yi = hf (yi+1/2 , ti+1/2 ) (23)

h
Estimation de yi+1/2 par y^
i+1/2 = yi + 2 f (yi , ti )
Le schéma Runge Kutta d’ordre 2 est alors :
(
u0 = y0
u^
i+1/2 = ui + h2 f (ui , ti ) (24)
ui+1 = ui + hf (u^ i+1/2 , ti+1/2 )

L3PhysNum (EUPI) Équations différentielles 2020 17 / 30


Méthode Runge Kutta ordre 4, RK4

Z tn+1
h 
f (t, y )dt ≈ f (tn , yn ) + 4f (tn+1/2 , yn+1/2 ) + f (tn+1 , yn+1 ) (25)
tn
6

On sépare le point milieu en 2 :


Z tn+1
h 
f (t, y )dt ≈ f (tn , yn ) + 2f (tn+1/2 , yn+1/2 ) + 2f (tn+1/2 , yn+1/2 ) + f (tn+1 , yn+1 ) (26)
tn
6

en utilisant le même raisonnement que précédemment on obtient le schéma RK4 suivant :


 u0 = y0
 u^ = un + h2 f (tn , un )

 n+1/2
u\
n+1/2 = un + h2 f (tn+1/2 , u^
n+1/2 )


 ug
n+1 = un + hf(tn+1/2 , u\ n+1/2 ) 
un+1 = un + h6 f (tn , un ) + 2f (tn+1/2 , u^
n+1/2 ) + 2f (tn+1/2 , u\
n+1/2 ) + f (tn+1 , u n+1 )
 g
(27)

L3PhysNum (EUPI) Équations différentielles 2020 18 / 30


Méthode Runge Kutta ordre 4, RK4

Schéma RK4
Souvent on écrit la méthode RK4 en utilisant les coefficients k1 , k2 , k3 et k4 suivants :

k = hf (tn , un )
 1

k2 = hf (tn+1/2 , un + k21 )
(28)
 k3 = hf (tn+1/2 , un + k22 )

k4 = hf (tn+1 , un + k3 )
1
un+1 = un + (k1 + 2k2 + 2k3 + k4 ) (29)
6

L3PhysNum (EUPI) Équations différentielles 2020 19 / 30


RK4

Exercice

On reprend l’exercice précédent :



dy
= f (t, y ) = t(1 − y )
dt (30)
y (0) = 0

Appliquer le schéma RK4 sur l’intervalle [0; 3], avec un pas h = 0, 5. Pour cela, faites un tableau
dont la dernière colonne correspondra à la valeur absolue de l’erreur, sachant que la solution
t2
exacte est y (t) = 1 − e − 2
Compléter le tableau suivant.

n tn k1 k2 k3 k4 un yexacte |erreur |
0 0
1 0,5
2 1,0
3 1,5
4 2,0
5 2,5
6 3,0

L3PhysNum (EUPI) Équations différentielles 2020 20 / 30


RK4 - correction

n tn k1 k2 k3 k4 un yexacte |erreur |
0 0 0 0
1 0,5 0,000 0,125 0,117 0,221 0,1174 0,117
2 1,0 0,221 0,289 0,277 0,303 0,393 0,393
3 1,5 0,3035 0,284 0,290 0,237 0,675 0,675
4 2,0 0,244 0,178 0,206 0,118 0,863 0,865
5 2,5 0,136 0,077 0,111 0,033 0,954 0,956
6 3,0 0,058 0,023 0,047 -1,769e-3 0,986 0,989
l’erreur est inférieure à 10−3 pour n < 4 et de l’ordre de 10−3 pour n ≥ 4.

L3PhysNum (EUPI) Équations différentielles 2020 21 / 30


Algorithme - Programmation
Reprenons le schéma de Euler progressif (11) :

A chaque itération, on ajoute à la liste


Exemple Euler explicite X et Y les valeurs de t et y
respectivement.
Les listes X et Y sont retournées.
Variables :
entrées :
Possibilité de les convertir en nd.array.
y0 , t0 réel, C.I. Plusieurs façons d’écrire en python cet
Tf : borne supérieure de l’intervalle algo.
N : nombre de subdivision de l’intervalle (ou h)
f : la fonction
locales : t, y , h réels
sorties : X et Y listes des points solutions sur l’intervalle
Début :
X ← [t0 ]
Y ← [y0 ]
t ← t0
y ← y0
Tf −t 0
h← N
tant que t ≤ Tf Faire
y ← y + hf (t, y )
t ←t+h
X ← ajout de x
Y ← ajout de y
fin tant que
retourner X et Y
Fin
Algorithme 1 : Euler progressif

Faites de même avec les autres schémas numériques.


L3PhysNum (EUPI) Équations différentielles 2020 22 / 30
Algorithme - Programmation

Pour utiliser les équations (6) et (7), c’est-à-dire pour des équations différentielles d’ordre p ou
pour des systèmes de p équations différentielles du 1er ordre, les mêmes schémas numériques
précédents sont utilisés sous forme vectorielle. Pour cela les propriétés du module numpy sont
nécessaires.

Équation différentielle d’ordre p


Rappel :  −
→0 −
→ →
y = F (t, −
y)
−−→ − (31)
y (a) = →
α
avec −

y = (y0 , y1 , . . . , yp−1 )  
y1
y2

→ −
F (t, →
 
y)= ...  (32)
yp−1
 
f (t, −
→y)

L3PhysNum (EUPI) Équations différentielles 2020 23 / 30


Algorithme - Programmation

Équation différentielle d’ordre p -suite-


Le système est alors :
   
y0 y1
y1 y2
d    
 ... = ...  (33)
dt  yp−2
  yp−1

yp−1 f (y0 , y1 , . . . , yp−1 , t)

avec p conditions initiales −



α = (y (a), y 0 (a), . . . , y (p−1) (a)) = (y0 (a), y1 (a), . . . , yp−1 (a))

algo Euler
 →
− −
→ −→
dY
= F ( Y , t)

→dt (34)
Y0 (C.I.)

L3PhysNum (EUPI) Équations différentielles 2020 24 / 30


Algorithme - Programmation

Exemple Euler explicite vectorielle


 −
→ −−− →
Y0 = y (t0 )
−−→ − → −
→ − → (35)
Yn+1 = Yn + h F (Yn , tn )
Variables :
entrées→−:
F : ≡ F tableau (nd.array) (y1 , y2 , yp−1 , f (y0 , . . . , t))
x et y C.I. →

xf : borne supérieure de l’intervalle algo F
h : pas de calcul
sorties : X et Y listes des points solutions sur l’intervalle Variables :
entrées :
Début : t et y
X ← [] sortie :
Y ← [] g : vecteur (nd.array)
X ←ajout x Début :
Y ← ajout y g[0] ← y [1]
tant que x ≤ xf Faire g[1] ← y [2]
...
y ← y + hF (t, y )
g[p − 1] ← f (y0 , y1 , . . . , yp−1 , t)
x ←x +h retourner g
X ← ajout de x Fin
Y ← ajout de y
fin tant que
retourner X et Y
Fin
Algorithme 2 : Euler progressif vectorielle
Appel Euler
A, B = euler (F , t, y , tfin, h)
avec t et y les c.i.
A et B solution (A échantillonnage sur t
B = (B[0] ≡ y la solution, B[1] ≡ y 0 , . . .)
L3PhysNum (EUPI) Équations différentielles 2020 25 / 30
Méthode d’Adams - Basforth

Adams-Bashforth
A partir du système 
dy
= f (y , t)
dt (36)
y (t0 ) = y0

Utilisons le développement en série de Taylor au point t = ti :

h2 00 h3 000
yi+1 = yi + hyi0 + y + y + ... (37)
2 i 3! i
avec y 0 (ti ) = yi0 = f (yi , ti ) et y 00 (ti ) = yi00 = f 0 (yi0 , ti ) etc

h2 0 h3 00
yi+1 = yi + hfi + f + f + ... (38)
2 i 3! i

Ordre 1
yi+1 = yi + hfi (39)
On retrouve la méthode d’Euler

L3PhysNum (EUPI) Équations différentielles 2020 26 / 30


Méthode d’Adams - Basforth

Ordre 2
h2 0
yi+1 = yi + hfi + f + O(h)3 (40)
2 i
f −f
Utilisons les différences à gauche pour la dérivée :fi0 = i hi−1 + O(h)
On obtient alors
h2 fi − fi−1
 
yi+1 = yi + hfi + + O(h) + O(h)3
2 h
h
yi+1 = yi + (3fi − fi−1 ) + O(h)3 (41)
2
Formule d’ordre 2 puisque l’on néglige les termes en h3
Pour calculer yi+1 il faut connaître fi et fi−1 .
Pour lancer le processus il faut connaître y0 et y1 .
y0 Ok c.i.
y1 on le calcule par une méthode vue précédemment du même ordre, ici on prendra RK2

L3PhysNum (EUPI) Équations différentielles 2020 27 / 30


Méthode d’Adams - Basforth

Ordre 3
h2 0 h3 00
yi+1 = yi + hfi + fi + f + O(h)4
2 3! i
On utilise les différences à gauche pour fi0 et fi00

fi − fi−1 h
fi0 = + fi00 + O(h)2
h 2

fi − 2fi−1 + fi−2
fi00 = + O(h)
h2
En reportant dans la relation précédente on trouve finalement :

h
yi+1 = yi + (23fi − 16fi−1 + 5fi−2 ) + O(h)4 (42)
12
Le calcul de y1 et y2 par RK4 (ordre 4), puis le processus de l’équation (42) peut être réalisé.

L3PhysNum (EUPI) Équations différentielles 2020 28 / 30


Méthode d’Adams - Basforth

Ordre n > 3
On calcul de la même façon et on obtient :
n
X
yi+1 = yi + h βnk fi−k + O(h)n+2 (43)
k=0

La formule la plus couramment utilisée est celle d’ordre 4

h
yi+1 = yi + (55fi − 59fi−1 + 37fi−2 − 9fi−3 ) + O(h)5 (44)
24

L3PhysNum (EUPI) Équations différentielles 2020 29 / 30


Méthode d’Adams - Basforth

k
0 1 2 3 4 5
n

0 1

3 −1
1 2 2

23 −16 5
2 12 12 12

55 −59 37 −9
3 24 24 24 24

1901 −2774 2616 −1274 251


4 720 720 720 720 720

4277 −7923 9982 −7298 2877 −475


5 1440 1440 1440 1440 1440 1440

Table – Coefficients βnk de l’équation (43) jusqu’à l’ordre 6 pour la méthode Adams-Bashforth

L3PhysNum (EUPI) Équations différentielles 2020 30 / 30

Vous aimerez peut-être aussi