Professional Documents
Culture Documents
UPMC
1 Introduction
Master P&A/SDUEE
1
UE MP025 = 4P056
1.1
Introduction
Problme diffrentiel
dn y
=f
dtn
dy
dn1 y
t, y,
, ...,
dt
dtn1
20142015
Jacques.Lefrere@upmc.fr
MNCS
EDO
1 Introduction
EDO
1 Introduction
2014-2015
(n1)
y (n1) (t0 ) = y0
dy
= f (t, y(t)) avec y(t0 ) = y0
dt
y(t0 ) = y0 , y(t1 ) = y1 , . . . ,
y(tn1 ) = yn1
MNCS
2014-2015
MNCS
2014-2015
EDO
1 Introduction
EDO
1 Introduction
1.5
ti = t0 + ih pour 1 6 i 6 n.
Solution numrique : ui = approximation de y(ti )
chantillonnage de la solution aux instants
= y(t0 ) impose,
faire une boucle sur les abscisses ti pour calculer lapproximation ui+1 ti+1
approximer ainsi de proche en proche la solution sur lintervalle L.
f
(t, y) 6 K dans un domaine convexe condition de Lipschitz vrifie.
y
Les erreurs darrondi amnent toujours rsoudre un problme perturb.
MNCS
EDO
1 Introduction
2014-2015
MNCS
EDO
2 Mthodes un pas
2
exacte
y
famille de solutions exactes
dpendant de y0
approx.
yi+1
erreur
cumule
ui+1
la solution
passant par (ti , ui )
ui
t0
MNCS
ti
ti+1
constant
linstant ti+1
Dcoupage de
longueur L selon
h2 d2 y
dy
(ti ) +
(ti ) +
dt
2 dt2
Ordre n de la mthode = plus grande puissance de h prise en compte dans
un pas fixe
lapproximation.
y(ti + h) = y(ti ) + h
lintervalle de
h = L/n.
(1)
Un pas :
ui ui+1
fonction est tabule, ne pas croire que diminuer le pas amliore toujours la
qualit du rsultat : un compromis doit tre trouv entre ces deux types derreurs.
t
6
Mthodes un pas
Mthode pas
ui = approximat.
de y(ti )
y0
2014-2015
2014-2015
MNCS
2014-2015
EDO
2 Mthodes un pas
EDO
2 Mthodes un pas
Mthode dEuler
(2)
ui+1 = ui + hf (ti , ui )
Exemple :
ui+1
dy
= y
dt
solution analytique
ui+1 = ui hui
Si
y = y0 et yn = y0 (eh )n
solution approche
un = y0 (1 h)
ncessite quune
ui
2
.
de la fonction second
k1
h
seule valuation
k1 h
k1 = f (ti , ui )
ti
ti+1
facilement instable
2
(pas h petit)
<
MNCS
EDO
2014-2015
2 Mthodes un pas
2.1.2
MNCS
EDO
ui+1 = ui hui+1
solution analytique
dy
= f (t, y(t))
dt
y = y0 et
d2 y
f dy
f
f
f
=
+
=
+f
2
dt
t
y dt
t
y
(4)
un =
solution approche
ui+1
ui
=
1 + h
y0
n
(1 + h)
h dy
(tm ) +
2 dt
h dy
y(ti ) = y(tm )
(tm ) +
2 dt
y(ti + h) = y(tm ) +
Si
10
1 h2 d2 y
(tm ) + O(h3 )
2 4 dt2
1 h2 d2 y
(tm ) + O(h3 )
2 4 dt2
(5a)
(5b)
Par diffrence, (approximation locale parabolique, voir aussi drive centre 2 termes)
MNCS
Exemple :
(3)
2014-2015
2 Mthodes un pas
2.2
dy
= y
dt
y(ti + h) y(ti ) = h
2014-2015
MNCS
11
dy
(tm ) + O(h3 )
dt
2014-2015
EDO
2 Mthodes un pas
2.2.1
EDO
ui+1
k2
h
h
= ui + hf ti + , ui + f (ti , ui )
2
2
(6a)
h
h
, u i + k1 )
2
2
= ui + hk2
2.2.2
qui
k1
ui
2014-2015
deux
ti + h/2
ti+1
MNCS
EDO
ncessite
ti
(6c)
explicite
valuations du second
k1 h/2
(6b)
12
2 Mthodes un pas
Mthode
k2
k2 = f (ti +
EDO
point milieu
k2 h
k1 = f (ti , ui )
MNCS
Mthode du
ui+1
ui+1
2 Mthodes un pas
13
2 Mthodes un pas
2014-2015
dy
dy
dy
(ti ) +
(ti+1 ) = 2 (tm ) + O(h2 )
dt
dt
dt
ui+1
h
= ui + [f (ti , ui ) + f (ti+1 , ui+1 )]
2
MNCS
k2 = f (ti+1 , ui + k1 h)
(7b)
h
[k1 + k2 ]
2
(7c)
h
[f (ti , ui ) + f (ti+1 , ui + hf (ti , ui ))]
2
14
(7a)
ui+1 = ui +
k1 = f (ti , ui )
2014-2015
MNCS
15
2014-2015
EDO
2 Mthodes un pas
EDO
2 Mthodes un pas
2.2.3
Mthode de Heun
ui+1
2
2
k2 = f (ti + h, ui + k1 h)
3
3
h
ui+1 = ui + [k1 + 3k2 ]
4
modifie
k2
k2 h/2
k2
prdit
k1 h/2
ui
k1
2.3
ti
ti + h/2
ti+1
(8a)
k1 = f (ti , ui )
Mthode dEuler
corrig
(8b)
(8c)
MNCS
16
EDO
2014-2015
2 Mthodes un pas
MNCS
17
EDO
2 Mthodes un pas
2.3.2
2.3.1
2014-2015
(10a)
k1 = f (ti , ui )
(9a)
k1 = f (ti , ui )
h
h
, u i + k1 )
2
2
k3 = f (ti + h, ui + (2k2 k1 )h)
k2 = f (ti +
MNCS
18
h
6
h
h
, ui + k1 )
2
2
h
h
k3 = f (ti + , ui + k2 )
2
2
k4 = f (ti + h, ui + k3 h)
(10b)
k2 = f (ti +
(9b)
(9c)
(9d)
2014-2015
MNCS
19
(10c)
(10d)
h
6
(10e)
2014-2015
EDO
2 Mthodes un pas
EDO
2 Mthodes un pas
2.5
dy
= y(1 y/2)
dt
fichier euler.dat ordre 1 erreur max 0.183E01 position de lerr max 0.286E+01
0.005
nombre de pas =
L/h
erreur globale
erreur locale/h
0.000
Mthode
Euler explicite
ordre
erreur locale
erreur globale
h2
Runge-Kutta 3
Runge-Kutta 4
h2
h5
h4
h4
h3
0.020
0
1/h
20
EDO
exact estim
10
12
14
16
18
20
temps
2014-2015
2 Mthodes un pas
0.010
0.015
pour h
MNCS
0.005
MNCS
21
EDO
2014-2015
2 Mthodes un pas
2.5.1
fichier rk4.dat ordre 4 erreur max 0.954E06 position de lerr max 0.190E+01
1e06
Valeur absolue de lerreur absolue pour y= y(1y/2) sur [0,20] y(0)=0.1 simple prcision
10
8e07
101
4e07
pente +1
102
0e+00
2e07
4e07
6e07
8e07
1e06
0
exact estim
10
12
14
16
18
dordre 4 pour h
pente +2
3
10
temps
104
pente +3
105
pente +4
106
107
104
22
pente 1
20
MNCS
euler sp
milieu sp
rk3 sp
rk4 sp
2e07
erreur maximale
6e07
2014-2015
MNCS
103
102
pas
23
101
100
2014-2015
EDO
2 Mthodes un pas
2.5.2
EDO
2 Mthodes un pas
2.5.3
100
100
10
10
pente +1
104
pente +2
106
erreur maximale
erreur maximale
104
108
pente +3
1010
1012
MNCS
EDO
108
1010
euler sp
milieu sp
rk3 sp
rk4 sp
euler dp
milieu dp
rk3 dp
rk4 dp
1014
euler dp
milieu dp
rk3 dp
rk4 dp
103
106
1012
pente +4
1014
1016
104
102
pas
24
101
1016
104
100
2014-2015
103
102
pas
25
MNCS
EDO
101
100
2014-2015
ui+1 = ui + h
la valeur initiale ont tendance tre plus fiables. Pour calculer ui+1 , on peut
m
X
j=1
j = 1
j=1
sappuyer non seulement sur la dernire valeur estime ui , mais sur les m prcdentes.
m
X
1/2
1/12
23
1/24
55
2
1
16
59
5
37
26
2014-2015
MNCS
27
2014-2015
EDO
EDO
ui+1 = ui +
3.1.2
h
[3f (ti , ui ) f (ti1 , ui1 )]
2
ui+1 = ui + h
Adams-Bashforth
k1 h/2
Mthode
h/2
dordre
3k0 h/2
k0
ui
ui1
ti1
ti
MNCS
ti+1
mais
1/2
1/12
1/24
19
deux
nouvelle
du
membre
mmoriser
les
3.1.3
1
5
seconds membres.
28
EDO
j = 1
chaque pas
m
X
j=0
second
3h/2
explicite
luation
k1
m
X
j=0
deux pas
ui+1
MNCS
29
EDO
2014-2015
10
101
euler sp
milieu sp
rk3 sp
rk4 sp
adamsbashforth2 sp
adamsbashforth3 sp
adamsbashforth4 sp
Principe : bnficier des qualits dune mthode implicite mais lappliquer une
estimation obtenue par une mthode explicite du mme ordre (voir Euler modifie).
prdiction de ui+1 par une mthode explicite
erreur maximale
102
10
104
10
10
107
104
MNCS
103
102
pas
30
101
100
2014-2015
MNCS
31
2014-2015
EDO
EDO
i (hq) 6
q6
y(ti+1 ) ui+1
hn
i =
h
y(ti+1 ) u?i+1
i? =
hn+1
h
u? ui+1
hn
i i+1
h
(11a)
h
u?i+1 ui+1
1/n
(14)
NB. : cette mthode suppose que le pas permet de ngliger lerreur darrondi.
(11b)
3.2.1
(11c)
Une mthode de Runge Kutta dordre 5 (6 valuations de f )
qn ?
i (hq) q i (h)
(u
ui+1 )
h i+1
n
(12)
32
EDO
(13)
MNCS
MNCS
33
EDO
2014-2015
Principe de lextrapolation
t0
2
h
h
+ a2
+
p1
p1
2
h
h
y(t + h) = v2 + a1
+ a2
+
p2
p2
t0 + L
y(t + h) = v1 + a1
Subdivisions successives
k=1
h/p2
k=2
de pas fin hk
h/p3
pkm pas
MNCS
Dveloppement polynomial de
lerreur de troncature en fonction
y(t + h) = w2,2 + b2
(hk
34
(15)
(16)
= h/pk de plus
en plus petits.
k=3
0).
w2,2 =
2014-2015
MNCS
h
p2
2
(17)
2014-2015
EDO
EDO
3.3.2
100
101
10
euler sp
milieu sp
rk3 sp
rk4 sp
milmod sp
gragg24sp
gragg28sp
erreur maximale
103
104
105
106
EDO
36
2014-2015
103
MNCS
37
EDO
101
4.2
102
pas
100
2014-2015
Lorsquune solution analytique est disponible (par exemple pour certaines valeurs
Ne pas oublier que chaque problme diffrentiel possde une ou plusieurs chelles
lordre de la mthode.
validation sappuie sur les mmes outils que les mthodes adaptatives :
temps trs diffrentes : leur intgration numrique savre dlicate et coteuse (pas
faible pour respecter le temps court, mais nombreux pour accder au temps long).
Il existe des mthodes spcifiques des EDO raides qui ne sont pas prsentes ici.
MNCS
38
2014-2015
MNCS
39
2014-2015
EDO
4.3
EDO
5.1
considrer les
vecteurs
# et #
y
f.
dy1
dt
dy2
dt
...
dyn
dt
membre, lit les paramtres (conditions initiales par ex.), dclenche et arrte
lintgration et stocke les rsultats.
4. un module comportant les fonctions seconds membres de lquation
diffrentielle et les ventuelles solutions analytiques exactes ou approches
5. un module dutilitaires notamment pour crire les rsultats dans un fichier pour
= f1 (t, y1 , y2 , . . . , yn )
y1
f1
y
f
2
2
et
. . .
. . .
yn
fn
= f2 (t, y1 , y2 , . . . , yn )
= ...
= fn (t, y1 , y2 , . . . , yn )
visualisation ultrieure.
MNCS
40
EDO
2014-2015
MNCS
41
EDO
2014-2015
avant de calculer...
#
dy
#
#)
= f (t, y
dt
# #
#
k2 = f (t1 + h/2, y# 1 + k1 h/2)
# #
k1 = f (t1 , y# 1 )
MNCS
k1,1
k1,2
...
...
k1,n
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)
#
#
#
u
i+1 = ui + h k2
2014-2015
MNCS
43
2014-2015
EDO
5.2
EDO
quations de Lotka-Volterra
Lotka Volterra
y2
k2
y1
k1
proies
prdateurs
10
0
0
20
(18b)
102
Populations
Populations
102
104
106
40
60
80
temps
Cycle stable
2014-2015
dy2
a2 y2 1 y1 /k1
=
dy1
a1 y1 1 y2 /k2
proies
prdateurs
106
20
40
60
80
100
46
100
En liminant le temps,
d ln y2
Pente avec peu de proies :
1/2 do facteur e4 1/54 sur une dure de 20 = 42 .
dt
d ln y1
Pente avec peu de prdateurs :
1/1 do facteur 100 sur dure de 4, 6 = 4, 61
dt
MNCS
80
temps
60
104
1010
100
40
2014-2015
prdateurs= f(proies)
7.0
7.0
6.0
6.0
5.0
5.0
prdateurs
20
20
EDO
108
45
prdateurs
1010
100
temps
8.0
108
80
102
100
60
MNCS
= k2 = 1, a1 = 1 et a2 = 0, 2.
100
40
temps
Lotka Volterra
proies
prdateurs
10
102
proies
prdateurs
15
Populations
Populations
15
2014-2015
(18a)
Lotka Volterra
Lotka Volterra
20
44
20
Solutions priodiques
EDO
= k2 = 1, a1 = 1, a2 = 0, 2, h = 0, 1
chelles linaires
MNCS
4.0
3.0
3.0
2.0
1.0
1.0
0.0
0
10
proies
15
4.0
2.0
0.0
prdateurs= f(proies)
20
10
proies
15
20
2014-2015
EDO
EDO
6.1
d2 y
dy
+ by + h(t)
=a
2
dt
dt
Poser
y1
y y0
2
. . . . . .
(n1)
yn
y
y0
2
=
. . .
yn0
MNCS
EDO
y10
y2
y
y
1 =
y0
y2
...
f (t, y1 , y2 , . . . , yn )
y3
MNCS
49
EDO
k 2 = g/l
d2 y
= k 2 y
dt2
(19)
sin(y) y
mg
1
2
(20)
Cas o y(0)
y
y
1 =
y2
y0
MNCS
y10
y2
=
y20
k 2 sin(y1 )
50
y(0)
y1 (0)
position angulaire
= dy
=
y2 (0)
vitesse angulaire
(0) = a
dt
2014-2015
d2 y
= k 2 sin(y)
dt2
y2
y10
=
ay2 + by1 + h(t)
y20
Remarque
48
Exemple
dn1 y
dn y
dy
, ...,
= f t, y,
dtn
dt
dtn1
Une EDO scalaire dordre n se ramne un systme de n quations diffrentielles
6.1 Exemple
dy
dt
2
+ k 2 (1 cos y) = constante
MNCS
51
2014-2015
EDO
0.25
1.5
1.0
0.10
0.5
dtheta/dt
theta
theta
0.05
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
0
0.25
0.20
0.15
10
15
20
estim
linaire
25
30
35
40
45
1.5
1.5
0
50
10
15
20
estim
linaire
temps
a = 0.2 1 linarisable
25
30
35
40
45
0.20
0.8
0.15
0.6
0.10
0.4
0.05
0.2
0.00
temps
0.2
0.10
0.4
0.15
0.6
0.8
0.05
0.10
0.15
0.20
1.0
1.5
0.25
a = 0.2 1 linarisable
50
0.0
0.05
0.25
0.25 0.20 0.15 0.10 0.05 0.00
estim
theta
linaris
50
1.0
estim
linaris
0.5
0.0
0.5
1.0
1.5
theta
2.0
2.5
2.0
1.5
40
1.0
0.20
5
dtheta/dt
EDO
1.5
1.0
1.0
30
20
1
1
10
2
2
0.5
dtheta/dt
0.5
dtheta/dt
theta
theta
0.0
0.0
0.5
0.5
1.0
1.0
3
3
0
10
15
20
estim
linaire
30
35
40
45
10
10
0
50
10
15
20
estim
linaire
temps
EDO
52
25
30
35
40
45
2.0
3
50
temps
a = 2.02 apriodique
2014-2015
MNCS
2.5
10
theta
53
0.3
0.5
0.0
dtheta/dt
0.1
dtheta/dt
0.5
0.0
0.5
0.5
0.1
0.5
0.2
0.2
1.0
1.0
0.2
1.0
0.3
0.3
0
1.5
1.5
0
0.3
0.3
20
25
30
35
40
45
50
10
15
20
25
30
35
40
45
50
temps
a=1
pendule + sol. linarise: mth. ordre 1 vitesse ang. init=1.98
mthode dordre 1
de 0.000000 50.000000 avec un pas de 0.01
valeurs initiales 0.0000000e+00 1.9800000e+00
5
estim
linaire
temps
2.0
0.1
0.0
0.1
0.2
1.5
1.5
0.3
theta
dtheta/dt
theta
20
0.5
1.5
0
20
25
30
35
40
45
10
10
0
50
10
estim
linaire
temps
54
0.0
1.5
2.0
40
40
15
1.0
10
10
1.5
0.5
35
35
estim
linaire
1.0
1.0
0.0
1.0
0.5
0.5
30
30
30
0.0
theta
1.5
0.5
25
25
0.5
2.0
1.0
20
20
2014-2015
1.0
estim
linaris
2.5
40
15
15
50
a=1
plan de phase pendule: mth. ordre 1 vitesse ang. init.=1.98
mthode dordre 1
de 0.000000 50.000000 avec un pas de 0.01
valeurs initiales 0.0000000e+00 1.9800000e+00
1.5
50
5
5
10
10
45
45
0
0.2
estim
linaris
a = 0.2
pendule + sol. linarise: mth. ordre 1 vitesse ang. init=2.02
mthode dordre 1
de 0.000000 50.000000 avec un pas de 0.01
valeurs initiales 0.0000000e+00 2.0200000e+00
60
40
0.0
0.1
0.1
15
30
1.5
0.1
10
20
theta
1.0
10
0.2
0.0
0
estim
linaris
a = 2.02 apriodique
1.0
a = 0.2
theta
0.2
estim
linaire
MNCS
1.5
theta
theta
0.3
EDO
2.0
2
estim
linaris
dtheta/dt
MNCS
25
1.5
1.5
a = 2.02
15
20
25
30
35
40
45
2.5
45
50
temps
2014-2015
MNCS
2.0
40
35
estim
linaris
30
25
20
15
10
2.5
10
theta
55
0
estim
linaris
a = 2.02
10
20
30
40
50
60
theta
2014-2015
EDO
7 Implmentation vectorielle
EDO
7 Implmentation vectorielle
7.2
#
y
7.1 Introduction
Les mthodes dintgration doivent fonctionner quelle que soit la taille p des
MODULE abstrait
ABSTRACT INTERFACE ! de la fct gnrique IInd mb de lEDO
function fty(t, y) ! dy/dt
real, dimension(:),intent(in) :: y ! variable vecteur
real, intent(in) :: t
real, dimension(size(y)) :: fty
! vecteur rsultat
end function fty
END INTERFACE
END MODULE abstrait
#
Ltendue p du vecteur rsultat f effectif sera donc fixe par le programme
#
principal via y et non par la fonction second membre.
#
#
vecteurs qui reprsentent la solution y et le second membre f de lEDO.
#
f (2 pour le pendule : drive et
#
drive seconde) seront calcules partir des p composantes de y .
MNCS
56
EDO
7 Implmentation vectorielle
# pour :
y
2014-2015
MNCS
EDO
57
7 Implmentation vectorielle
2014-2015
MNCS
58
2014-2015
3. Dans le programme principal (et dans la procdure dcriture sur fichier), les
solutions vectorielles (analytique et par intgration) sont reprsentes par des
tableaux 2D allous dynamiquement (n instants, p composantes).
Les tendues n et p sont donc choisies lexcution, sachant que p doit tre
correspondre au nombre effectif de composantes du second membre tudi.
Mais la dimension temporelle nest pas vue par les mthodes : elles
travaillent sur des vecteurs (dtendue p) dans un intervalle [ti , ti+1 ], i fix.
MNCS
59
2014-2015
EDO
7 Implmentation vectorielle
EDO
7 Implmentation vectorielle
2. pour chacune des mthodes un pas (Euler, point milieu et Runge Kutta) les
#
Utiliser des fonctions argument tableau 1D y de taille dtermine lexcution
#
et rendant un pointeur vers un tableau allou sur le tas de mme taille que y .
pentes locales ki seront des tableaux allous et librs localement, car leur
nombre dpend de la mthode ; en revanche, le rsultat
# #
f ( y , t) qui rend le pointeur vers ce tableau, dont le programme appelant
EDO
60
7 Implmentation vectorielle
#
u
i+1 qui est aussi
MNCS
2014-2015
MNCS
61
EDO
7 Implmentation vectorielle
2014-2015
7.4
3. Dans le programme principal (et dans la procdure dcriture sur fichier), les
Mais une fonction ne peut pas rendre un tableau fonctions rsultat void
elles travaillent sur des vecteurs de taille p dans un intervalle [ti , ti+1 ]. Cela
impose que les composantes des vecteurs soient contiges en mmoire, donc
# #
second_mb de taille p reprsentant f ( y
, t)
qui a t dclar par lappelant (la mthode) avec la taille fixe par le main
MNCS
62
2014-2015
63
2014-2015
EDO
7 Implmentation vectorielle
EDO
2. pour chacune des mthodes un pas (Euler, point milieu et Runge Kutta) les
#
u
i+1 qui est aussi vectoriel
tableaux 2D. Mais la dimension temporelle nest pas vue par les mthodes :
elles travaillent sur des vecteurs de taille p dans un intervalle [ti , ti+1 ]. Cela
64
EDO
RFRENCES
2014-2015
RFRENCES
impose que les composantes des vecteurs soient contiges en mmoire, donc
le deuxime indice est celui des composantes, le premier celui du temps.
MNCS
65
EDO
Rfrences
A KAI , T ERRENCE J., Applied Numerical Methods for Engineers, 410 pages (Wiley,
1 Introduction
2014-2015
. . . . . . . . . . . .
2 Mthodes un pas
978-2-88074-851-7.
MNCS
3. Dans le programme principal (et dans la procdure dcriture sur fichier), les
pentes locales ki seront des tableaux locaux automatiques, car leur nombre
dpend de la mthode ; en revanche, le rsultat
7 Implmentation vectorielle
66
2014-2015
MNCS
67
2014-2015
EDO
EDO
26
. . . . . . . . . . . . . . 17
. . . . . . . . . . . . . . 19
EDO
. . . . . . . . . . . . . . 31
MNCS
. . . . . 28
MNCS
38
69
EDO
2014-2015
. . . . . 40
7.1 Introduction
40
41
. . . . . . . . . . . . . . . . . . . . . 44
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Bibliographie
48
66
6.1 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.2 Exemple dEDO dordre 2 : le pendule
7 Implmentation vectorielle
MNCS
. . . . . . . . . . . . . . . . 50
56
70
2014-2015
MNCS
71
2014-2015