Résolution numérique des EDO : Méthodes
Résolution numérique des EDO : Méthodes
UE MU4PY209
Méthodes Numériques et Calcul Scientifique
2019–2020 [email protected]
EDO TABLE DES MATIÈRES TABLE DES MATIÈRES
1 Introduction 6
2 Méthodes à un pas 12
MNCS 1 2019-2020
EDO TABLE DES MATIÈRES TABLE DES MATIÈRES
MNCS 2 2019-2020
EDO TABLE DES MATIÈRES TABLE DES MATIÈRES
MNCS 3 2019-2020
EDO TABLE DES MATIÈRES TABLE DES MATIÈRES
6.1 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
7 Implémentation vectorielle 69
7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
MNCS 4 2019-2020
EDO TABLE DES MATIÈRES TABLE DES MATIÈRES
Bibliographie 79
MNCS 5 2019-2020
EDO 1 Introduction
1 Introduction
dn y dn−1 y
dy
=f t, y, , ...,
dtn dt dtn−1
MNCS 6 2019-2020
EDO 1 Introduction 1.2 Deux types de problèmes différentiels à résoudre
(n−1)
y(t0 ) = y0 , y 0 (t0 ) = y00 , . . . , y (n−1) (t0 ) = y0
MNCS 7 2019-2020
EDO 1 Introduction 1.3 Équations différentielles scalaires du 1er ordre
dy
= f (t, y(t)) avec y(t0 ) = y0 condition initiale
dt
MNCS 8 2019-2020
EDO 1 Introduction 1.4 Unicité et problème bien posé : conditions suffisantes
La condition de Lipschitz
MNCS 9 2019-2020
EDO 1 Introduction 1.5 Méthodes de résolution numérique et notations
MNCS 10 2019-2020
EDO 1 Introduction 1.5 Méthodes de résolution numérique et notations
Méthode à pas
y exacte constant
famille de solutions exactes approx.
dépendant de y0 Découpage de
l’intervalle de
yi+1 erreur
longueur L selon
ui+1 erreur locale cumulée
un pas fixe
h = L/n.
ui la solution
passant par (ti , ui ) ui = approximat.
de y(ti )
h
y0
Un pas :
ti → ti+1
t0 ti ti+1 t ui → ui+1
MNCS 11 2019-2020
EDO 2 Méthodes à un pas
2 Méthodes à un pas
Constituent l’algorithme de base qui permet d’estimer la valeur de la solution à
l’instant ti+1 = ti + h, connaissant seulement ui , celle à ti .
La valeur à estimer peut être approchée par un développement limité de Taylor :
dy h2 d2 y
y(ti + h) = y(ti ) + h (ti ) + 2
(ti ) + · · · (1)
dt 2 dt
Ordre n de la méthode = plus grande puissance de h prise en compte dans
l’approximation.
— Somme des termes négligés = erreur de troncature locale ∝ hn+1
déterministe, augmente si le pas h augmente et si l’ordre de la méthode diminue
— Précision finie des opérations sur les réels ⇒ erreur d’arrondi aléatoire
augmente lorsque les calculs se compliquent, en particulier si le pas h diminue.
Indépendamment du coût (en temps de calcul) des opérations, et des cas où la
fonction est tabulée, ne pas croire que diminuer le pas améliore toujours la
qualité du résultat : un compromis doit être trouvé entre ces deux types d’erreurs.
MNCS 12 2019-2020
EDO 2 Méthodes à un pas 2.1 Méthodes du premier ordre
Exemple : stabilité
dy y
=− ⇒ solution analytique y = y0 e−t/τ ⇒ yn = y0 (e−h/τ )n
dt τ
h n
ui+1 = ui − ui ⇒ solution numérique un = y0 (1 − h/τ )
τ
Si τ> 0, la solution exacte vérifie y(∞) = 0,
Mais pour l’approximation, un → 0 ⇐⇒ |1 − h/τ | < 1 ⇐⇒ 0 < h < 2τ .
Condition de stabilité : h < 2τ (pas h petit)
Mais, si h > τ , alors (1 − h/τ ) < 0 : alternance de signe de la solution un .
MNCS 13 2019-2020
EDO 2 Méthodes à un pas 2.1 Méthodes du premier ordre
y Méthode d’Euler
k1 k1 = f (ti , ui )
ui facilement instable
h
ui+1 − ui
= f (ti , ui )
ti ti+1 t h
voir dérivée avant
MNCS 14 2019-2020
EDO 2 Méthodes à un pas 2.1 Méthodes du premier ordre
Exemple : stabilité
dy y
=− ⇒ solution analytique y = y0 e−t/τ ⇒ yn = y0 (e−h/τ )n
dt τ
h ui
ui+1 = ui − ui+1 ⇒ solution numérique ui+1 =
τ 1 + h/τ
y0
un = n
(1 + h/τ )
Si τ > 0, y(∞) = 0, et aussi un → 0 ∀τ > 0, ∀h > 0 solution stable
MNCS 15 2019-2020
EDO 2 Méthodes à un pas 2.1 Méthodes du premier ordre
t2 = ti + h
k1 = f (ti , ui )
v2 = ui + hk1
MNCS 16 2019-2020
EDO 2 Méthodes à un pas 2.1 Méthodes du premier ordre
k2 = f (t2 , v2 )
v20 = ui + hk2
δv2 = v20 − v2
arrêt si |δv2 |2 6 α2 |v2 |2
v2 = v20
∂f
La fonction g est contractante si g 0 (v2 ) = h ∂v 61
2
ce qui est vérifié si le pas est assez faible.
∂f
Rappel : la condition de Lipschitz est ∂v
2
6K
Critère d’arrêt : choisir α faible, mais α > ε.
MNCS 17 2019-2020
EDO 2 Méthodes à un pas 2.2 Méthodes du deuxième ordre
dy d2 y ∂f ∂f dy ∂f ∂f
= f (t, y(t)) ⇒ = + = +f (6)
dt dt2 ∂t ∂y dt ∂t ∂y
Préférer utiliser plusieurs évaluations du second membre f en des points adaptés.
h dy 1 h2 d2 y 3
y(ti + h) = y(tm ) + (tm ) + 2
(t m ) + O(h ) (7a)
2 dt 2 4 dt
h dy 1 h2 d2 y 3
y(ti ) = y(tm ) − (tm ) + (t m ) + O(h ) (7b)
2 dt 2 4 dt2
Par différence, (approximation locale parabolique, voir aussi dérivée centrée à 2 termes)
dy
y(ti + h) − y(ti ) = h (tm ) + O(h3 )
dt
MNCS 18 2019-2020
EDO 2 Méthodes à un pas 2.2 Méthodes du deuxième ordre
k1 = f (ti , ui ) (8a)
h h
(ui+1/2 calculé via Euler) k2 = f (ti + , u i + k1 ) (8b)
2 2
ui+1 = ui + hk2 (8c)
MNCS 19 2019-2020
EDO 2 Méthodes à un pas 2.2 Méthodes du deuxième ordre
ui+1 Méthode du
k2 point milieu
k2 h Méthode explicite
ti ti + h/2 ti+1 t
MNCS 20 2019-2020
EDO 2 Méthodes à un pas 2.2 Méthodes du deuxième ordre
h
ui+1 = ui + [f (ti , ui ) + f (ti+1 , ui + hf (ti , ui ))]
2
MNCS 21 2019-2020
EDO 2 Méthodes à un pas 2.2 Méthodes du deuxième ordre
k1 = f (ti , ui ) (9a)
k2 = f (ti+1 , ui + k1 h) (9b)
h
ui+1 = ui + [k1 + k2 ] (9c)
2
Remarques
— deuxième ordre comme point milieu mais sans évaluation hors grille
— la résolution de l’équation implicite peut se faire en itérant la correction jusqu’à
ce qu’elle devienne négligeable.
MNCS 22 2019-2020
EDO 2 Méthodes à un pas 2.2 Méthodes du deuxième ordre
MNCS 23 2019-2020
EDO 2 Méthodes à un pas 2.3 Méthodes de Runge Kutta
k1 = f (ti , ui ) (10a)
2 2
k2 = f (ti + h, ui + k1 h) (10b)
3 3
h
ui+1 = ui + [k1 + 3k2 ] (10c)
4
MNCS 24 2019-2020
EDO 2 Méthodes à un pas 2.3 Méthodes de Runge Kutta
k1 = f (ti , ui ) (11a)
h h
k2 = f (ti + , ui + k1 ) (11b)
2 2
k3 = f (ti + h, ui + (2k2 − k1 )h) (11c)
h
ui+1 = ui + (k1 + 4k2 + k3 ) (11d)
6
MNCS 25 2019-2020
EDO 2 Méthodes à un pas 2.3 Méthodes de Runge Kutta
k1 = f (ti , ui ) (12a)
h h
k2 = f (ti + , ui + k1 ) (12b)
2 2
h h
k3 = f (ti + , ui + k2 ) (12c)
2 2
k4 = f (ti + h, ui + k3 h) (12d)
h
ui+1 = ui + (k1 + 2k2 + 2k3 + k4 ) (12e)
6
MNCS 26 2019-2020
EDO 2 Méthodes à un pas 2.4 Erreur absolue en fonction du pas et de l’ordre
Euler explicite 1 ∝ h2 ∝h
Point milieu – Euler modifiée 2 ∝ h3 ∝ h2
Runge-Kutta 3 3 ∝ h4 ∝ h3
Runge-Kutta 4 4 ∝ h5 ∝ h4
MNCS 27 2019-2020
EDO 2 Méthodes à un pas 2.5 Exemple de l’équation logistique
dy
2.5 Exemple de l’équation logistique = y(1 − y/2)
dt
sol_exacte_logistique
2.0 [ 0.0e+00 , 2.0e+01] h= 2.00e-02 y0=1.00e-01 n= 1001
1.5
logistique
1.0
0.5
0.0
0 5 10 15 20
temps
F IGURE 1 – Solution analytique de l’équation logistique pour t0 = 0, y(t0 ) = 0.1,
a = 1 et k = 2.
MNCS 28 2019-2020
EDO 2 Méthodes à un pas 2.5 Exemple de l’équation logistique
fichier euler.dat ordre 1 erreur max 0.830E−02 position de l’err max 0.296E+01
0.001
0.000
−0.001
−0.003
−0.004
−0.005
−0.006
−0.007
−0.008
−0.009
0 2 4 6 8 10 12 14 16 18 20
estimé − exact
temps
MNCS 29 2019-2020
EDO 2 Méthodes à un pas 2.5 Exemple de l’équation logistique
fichier rk4.dat ordre 4 erreur max 0.954E−06 position de l’err max 0.190E+01
1e−06
8e−07
6e−07
2e−07
0e+00
−2e−07
−4e−07
−6e−07
−8e−07
−1e−06
0 2 4 6 8 10 12 14 16 18 20
exact − estimé
temps
MNCS 30 2019-2020
EDO 2 Méthodes à un pas 2.5 Exemple de l’équation logistique
Valeur absolue de l’erreur absolue pour y’= y(1−y/2) sur [0,20] y(0)=0.1 simple précision
100
euler sp
milieu sp
rk3 sp
10
−1 rk4 sp pente +1
10−2
erreur maximale
pente +2
−3
10
pente −1
−4
10 pente +3
10−5
pente +4
−6
10
10−7 −4
10 10−3 10−2 10−1 100
pas
MNCS 31 2019-2020
EDO 2 Méthodes à un pas 2.5 Exemple de l’équation logistique
10−2 pente +1
10−4
pente +2
10−6
erreur maximale
10−8
pente +3
10−10
10−12 pente +4
−14 euler dp
10
milieu dp
rk3 dp
rk4 dp
10−16 −4
10 10−3 10−2 10−1 100
pas
MNCS 32 2019-2020
EDO 2 Méthodes à un pas 2.5 Exemple de l’équation logistique
10−2
10−4
10−6
erreur maximale
10−8
10−10
euler sp
10−12 milieu sp
rk3 sp
rk4 sp
−14 euler dp
10
milieu dp
rk3 dp
rk4 dp
10−16 −4
10 10−3 10−2 10−1 100
pas
MNCS 33 2019-2020
EDO 3 Méthodes à plusieurs pas
Principe : les erreurs augmentent avec l’intégration, les points les plus proches de
la valeur initiale ont tendance à être plus fiables. Pour calculer ui+1 , on peut
s’appuyer non seulement sur la dernière valeur estimée ui , mais sur les m précédentes.
Dans les deux cas, il faut initialiser le calcul par une méthode à un pas sur les m
premiers points.
MNCS 34 2019-2020
EDO 3 Méthodes à plusieurs pas 3.1 Méthodes d’Adams
MNCS 35 2019-2020
EDO 3 Méthodes à plusieurs pas 3.1 Méthodes d’Adams
h
ui+1 = ui + [3f (ti , ui ) − f (ti−1 , ui−1 )]
2
y Adams-Bashforth à
deux pas
ui+1
−k−1 h/2
Méthode explicite
3k0 h/2
h/2 d’ordre deux mais
k0 seulement une éva-
ui luation nouvelle du
MNCS 36 2019-2020
EDO 3 Méthodes à plusieurs pas 3.1 Méthodes d’Adams
m β α0 α1 α2 α3
0 1 1
1 1/2 1 1
2 1/12 5 8 −1
3 1/24 9 19 −5 1
MNCS 37 2019-2020
EDO 3 Méthodes à plusieurs pas 3.1 Méthodes d’Adams
−3
10
10−4
10−5
10−6
10−7 −4
10 10−3 10−2 10−1 100
pas
MNCS 38 2019-2020
EDO 3 Méthodes à plusieurs pas 3.1 Méthodes d’Adams
Principe : bénéficier des qualités d’une méthode implicite mais l’appliquer à une
estimation obtenue par une méthode explicite du même ordre (voir Euler modifiée).
MNCS 39 2019-2020
EDO 3 Méthodes à plusieurs pas 3.2 Méthodes adaptatives
y(ti+1 ) − ui+1
ui , d’ordre n ηi = ∝ hn (13a)
h
? y(ti+1 ) − u?i+1
u?i , d’ordre n + 1 ηi = ∝ hn+1 (13b)
h
u?i+1 − ui+1
or h 1 donc ηi ≈ ∝ hn (13c)
h
Modification du pas d’un facteur q
n qn ?
ηi (hq) ≈ q ηi (h) ≈ (ui+1 − ui+1 ) (14)
h
Pour obtenir une précision globale ∆y ≈ Lδ , imposer localement :
MNCS 40 2019-2020
EDO 3 Méthodes à plusieurs pas 3.2 Méthodes adaptatives
MNCS 41 2019-2020
EDO 3 Méthodes à plusieurs pas 3.3 Méthodes d’extrapolation de Gragg
t0 h t0 + L
Subdivisions successives
k=1
h/p2
Découpage de l’intervalle de pas
grossier h en sous-intervalles
k=2
h/p3 de pas fin hk = h/pk de plus
en plus petits.
k=3 Développement polynomial de
l’erreur de troncature en fonction
pas fin : h/pkm
du pas pour extrapoler au pas nul
pkm pas k = km (hk → 0).
MNCS 42 2019-2020
EDO 3 Méthodes à plusieurs pas 3.3 Méthodes d’extrapolation de Gragg
MNCS 43 2019-2020
EDO 3 Méthodes à plusieurs pas 3.3 Méthodes d’extrapolation de Gragg
MNCS 44 2019-2020
EDO 3 Méthodes à plusieurs pas 3.3 Méthodes d’extrapolation de Gragg
10−3
10−4
10−5
10−6
10−7 −4
10 10−3 10−2 10−1 100
pas
MNCS 45 2019-2020
EDO 4 Les EDO du premier ordre en pratique
Ne pas oublier que chaque problème différentiel possède une ou plusieurs échelles
de temps propres (périodes ou pseudo-périodes, constantes de temps).
La solution ne peut être représentée correctement qu’avec un pas assez inférieur
au plus petit de ces temps propres.
Cette analyse impose donc une valeur maximale pour le pas.
MNCS 46 2019-2020
EDO 4 Les EDO du premier ordre en pratique 4.2 Validation des résultats
Lorsqu’une solution analytique est disponible (par exemple pour certaines valeurs
de paramètres qui permettent de simplifier l’EDO), sa comparaison avec la solution
numérique permet de tester la méthode. Le calcul de l’erreur dans le domaine où la
troncature domine permet d’extrapoler l’effet d’un changement de pas connaissant
l’ordre de la méthode.
MNCS 48 2019-2020
EDO 5 Systèmes d’EDO du 1er ordre
dy1
= f1 (t, y1 , y2 , . . . , yn ) y1 f1
dt
y
f
dy2 2 2
et
= f2 (t, y1 , y2 , . . . , yn )
dt . . .
. . .
... = ...
dyn yn fn
= fn (t, y1 , y2 , . . . , yn )
dt
MNCS 49 2019-2020
EDO 5 Systèmes d’EDO du 1er ordre 5.1 Méthodes scalaires explicites
MNCS 50 2019-2020
EDO 5 Systèmes d’EDO du 1er ordre 5.1 Méthodes scalaires explicites
avant de calculer...
k2,1 = f1 (t1 + h/2, y1,1 + k1,1 h/2, y1,2 + k1,2 h/2, . . . , y1,n + k1,n h/2)
k2,2 = f2 (t1 + h/2, y1,1 + k1,1 h/2, y1,2 + k1,2 h/2, . . . , y1,n + k1,n h/2)
... = ...
k2,n = fn (t1 + h/2, y1,1 + k1,1 h/2, y1,2 + k1,2 h/2, . . . , y1,n + k1,n h/2)
MNCS 51 2019-2020
EDO 5 Systèmes d’EDO du 1er ordre 5.2 Équations de Lotka-Volterra
dy2 a2 y2 1 − y1 /k1
=− ⇒ y1a2 y2a1 e−a1 y2 /k2 −a2 y1 /k1 = Cte
dy1 a1 y1 1 − y2 /k2
Tangentes horizontales pour y1 = k1 (ou y2 = 0) : équilibre des prédateurs
Tangentes verticales pour y2 = k2 (ou y1 = 0) : équilibre des proies
k1 = k2 = 1, a1 = 1, a2 = 0, 2
Plan de phase de Lotka Volterra Plan de phase de Lotka Volterra
valeurs initiales : proies(0) = 10 prédateurs(0) = 1 valeurs initiales : proies(0) = 10 prédateurs(0) = 1
pas = 0,1 ordre de la méthode : 1 pas = 0,1 ordre de la méthode : 4
8.0 8.0
prédateurs= f(proies) prédateurs= f(proies)
7.0 7.0
6.0 6.0
5.0 5.0
prédateurs
prédateurs
4.0 4.0
3.0 3.0
2.0 2.0
1.0 1.0
0.0 0.0
0 5 10 15 20 0 5 10 15 20
proies proies
Lotka Volterra valeurs initiales : proies(0) = 10 prédateurs(0) = 1 Lotka Volterra valeurs initiales : proies(0) = 10 prédateurs(0) = 1
pas = 0,1 ordre de la méthode : 1 pas = 0,1 ordre de la méthode : 4
20 20
proies proies
prédateurs prédateurs
15 15
Populations
Populations
10 10
5 5
0 0
0 20 40 60 80 100 0 20 40 60 80 100
temps temps
MNCS 54 2019-2020
EDO 5 Systèmes d’EDO du 1er ordre 5.2 Équations de Lotka-Volterra
Lotka Volterra valeurs initiales : proies(0) = 10 prédateurs(0) = 1 Lotka Volterra valeurs initiales : proies(0) = 10 prédateurs(0) = 1
pas = 0,1 ordre de la méthode : 1 pas = 0,1 ordre de la méthode : 4
2 2
10 10
proies proies
prédateurs prédateurs
100 100
10−2 10−2
Populations
Populations
10−4 10−4
10−6 10−6
10−8 10−8
−10 −10
10 10
0 20 40 60 80 100 0 20 40 60 80 100
temps temps
qui ne dépend donc que des conditions initiales. Il est constant sur une orbite
(trajectoire fermée) dans le plan de phase.
MNCS 56 2019-2020
EDO 5 Systèmes d’EDO du 1er ordre 5.2 Équations de Lotka-Volterra
22
18
14
1.0
0.5
Composante Z2(t)
0.0
0.5
1.0 10
18
1.5
14
2.0
18
22
6 4 2 0 2
Composante Z1(t)
MNCS 57 2019-2020
EDO 6 Équations différentielles d’ordre supérieur
n n−1
d y dy d y
= f t, y, , . . . ,
dtn dt dtn−1
Une EDO scalaire d’ordre n se ramène à un système de n équations différentielles
du premier ordre couplées en posant :
y1 y y10 y2
y y0 y0 y3
2 2
= =⇒ =
. . . . . . . . . ...
yn y (n−1) yn0 f (t, y1 , y2 , . . . , yn )
MNCS 58 2019-2020
EDO 6 Équations différentielles d’ordre supérieur 6.1 Exemple
6.1 Exemple
d2 y dy
2
= a + by + h(t)
dt dt
Poser
y y y10 y2
1 = ⇒ =
y2 y0 y20 ay2 + by1 + h(t)
MNCS 59 2019-2020
EDO 6 Équations différentielles d’ordre supérieur 6.2 Exemple d’EDO d’ordre 2 : le pendule
d2 y 2 2 l
= −k sin(y) où k = g/l (24)
dt2
y
Pendule linéarisé (cas des petites amplitudes) : sin(y) ≈ y
mg
d2 y 2
2
= −k y (25)
dt
l’équation linéarisée admet une solution analytique en A cos(kt) + B sin(kt).
Exprimer cette EDO non linéaire du second ordre sous la forme d’un système
différentiel couplé de dimension 2 mais du premier ordre.
y y y10 y2
1 = =⇒ =
y2 y0 y20 −k 2 sin(y1 )
MNCS 60 2019-2020
EDO 6 Équations différentielles d’ordre supérieur 6.2 Exemple d’EDO d’ordre 2 : le pendule
MNCS 61 2019-2020
EDO 6 Équations différentielles d’ordre supérieur 6.2 Exemple d’EDO d’ordre 2 : le pendule
0.20
1.0
0.15
0.10
0.5
0.05
theta
theta
0.00 0.0
−0.05
−0.05
−0.5
−0.5
−0.10
−0.10
−0.15
−0.15
−1.0
−1.0
−0.20
−0.20
−0.25
−0.25 −1.5
−1.5
0 5 10 15 20 25 30 35 40 45 50 0 5 10 15 20 25 30 35 40 45 50
estimé estimé
linéaire temps linéaire temps
2 40
1 30
theta
theta
0 20
−1
−1 10
−2
−2 0
−3
−3 −10
−10
0 5 10 15 20 25 30 35 40 45 50 0 5 10 15 20 25 30 35 40 45 50
estimé estimé
linéaire temps linéaire temps
MNCS
a = 1.98 périodique non sinusoïdal 62
a = 2.02 apériodique 2019-2020
EDO 6 Équations différentielles d’ordre supérieur 6.2 Exemple d’EDO d’ordre 2 : le pendule
0.20 0.8
0.15 0.6
0.10 0.4
0.05 0.2
dtheta/dt
dtheta/dt
0.00 0.0
−0.05 −0.2
−0.10 −0.4
−0.15 −0.6
−0.20 −0.8
−0.25 −1.0
−0.25 −0.20 −0.15 −0.10 −0.05 0.00 0.05 0.10 0.15 0.20 0.25 −1.5 −1.0 −0.5 0.0 0.5 1.0 1.5
estimé estimé
linéarisé theta linéarisé theta
2.0
1.5
1.5
1.0
1.0
0.5
0.5
dtheta/dt
dtheta/dt
0.0 0.0
−0.5
−0.5
−1.0
−1.0
−1.5
−1.5
−2.0
−2.0 −2.5
−3 −2 −1 0 1 2 3 −10 0 10 20 30 40 50
estimé estimé
linéarisé theta linéarisé theta
MNCS
a = 1.98 périodique non sinusoïdal 63
a = 2.02 apériodique 2019-2020
EDO 6 Équations différentielles d’ordre supérieur 6.2 Exemple d’EDO d’ordre 2 : le pendule
0.2 1.0
0.1 0.5
theta
theta
0.0 0.0
−0.1
−0.1 −0.5
−0.5
−0.2
−0.2 −1.0
−1.0
−0.3
−0.3 −1.5
−1.5
0 5 10 15 20 25 30 35 40 45 50 0 5 10 15 20 25 30 35 40 45 50
estimé estimé
linéaire temps linéaire temps
a = 0.2 a=1
pendule + sol. linéarisée: méth. ordre 1 vitesse ang. init=1.98 pendule + sol. linéarisée: méth. ordre 1 vitesse ang. init=2.02
méthode d’ordre 1 méthode d’ordre 1
de 0.000000 à 50.000000 avec un pas de 0.01 de 0.000000 à 50.000000 avec un pas de 0.01
valeurs initiales 0.0000000e+00 1.9800000e+00 valeurs initiales 0.0000000e+00 2.0200000e+00
5 60
0
50
−5
−5
−10
−10 40
−15
−15
30
theta
theta
−20
−20
20
−25
−25
−30
−30
10
−35
−35
0
−40
−40
−45
−45 −10
−10
0 5 10 15 20 25 30 35 40 45 50 0 5 10 15 20 25 30 35 40 45 50
estimé estimé
linéaire temps linéaire temps
MNCS
a = 1.98 apériodique selon Euler ! 64
a = 2.02 2019-2020
EDO 6 Équations différentielles d’ordre supérieur 6.2 Exemple d’EDO d’ordre 2 : le pendule
0.2 1.0
0.1 0.5
dtheta/dt
dtheta/dt
0.0 0.0
−0.1 −0.5
−0.2 −1.0
−0.3 −1.5
−0.3 −0.2 −0.1 0.0 0.1 0.2 0.3 −1.5 −1.0 −0.5 0.0 0.5 1.0 1.5
estimé estimé
linéarisé theta linéarisé theta
a = 0.2 a=1
plan de phase pendule: méth. ordre 1 vitesse ang. init.=1.98 plan de phase pendule: méth. ordre 1 vitesse ang. init.=2.02
méthode d’ordre 1 méthode d’ordre 1
de 0.000000 à 50.000000 avec un pas de 0.01 de 0.000000 à 50.000000 avec un pas de 0.01
valeurs initiales 0.0000000e+00 1.9800000e+00 valeurs initiales 0.0000000e+00 2.0200000e+00
2.0 2.5
1.5 2.0
1.5
1.0
1.0
0.5
0.5
0.0
dtheta/dt
dtheta/dt
0.0
−0.5
−0.5
−1.0
−1.0
−1.5
−1.5
−2.0 −2.0
−2.5 −2.5
−45 −40 −35 −30 −25 −20 −15 −10 −5 0 5 −10 0 10 20 30 40 50 60
estimé estimé
linéarisé theta linéarisé theta
MNCS
a = 1.98 apériodique selon Euler ! 65
a = 2.02 2019-2020
EDO 6 Équations différentielles d’ordre supérieur 6.2 Exemple d’EDO d’ordre 2 : le pendule
1 1
vitesse
vitesse
0 0
1 1
2 2
3 2 1 0 1 2 3 3 2 1 0 1 2 3
position position
MNCS 66 2019-2020
EDO 6 Équations différentielles d’ordre supérieur 6.2 Exemple d’EDO d’ordre 2 : le pendule
dz1
z1 (t + h) = z1 (t) + h (t, z1 (t), z2 (t)) (26)
dt
dz2
z2 (t + h) = z2 (t) + h (t + h, z1 (t + h), z2 (t + h) ) (27)
dt
Dans le cas d’un système séparable , la méthode rétrograde ne nécessite plus
dz
d’itération car dt2 ne dépend pas de z2 et z1 (t + h) a été calculé avant.
dz1
z1 (t + h) = z1 (t) + h (t, z2 (t)) (28)
dt
dz2
z2 (t + h) = z2 (t) + h (t + h, z1 (t + h)) (29)
dt
MNCS 67 2019-2020
EDO 6 Équations différentielles d’ordre supérieur 6.2 Exemple d’EDO d’ordre 2 : le pendule
pendulelin-EulerForBack-esp-phases pendulelin-EulerBackFor-esp-phases
[ 0.0e+00 , 5.0e+01] h= 2.50e-02 y0[0]=0.00e+00 y0[1]=1.00e+00 n= 2001 [ 0.0e+00 , 5.0e+01] h= 2.50e-02 y0[0]=0.00e+00 y0[1]=1.00e+00 n= 2001
1.5 1.5
1.0 1.0
0.5 0.5
vitesse
vitesse
0.0 0.0
0.5 0.5
1.0 1.0
1.5 1.5
2.0 1.5 1.0 0.5 0.0 0.5 1.0 1.5 2.0 2.0 1.5 1.0 0.5 0.0 0.5 1.0 1.5 2.0
position position
MNCS 68 2019-2020
EDO 7 Implémentation vectorielle
7.1 Introduction
— Les méthodes d’intégration doivent fonctionner quelle que soit la taille p des
vecteurs qui représentent la solution
#– et le second membre #–
y f de l’EDO.
— Il en est de même pour l’interface formelle de la fonction second membre en
fortran ou le pointeur de fonction second membre en C.
— C’est le programme principal qui fixera cette taille.
Il devra donc choisir un second membre de la même dimension.
— Les tailles des tableaux des seconds membres effectifs seront héritées du
programme principal et non déclarées explicitement.
#–
Mais seules les p composantes effectives de f (2 pour le pendule : dérivée et
#–
dérivée seconde) seront calculées à partir des p composantes de y .
MNCS 69 2019-2020
EDO 7 Implémentation vectorielle 7.2 En fortran (norme 2003)
MODULE abstrait
ABSTRACT INTERFACE ! de la fct générique IInd mb de l’EDO
FUNCTION fty(t, y) ! dy/dt
REAL, DIMENSION(:),INTENT(in) :: y ! variable vecteur
REAL, INTENT(in) :: t
REAL, DIMENSION(SIZE(y)) :: fty ! vecteur résultat
END FUNCTION fty
END INTERFACE
END MODULE abstrait
#–
L’étendue p du vecteur résultat f effectif sera donc fixée par le programme
principal via
#– et non par la fonction second membre.
y
MNCS 70 2019-2020
EDO 7 Implémentation vectorielle 7.2 En fortran (norme 2003)
MNCS 71 2019-2020
EDO 7 Implémentation vectorielle 7.2 En fortran (norme 2003)
3. Dans le programme principal (et dans la procédure d’écriture sur fichier), les
solutions vectorielles (analytique et par intégration) sont représentées par des
tableaux 2D alloués dynamiquement (n instants, p composantes).
Les étendues n et p sont donc choisies à l’exécution, sachant que p doit être
correspondre au nombre effectif de composantes du second membre étudié.
Mais la dimension temporelle n’est pas « vue » par les méthodes : elles
travaillent sur des vecteurs (d’étendue p) dans un intervalle [ti , ti+1 ], à i fixé.
MNCS 72 2019-2020
EDO 7 Implémentation vectorielle 7.3 En C89 avec des tableaux dynamiques
MNCS 73 2019-2020
EDO 7 Implémentation vectorielle 7.3 En C89 avec des tableaux dynamiques
2. pour chacune des méthodes à un pas (Euler, point milieu et Runge Kutta) les
#–
pentes locales ki seront des tableaux alloués et libérés localement, car leur
nombre dépend de la méthode ; en revanche, le résultat
#–
u i+1 qui est aussi
vectoriel sera passé en argument (sous forme pointeur plus nombre
d’éléments), son allocation et libération prises en charge par l’appelant.
MNCS 74 2019-2020
EDO 7 Implémentation vectorielle 7.3 En C89 avec des tableaux dynamiques
3. Dans le programme principal (et dans la procédure d’écriture sur fichier), les
solutions vectorielles (analytique et par intégration) sont représentées par des
tableaux 2D. Mais la dimension temporelle n’est pas « vue » par les méthodes :
elles travaillent sur des vecteurs de taille p dans un intervalle [ti , ti+1 ]. Cela
impose que les composantes des vecteurs soient contigües en mémoire, donc
le deuxième indice est celui des composantes, le premier celui du temps.
MNCS 75 2019-2020
EDO 7 Implémentation vectorielle 7.4 En C99 avec des tableaux automatiques
2. pour chacune des méthodes à un pas (Euler, point milieu et Runge Kutta) les
#–
pentes locales ki seront des tableaux locaux automatiques, car leur nombre
#–
dépend de la méthode ; en revanche, le résultat u i+1 qui est aussi vectoriel
sera passé en argument, sa déclaration étant prise en charge par l’appelant.
MNCS 77 2019-2020
EDO 7 Implémentation vectorielle 7.4 En C99 avec des tableaux automatiques
3. Dans le programme principal (et dans la procédure d’écriture sur fichier), les
solutions vectorielles (analytique et par intégration) sont représentées par des
tableaux 2D. Mais la dimension temporelle n’est pas « vue » par les méthodes :
elles travaillent sur des vecteurs de taille p dans un intervalle [ti , ti+1 ]. Cela
impose que les composantes des vecteurs soient contigües en mémoire, donc
le deuxième indice est celui des composantes, le premier celui du temps.
MNCS 78 2019-2020
EDO RÉFÉRENCES RÉFÉRENCES
Références
A KAI , T ERRENCE J., Applied Numerical Methods for Engineers, 410 pages (Wiley,
1994), ISBN 0-471-57523-2.
MNCS 79 2019-2020