Vous êtes sur la page 1sur 27

Mthodes numriques de rsolution dquations direntielles

Brian Stout
brian.stout@fresnel.fr
Universit de Provence
Institut Fresnel, Case 161 Facult de St Jrme
Marseille, France
Fevrier 2007
Table des matires
1 Problme de Cauchy : 2
2 Transformations vers un problme de Cauchy 3
2.1 Traitement dune quation direntielle dordre > 1 . . . . . . . . . . . . . . . . . 3
2.2 Equations direntielles coecients constants . . . . . . . . . . . . . . . . . . . 4
2.3 Exemple - Vol dun point solide dans un champ de pesanteur. . . . . . . . . . . . 4
2.4 Dtermination des paramtres initiaux . . . . . . . . . . . . . . . . . . . . . . . . 7
3 Solutions numriques des quations direntielles 9
3.1 Formulation gnrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2 Mthode itrative de Picard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2.1 Exemple : mthode de Picard pour rsoudre lquation
d
dt
y (t) = t y (t) . 11
3.3 Mthodes bases sur la srie de Taylor . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3.1 Mthode dEuler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3.2 Mthodes de Taylor dordre plus levs . . . . . . . . . . . . . . . . . . . . 14
3.4 Runge Kutta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.4.1 Runge Kutta dordre 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.4.2 Runge Kutta : ordres 3 et 4 . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.4.3 Runge Kutta pas adaptatif et mthodes prdiction correction . . . . . . 21
3.5 Fonctions Euler et Runge Kutta adapte y R
m
. . . . . . . . . . . . . . . . . 21
4 Applications 22
4.1 Mcanique des points solides . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.1.1 Mouvement dun point solide avec forces de frottement : . . . . . . . . . . 22
4.1.2 Orbite dun satellite : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.2 Circuits lectriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.3 Evolution temporelle des populations . . . . . . . . . . . . . . . . . . . . . . . . . 26
1
Calcul Formel et Numrique : Licence sciences et technologies, deuxime anne Anne 2006-2007
Une quation direntielle est une quation qui dpend dune variable t et dune fonction x(t)
et qui contient des drives de x(t). Elle scrit :
F
_
t, x(t) , x
(1)
(t) , . . . , x
(m)
(t)
_
= 0 o x
(m)
(t)
d
m
x
dt
m
(1)
Lordre de cette quation est dtermin par sa drive dordre le plus lev. Donc lquation (1)
est dordre m.
La solution du problme consiste trouver une fonction x(t) qui soit solution de (1) et
drivable sur un intervalle ni de t [t
0
, t
0
+ T] de R. Souvent dans les applications, la variable
t reprsente le temps, et t
0
est alors linstant initial. En gnral, il nexiste une solution unique
une quation direntielle quune fois certaines conditions limites imposes sur x(t) et ses
drives. Dans lexemple de lquation (1) les conditions initiales sont les valeurs de x(t
0
),
x
(1)
(t
0
) , . . . , x
(m1)
(t
0
).
1 Problme de Cauchy :
La plupart des mthodes numriques pour rsoudre les quations direntielles sappliquent
des problmes du type problme de Cauchy suivant le nom donn par les mathmaticiens. Ce
problme se formule de la manire suivante :
Trouver y (t) dnie et drivable sur [t
0
, t
0
+ T] et valeurs dans R
m
telle que :
_
_
_
dy(t)
dt
= f (t, y (t)) t [t
0
, t
0
+ T]
y (t
0
) = y
0
(2)
o f (t, y (t)) est une fonction de R
m+1
dans R
m
et y
0
R
m
. Concrtement lexpression, trouver
y (t) valeurs dans R
m
avec y
0
R
m
consiste dire pour des applications comme Matlab, que
linconnue y (t) est un vecteur de m fonctions inconnues avec pour condition limite le vecteur
y
0
:
y (t) =
_

_
y
1
(t)
y
2
(t)
.
.
.
y
m
(t)
_

_
y
0
= y (t
0
) =
_

_
y
1
(t
0
)
y
2
(t
0
)
.
.
.
y
m
(t
0
)
_

_
=
_

_
y
0,1
y
0,2
.
.
.
y
0,m
_

_
(3)
De mme, f (t, y (t)) est une fonction de t et du vecteur y (t) et doit retourner un vecteur colonne :
dy (t)
dt

d
dt
_

_
y
1
y
2
.
.
.
y
m
_

_
= f (t, y (t))
_

_
f
1
f
2
.
.
.
f
m
_

_
(4)
Pour la plupart des problmes qui intressent les scientiques et les ingnieurs, des tho-
rmes mathmatiques assurent lexistence et lunicit dune solution au problme de Cauchy.
Nanmoins, souvent la solution ne peut tre exprime analytiquement. Pour de tels problmes,
on doit donc chercher dterminer la fonction y (t) par des mthodes numriques.
2
Calcul Formel et Numrique : Licence sciences et technologies, deuxime anne Anne 2006-2007
2 Transformations vers un problme de Cauchy
Dans Matlab (Octave), de puissant programmes (fonctions) existent sous le nom gnrique
de ODEs (Ordinary Dierential Equation Solvers). Ils rsolvent les systmes de la forme de
lquation (2). Le travail principal dun utilisateur de Matlab consiste donc le plus souvent
transformer son problme sous la forme de lquation (2). Dans bien des domaines, surtout ceux
des quations drives partielles, les transformations dun problme donn sous la forme dun
problme de Cauchy sont toujours dactualit comme problmes de recherche.
2.1 Traitement dune quation direntielle dordre > 1
Dans ce cours, nous ne regarderons que la transformation dune quation direntielle dordre
suprieur 1, en problme de Cauchy. Considrons donc une quation direntielle dordre m
de la forme suivante :
x
(m)
(t)
dx
(m1)
dt
=
_
t, x(t) , x
(1)
(t) , . . . , x
(m1)
(t)
_
t [t
0
, t
0
+ T] (5)
Posons de nouvelles fonctions y
i
(t) avec i [1, 2, . . . , m] dnies telles que :
y
1
(t) x(t) , y
2
(t) x
(1)
(t) , . . . , y
m
(t) x
(m1)
(t) (6)
Grce ces dnitions, lquation (5) dordre m scrit comme un systme de m quations
dordre 1 : _

_
dy
1
(t)
dt
= y
(2)
(t)
.
.
.
dy
m1
(t)
dt
= y
(m)
(t)
dym(t)
dt
= (t, y
1
(t) , y
2
(t) , . . . , y
m
(t))
(7)
Ce systme a donc la forme dun problme de Cauchy en posant :
y (t) =
_

_
y
1
(t)
.
.
.
y
m1
(t)
y
m
(t)
_

_
et f (t, y (t)) =
_

_
y
2
(t)
.
.
.
y
m
(t)
(t, y
1
, . . . , y
m
)
_

_
(8)
Lquation (5) scrira alors :
dy (t)
dt
= f (t, y (t)) t [t
0
, t
0
+ T] (9)
Pour obtenir alors un problme de Cauchy, il faut spcier les conditions initiales (y
1
(t
0
) , y
2
(t
0
) ,
..., y
m
(t
0
)) ce qui revient dire daprs lquation (6), quil faut connatre x(t) et ses drives
jusqu lordre m1 au temps initial t
0
:
_
x(t
0
) , x
(1)
(t
0
) , ..., x
(m1)
(t
0
)
_
. On remarque quune
quation direntielle dordre m dune seule fonction inconnue, x(t), se traduit par un problme
de Cauchy avec m fonctions inconnues, y
i
(t), et m conditions initiales.
3
Calcul Formel et Numrique : Licence sciences et technologies, deuxime anne Anne 2006-2007
2.2 Equations direntielles coecients constants
En particulier, les quations direntielles coecients constants constituent une classe
dquations de la forme de lq.(5). Notamment quand est de la forme :

_
t, x(t) , x
(1)
(t) , . . . , x
(m1)
(t)
_
= s (t) a
1
x(t) a
2
x
(1)
(t) ... a
m
x
(m1)
(t) (10)
lquation lq.(5) peut scrire comme une quation direntielle coecients constants :
a
1
x(t) + a
2
x
(1)
(t) + ... + a
m
x
(m1)
(t) + x
(m)
(t) = s (t) (11)
o la fonction s (t) est communment appele un terme source.
Pour des quations de la forme de lq.(11), les substitutions de lq.(6) amnent un systme
dquations de forme matricielle. Par exemple, une quation coecients constants dordre 4
scrit :
a
1
x(t) + a
2
x
(1)
(t) + a
3
x
(2)
(t) + a
4
x
(3)
(t) + x
(4)
(t) = s (t) (12)
Aprs les substitutions de lquation (6), cette quation scrit :
a
1
y
1
(t) + a
2
y
2
(t) + a
3
y
3
(t) + a
4
y
4
(t) +
d
dt
y
4
(t) = s (t) (13)
et lquation (9) peut scrire sous une forme matricielle :
d
dt
_

_
y
1
(t)
y
2
(t)
y
3
(t)
y
4
(t)
_

_
=
_

_
0 1 0 0
0 0 1 0
0 0 0 1
a
1
a
2
a
3
a
4
_

_
_

_
y
1
(t)
y
2
(t)
y
3
(t)
y
4
(t)
_

_
+
_

_
0
0
0
s (t)
_

_
(14)
Mme sil est intressant de voir ce type de problme comme une quation matricielle, nous ne
devons pas oublier que la formulation de lquation (9) nous permet de traiter bien des problmes
qui ne prennent pas la forme dune quation matricielle. On remarque aussi quil y a beaucoup
de zros dans lquation (14) et donc une multiplication de matrice nest pas la faon la plus
cace de programmer f (t, y (t)) (Voir la fonction (A) de la section 2.3 ci-dessous).
2.3 Exemple - Vol dun point solide dans un champ de pesanteur.
Imaginons quon cherche rsoudre numriquement le problme du mouvement dun point
solide de masse m la position

x (t) = x x+y y +z z ayant une vitesse

v =
d

x
dt
dans un champ
de pesanteur

g . (gure 1)
La mcanique du point nous dit quil sut dappliquer la relation fondamentale de la dyna-
mique au point solide :
m
d

v
dt
=

P = m

g (15)
Puisquil sagit dune quation vectorielle, nous avons en principe trois quations scalaires
rsoudre, mais nous savons que le vol du point seectue dans un plan parallle au plan dni
par (xOz). On arrive donc un systme de deux quations direntielles de deuxime ordre
rsoudre :
_
d
2
x
dt
2
= 0
d
2
z
dt
2
= g
(16)
4
Calcul Formel et Numrique : Licence sciences et technologies, deuxime anne Anne 2006-2007
v(t)
P
x
z
v
0
q
0
Fig. 1 Mouvement dun point de masse dans un champ de pesanteur
Avec les conditions limites
x(t
0
) = x
0
x
(1)
(t
0
) = v
0,x
z (t
0
) = z
0
z
(1)
(t
0
) = v
0,z
(17)
nous connaissons la solution exacte de chacune de ces deux quations :
x(t) = x
0
+ v
0,x
t
z (t) = z
0
+ v
0,z
t
1
2
gt
2
(18)
Nous voulons simplement tester notre capacit trouver la solution de faon numrique. La
connaissance dune solution exacte nous permet de tester direntes mthodes de rsolution
numrique dquations direntielles.
Pour rsoudre les quations direntielles dordre 2 de lq.(16) on va dnir des fonctions
du systme u(t) (pour ne pas confondre avec la position y (t)) et invoquer les substitutions de
lq.(6) :
u
1
(t) x(t)
u
2
(t) x
(1)
(t) = v
x
(t) (19)
Lquation
d
2
x
dt
2
= 0 devient donc le systme matriciel :
d
dt
_
u
1
(t)
u
2
(t)
_
=
_
0 1
0 0
_ _
u
1
(t)
u
2
(t)
_
(20)
De mme on peut dnir
u
3
(t) z (t)
u
4
(t) z
(1)
(t) = v
z
(t) (21)
et le systme
d
2
z
dt
2
= g devient :
d
dt
_
u
3
(t)
u
4
(t)
_
=
_
0 1
0 0
_ _
u
3
(t)
u
4
(t)
_
+
_
0
g
_
(22)
5
Calcul Formel et Numrique : Licence sciences et technologies, deuxime anne Anne 2006-2007
On peut regrouper ces deux quations sous la forme dune seule grande quation matricielle :
du
dt

d
dt
_

_
u
1
(t)
u
2
(t)
u
3
(t)
u
4
(t)
_

_
=
_

_
0 1 0 0
0 0 0 0
0 0 0 1
0 0 0 0
_

_
_

_
u
1
(t)
u
2
(t)
u
3
(t)
u
4
(t)
_

_
+
_

_
0
0
0
g
_

_
(23)
ou de manire quivalente :
du
dt
= f (t, u(t)) =
_

_
u
2
(t)
0
u
4
(t)
g
_

_
(24)
La solution de cette quation va donc nous fournir les fonctions : x(t) = u
1
(t), v
x
(t) = u
2
(t),
z (t) = u
3
(t), et v
z
(t) = u
4
(t). On peut facilement programmer une fonction en Octave/Matlab
pour calculer f (t, u(t)) :
function f = fprojectile(u,t) % en Matlab - function f = fprojectile(t,u)
% fonction f (t, u (t)) pour une particule dans un champ de pesanteur
nc = length(u) ;
f = zeros(nc,1) ; (A)
f(1) = u(2) ;
f(2) = 0 ;
f(3) = u(4) ;
f(4) = -9.8 ; % valeur de g
end
Important : Il est trs important que la fonction retourne un vecteur colonne. Les fonctions
Matlab (Octave) pour rsoudre une quation direntielle ne marchent pas si la fonction retourne
un vecteur ligne. Lcriture de la fonction fprojectile permet largument u dtre un vecteur
ligne ou un vecteur colonne. Il savre assez commode de prendre u comme un vecteur ligne.
Maintenant on peut utiliser la fonction lsode dOctave (ODE45 de MatLab) pour rsoudre
numriquement lquation direntielle. Cette fonction prend en argument le nom de la fonc-
tion f (t, u(t)), un vecteur contenant les valeurs de t = [t
0
, t
1
, . . . , t
N
] pour lesquelles on veut
connatre les valeurs de u(t), [u(t
0
) , u(t
1
) , . . . , u(t
N
)]. Pour certaines applications, on ne sin-
tressera qu une seule et unique valeur u(t
N
) ; dans ce cas, on donne simplement un vecteur
t = [t
0
, t
N
]. Dans les cas o il faut connatre une trajectoire, il faut que t = [t
0
, t
1
, . . . , t
N
]
contienne susamment dlments pour que les courbes gnres par plot paraissent lisses.
Le script suivant rsout lquation direntielle de lquation (16) avec les conditions initiales
x
0
= z
0
= 0 , v
0

_
_

v
0
_
_
= 100ms
1
,
0
( x,

v
0
) = 30

et montre la position de la particule


pour N + 1 = 31 temps compris entre 0 et 11s.
tmin = 0 ; % temps initial t
0
tmax = 11 ; % temps nale t
0
+ T
v0 =100 ; % vitesse intiale en mtres par seconde
thetdeg =30 ; % angle initial en degrs
x0 = 0 ; % position x
0
initiale
z0 = 0 ; % position z
0
initiale
vx0 = v0*cos(thetdeg*pi/180) ; % vitesse v
x,0
initiale
vz0 = v0*sin(thetdeg*pi/180) ; % vitesse v
z,0
initiale
Nint = 30 ; % nombre dintervalles : N
6
Calcul Formel et Numrique : Licence sciences et technologies, deuxime anne Anne 2006-2007
h = (tmax-tmin)/Nint ; % taille du pas h = t
n+1
t
n
(B)
t = linspace(tmin,tmax,Nint+1) ; % vecteur des t = [t
0
, t
1
, . . . t
N1
, t
N
= t
0
+ T]
u0 = [x0 vx0 z0 vz0] ; % conditions initiales u
0
= [x
0
v
0,x
z
0
v
0,z
]
usol =lsode("fprojectile",u0,t) ; % rsolution numrique par Octave
% [t,usol] = ODE45(fprojectile,t,u0) ; % rsolution numrique par Matlab
xpos = usol( :,1) ; % position des x : premire colonne de usol
zpos = usol( :,3) ; % position des z : troisime colonne de usol
plot(xpos,zpos,o) % plot de z en fonction de x.
Il faut remarquer que la matrice usol est une matrice avec N + 1 lignes pour les N + 1
valeurs de t
n
et 4 colonnes correspondant respectivement la position et la vitesse suivant x et
la position et la vitesse suivant z : u(t
n
) = [x(t
n
) , v
x
(t
n
) , z (t
n
) , v
z
(t
n
)]. On illustre sur la
gure (2) une comparaison entre la solution gnre par ODE45 de Matlab (lsode dOctave)
et la solution exacte. Lerreur absolue,
_
(u
1
(t
N
) x(t
N
))
2
(u
3
(t
N
) z (t
N
))
2
, sur la position
du point solide aprs 11 secondes de vol est de lordre de 10
13
m sous Matlab.
0 200 400 600 800 1000
60
40
20
0
20
40
60
80
100
120
140
Trac dun point solide T= 11s, N=20, t = 0.55 s
x

z

Fig. 2 Mouvement dun point de masse m, de vitesse v dans le champ de pesanteur g. Solution
de ODE45 avec x
0
= z
0
= 0, v
0
= 100ms
1
, et
0
= 30

2.4 Dtermination des paramtres initiaux


Un des buts souvent recherchs lors des calculs direntiels est de dterminer o doptimiser
les paramtres initiaux an dobtenir un certain comportement dsir de la solution. Par exemple,
dans le cas dun projectile on pourrait sintresser au problme suivant : pour quel angle de
lancement le projectile ira-t-il le plus loin? Dans ce cas, on pourrait donc crire une fonction
simple qui trouve de faon approximative, le point datterrissage du point solide. Une telle
fonction peut comporter dabord une boucle qui permet de trouver les deux instants entre
lesquels le projectile a d toucher le sol. Plus prcisment, la boucle chercherait linstant t
n
o
z(t
n
) > 0 et z(t
n+1
= t
n
+ h) < 0. On peut ensuite faire une approximation linaire entre ces
deux points, i.e. on cherche dterminer les coecients a et b dune fonction linaire z (t) = at+b
7
Calcul Formel et Numrique : Licence sciences et technologies, deuxime anne Anne 2006-2007
tels que :
z
n
z(t
n
) = at
n
+ b (25a)
z
n+1
z(t
n+1
) = at
n+1
+ b (25b)
En soustrayant lq.(25a) de lq.(25b), on obtient :
z
n+1
z
n
= a (t
n+1
t
n
) (26)
do on tire une expression pour a :
a =
z
n+1
z
n
(t
n+1
t
n
)
(27)
On remet cette expression pour a dans lq.(25a) et on trouve :
z
n
=
(z
n+1
z
n
) t
n
+ b (t
n+1
t
n
)
(t
n+1
t
n
)
(28)
ce qui donne aprs simplication :
b =
z
n
t
n+1
t
n
z
n+1
t
n+1
t
n
(29)
Le point datterrissage, t
a
, est donc le zro de la fonction linaire z (t
a
) = at
a
+b = 0, i.e. t
a
est donn par :
at
a
= b
t
a
=
z
n
t
n+1
t
n
z
n+1
(z
n
z
n+1
)
(30)
En gnral, la vitesse sur x nest pas constante, et on peut faire une approximation linaire sur
x(t) :
x
n
x(t
n
) = ct
n
+ d (31)
x
n+1
x(t
n+1
) = ct
n+1
+ d (32)
Une approximation la position horizontale (des x) au point datterrissage est maintenant :
x(t
a
) =
x
n+1
x
n
(t
n+1
t
n
)
t
a
+
x
n
t
n+1
t
n
x
n+1
t
n+1
t
n
(33)
Et le point datterrissage est :
(t
a
, x(t
a
) , z = 0) (34)
Le fonction point_atterrissage suivante crite sous Matlab (Ocatve) permet deectuer
ce calcul du point datterissage. Les arguments de cette fonction sont les trois vecteurs : t =
[t
0
, t
1
, . . . , t
N
], x = [x(t
0
), x(t
1
), . . . , x(t
N
)], et z = [z(t
0
), z(t
1
), . . . , z(t
N
)]. Elle ne fonctionne de
manire satisfaisante que si lintervalle t t
i+1
t
i
est susamment petit.
function [ta,xa] = point_atterrissage(t,x,z)
% trouver le point datterissage dun point solide
nc = length(t) ;
n = 1 ; % boucle pour trouver linterval [t_n,t_n+1] o z(t_n+1)< 0
8
Calcul Formel et Numrique : Licence sciences et technologies, deuxime anne Anne 2006-2007
while( z(n+1) > 0 && n<nc )
n = n+1 ;
end % while (C)
if (n ~= nc)
ta=( z(n)*t(n+1)-t(n)*z(n+1) ) / ( z(n)-z(n+1)) ;
Dt = t(n+1) - t(n) ;
xa = ta*(x(n+1) - x(n))/Dt + (t(n+1)*x(n)-t(n)*x(n+1)) /Dt ;
else
disp(Pas de point atterissage dans les donnes)
ta = -1 ;
xa = -1 ;
end %end if
end
On voit en gure (3) les traces des trajectoires et le point datterrissage de trois tirs avec
dirents angles de lancement avec v
0

_
_

v
0
_
_
= 100ms
1
. Bien entendu, en loccurrence un
calcul analytique simple nous permettrait de trouver langle optimal de lancement. Nanmoins,
des modlisations plus ralistes (ex. forces de frottement non-linaires) peuvent facilement mener
des situations o un calcul analytique devient impossible.
0 100 200 300 400 500 600 700 800 900
0
50
100
150
200
250
300
350
400
450
Porte dun projectile T= 20s, N=70
x

z

0
= 15portee =509.8m ta=5.3 s

0
= 30portee =883.6m ta=10.2 s

0
= 70portee =655.9m ta=19.2 s
Fig. 3 Traces des trajectoires et le point datterrissage de trois tirs avec dirents angles de
lancement.
Nous avons vu dans cette section lutilit davoir une rsolution able et rapide dquations
direntielles. Dans la prochaine section nous tudierons des mthodes de rsolution numrique
dquations direntielles.
3 Solutions numriques des quations direntielles
Il existe un grand nombre de faons de rsoudre une quation direntielle et aucune mthode
nest clairement suprieure toutes les autres dans toutes les circonstances. De nos jours, la
9
Calcul Formel et Numrique : Licence sciences et technologies, deuxime anne Anne 2006-2007
technique Runge Kutta dordre 4 et pas adaptatif est souvent utilise. Nous verrons les raisons
de ce choix dans ce qui suit. Nanmoins, les recherches dans ce domaine ne sont pas encore
termines et le dveloppement des techniques numriques continue, surtout pour les situations
o une trs grande prcision est demande.
Dans tout ce qui suit, il faut garder lesprit que dans le cas le plus gnral, y est un vecteur
colonne, et f (t, y (t)) est un vecteur dont les lments sont des fonctions. Nanmoins, an
de simplier la discussion, nous ne considrons dans les exemples que des quations simples
une seule fonction inconnue. Par la suite, dans la section 3.5, nous verrons les gnralisations
qui permettent de traiter multiples fonctions inconnues y
i
(t).
3.1 Formulation gnrale
On commence en remarquant quune solution formelle de lquation
d
dt
y (t) = f (t, y (t)) (35)
est obtenue en intgrant de t
0
t :
_
y(t)
y(t
0
)
dy =
_
t
t
0
f (s, y (s)) ds
y (t) y (t
0
) =
_
t
t
0
f (s, y (s)) ds (36)
donc la solution y (t) scrit
y (t) = y
0
+
_
t
t
0
f (s, y (s)) ds (37)
o y
0
y (t
0
). Le problme avec cette solution formelle est que linconnue y (t) se trouve sous
lintgrale.
3.2 Mthode itrative de Picard
Dans la mthode de Picard, on peut itrer lquation (37) an de gnrer une srie dapproxi-
mations y (t), dnotes
1
y (s),
2
y (s),
k
y (s),... . On initialise litration en prenant y (t) y
0
sous lintgrale :
1
y (t) = y
0
+
_
t
t
0
f (s, y
0
) ds
2
y (t) = y
0
+
_
t
t
0
f (s,
1
y (s)) ds
.
.
.
k
y (t) = y
0
+
_
t
t
0
f (s,
k1
y (s)) ds (38)
La mthode de Picard est surtout utilise dans les tudes mathmatiques des quations
direntielles. Nanmoins, cette mthode peut savrer intressante quand il est possible de faire
une intgration analytique de la suite
_
t
t
0
f (s,
k
y (s)) ds. Les logiciels de calcul symbolique comme
Mathmatica et Maple sont capable de calculer ce type dintgrale.
10
Calcul Formel et Numrique : Licence sciences et technologies, deuxime anne Anne 2006-2007
3.2.1 Exemple : mthode de Picard pour rsoudre lquation
d
dt
y (t) = t y (t)
Dans ce problme, il ny a quune seule fonction inconnue y (t). Ce problme est susamment
simple que lon puisse trouver une solution analytique. Prenons la condition limite (0, 1) i.e.
y (t
0
= 0) = 1 ; la solution analytique de lquation
d
dt
y (t) = t y (t) (39)
est obtenue par les techniques habituelles dquations direntielles coecients constants. Vous
pouvez vrier que la solution de (39) est :
y (t) = (y
0
+ 1) e
t
+ t 1 (40)
0 0.5 1 1.5 2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
t

y
(
t
)

Mthode de Picard : y = ty
y(t)
1
y
2
y
3
y
Fig. 4 Mthode de Picard. Comparaison des solutions de
d
dt
y (t) = t y (t) avec les approxi-
mations de Picard
1
y,
2
y,
3
y.
Avec la condition limite (0, 1) i.e. y (t
0
= 0) = 1, la mthode de Picard donne la suite :
1
y (t) = 1 +
_
t
0
(s 1) ds = 1 t +
t
2
2
2
y (t) = 1 +
_
t
0
_
s
_
1 s +
s
2
2
__
ds = 1 t + t
2

t
3
6
3
y (t) = 1 +
_
t
0
_
s
_
1 t + t
2

t
3
6
__
ds = 1 t + t
2

t
3
3
+
t
4
24
.
.
. (41)
En dpit de son ecacit, la mthode de Picard nest intressante que pour un nombre limit
de problmes o nous sommes capables deectuer analytiquement les intgrations. On prfre
11
Calcul Formel et Numrique : Licence sciences et technologies, deuxime anne Anne 2006-2007
en gnral des techniques qui sont de nature plus numrique mais de domaine dapplication plus
vaste.
Sur la gure (4), on reprsente une comparaison des solutions de la suite de Picard de lqua-
tion (41) la solution exacte. Ce graphique est gnr par le code scripte, (D), ci-dessous. La
srie de solutions de Picard illustre une proprit souvent rencontre par des solutions num-
riques aux quations direntielles, notamment que plus lintervalle T sur lequel on veut trouver
la solution est grande, plus la solution numrique risque de sloigner de la solution exacte quand
t T. Nanmoins on doit garder lesprit que lampleur de ce phnomne dpend de la nature
de lquation direntielle et de la mthode employe pour rsoudre lquation.
La Figure (4) est gnre par le code suivant :
function Picard(tmax,Nint)
% Compare les 3 premiers termes dans la suite de Picard ...
% avec la solution exacte de y = t y conditions limites (0, 1)
% ici t
0
= 0 , et y
0
= 1
t = linspace(0,tmax,Nint+1) ; (D)
yanal = 2*exp(-t) + t - 1 ; % solution analytique
y1 = 1 - t + t.^2/2 ; % Approximation de Picard :
1
y
y2 = 1 - t + t.^2 - t.^3/6 ; % Approximation de Picard :
2
y
y3 = 1 - t + t.^2 - t.^3/3 + t.^4/24 ; % Approximation de Picard :
3
y
axes(FontSize,14) ;
plot(t,yanal,t,y1, :,t,y2,-.,t,y3,.,LineWidth,2) ;
xlabel( t ,FontSize,16) ;
ylabel( y(t) ,FontSize,16) ;
legend(y(t),_1y,_2y,_3y)
end
On doit remarquer que nous avons simpli notre traitement de la suite de Picard par un
choix judicieux des conditions initiales. Les choses se compliquent un peu si lon veut utiliser la
suite de Picard pour y
0
et t
0
arbitraires :
1
y (t) = y
0
+
_
t
t
0
(s 1) ds = y
0
+ y
0
(t
0
t) +
1
2
_
t
2
t
2
0
_
2
y (t) = y
0
+
_
t
t
0
_
s
_
y
0
+ y
0
(t
0
s) +
1
2
_
s
2
t
2
0
_
__
ds
= y
0
+
1
6
_
t
2
(3 t) + 3
_
t
2
2 t + 2
_
y
0
+ 6 (1 t) t
0
y
0
+ 3 t
2
0
(t + y
0
1) 2 t
3
0
_
.
.
. (42)
3.3 Mthodes bases sur la srie de Taylor
Les mthodes bases sur la srie de Taylor se prtent bien des traitements numriques.
Commenons par subdiviser lintervalle [t
0
, t
0
+ T] en N sous intervalles de mme longueur h et
appelons t
n
les points de subdivision. Nous avons donc :
h =
T
N
et t
n
= t
0
+ nh pour n = 0, . . . , N (43)
Par consquent en MatLab, t est un vecteur avec N + 1 lments :
t = [t
0
, . . . , t
N
] (44)
12
Calcul Formel et Numrique : Licence sciences et technologies, deuxime anne Anne 2006-2007
Le dveloppement de la srie de Taylor de y (t
n+1
) jusqu lordre m autour du point t
n
scrit :
y (t
n+1
) = y (t
n
) + hy
(1)
(t
n
) +
h
2
2!
y
(2)
(t
n
) + . . . +
h
m
m!
y
(m)
(t
n
) + O
_
h
m+1
_
(45)
3.3.1 Mthode dEuler
Si on arrte la srie de Taylor lordre 1 on obtient :
y (t
n+1
) y (t
n
) + hy
(1)
(t
n
) (46)
Lapplication de cette formule pour calculer les y (t
n
) est connue comme mthode dEuler. On
remarque que lerreur commise chaque tape est de lordre de O
_
h
2
_
. Il est clair quon peut
augmenter la prcision de cette mthode en diminuant la taille de h, mais un h petit implique
quon doit valuer la fonction un grand nombre de fois ce qui est coteux en temps dexcution.
Qui plus est, un grand nombre dvaluations de la fonction peut provoquer un cumul des erreurs
numriques commises par la machine.
En Matlab, on peut facilement programmer la mthode dEuler avec la fonction suivante :
function [t,y] = Euler(f,tmin,tmax,Nint,y0) % Mthode dEuler
% Nint - nombre de sous intervalles N
% tmin - temps t
0
% tmax - temps t
0
+ T
% f est une fonction avec comme arguments t et y(t) : f(t, y(t))
% y0 lentre est compos des valeurs des conditions limites y
0
= y (t
0
) (E)
h = (tmax-tmin)/Nint ; % valeur du pas
t = linspace(tmin,tmax,Nint+1) ; % vecteur de t discrtis t=[tmin,tmax]
y(1) = y0 ; % initialisation : y(1)=y(t
0
) = y
0
for n = 2 : Nint+1
y(n) =y(n-1) + h*feval(f,t(n-1),y(n-1)) ; % Calcul dEuler
end % for n
end % fonction Euler
La fonction Euler retourne le vecteur t = [t
0
, . . . , t
N
] et un vecteur y contenant les y (t
n
)
chacun des temps t
n
de lintervalle t [t
0
, t
0
+ T].
A noter : nous avons utilis la fonction MatLab (Octave) feval. La fonction feval("fcnt",x)
est une commande de Octave (MATLAB) qui value la fonction de nom fcnt et dargument x .
Exemple : y=feval("sin",x) est quivalente y=sin(x). Lutilisation de feval nous permet
dcrire une fois pour toutes la mthode dEuler et de passer le nom de la fonction valuer
comme un argument de la fonction Euler.
Exemple numrique :
Utilisons la mme quation teste que dans lexemple de la mthode de Picard :
dy
dt
= t y (t).
Essayons dabord avec N = 20 intervalles. En MatLab (Octave) entrez :
>> f = inline(t - y,t,y) ;
>> [t,yEul20] = Euler( f, 0, 2, 20, 1) ;
o la fonction inline est une faon rapide de crer une fonction simple comme f = t y sans
avoir crer un chier f.m de cette fonction.
On peut gnrer les valeurs exactes de la solution de cette quation par les commandes
suivantes :
>> yt = inline((y0+1)*exp(-t) + t - 1,t,y0) ;
13
Calcul Formel et Numrique : Licence sciences et technologies, deuxime anne Anne 2006-2007
>> yexact = yt(t,y0) ;
Finalement, on peut comparer graphiquement la solution gnre par la mthode dEuler avec
la solution exacte grce aux commandes :
>> plot(t,yexact,t,yEul20, :) ;
>> legend(y(t), Euler ) ;
Le vecteur t est donc ici t = [t
0
= 0, t
1
, . . . , t
N
= 2] et yEul20 est la solution par la mthode
dEuler avec 20 intervalles.
Bien entendu, on peut amliorer la solution dEuler en diminuant h (i.e. en augmentant le
nombre dintervalles). On voit sur la gure (5) une comparaison des solutions de y

= t y par
la mthode dEuler pour N = 20 et N = 50 pour t [0, 2].
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
0.7
0.8
0.9
1
1.1
1.2
1.3
1.4
t

y
(
t
)

Mthode dEuler y = t y
y(t) exacte
N=20 h=0.10
N=50 h=0.04
Fig. 5 Mthode dEuler. Comparaison des solutions de
d
dt
y (t) = t y (t) avec les approxima-
tions par mthode dEuler.
Vous avez peut-tre remarqu quici la solution par Euler sapproche de la solution exacte
pour les grands t. Ce phnomne est une proprit de lquation direntielle particulirement
simple que nous tudions ici, et non une proprit gnrale des solutions par mthode dEuler.
3.3.2 Mthodes de Taylor dordre plus levs
En considrant lquation (45), et en augmentant le nombre de termes inclus dan la srie de
Taylor on sattend une amlioration de la solution numrique. Pour ceci, nous avons besoin
des drives dordre suprieur 1. On peut les obtenir en drivant lquation direntielle de
14
Calcul Formel et Numrique : Licence sciences et technologies, deuxime anne Anne 2006-2007
base :
dy
dt
y
(1)
= f (t, y (t))
d
2
y
dt
2
y
(2)
=
d
dt
f (t, y (t))
y
(3)
=
d
2
dt
2
f (t, y (t))
.
.
.
y
(m)
=
d
m1
dt
m1
f (t, y (t)) (47)
Le dveloppement de la srie de Taylor (45), nous montre que lerreur commise par une mthode
de Taylor dordre m est O
_
h
m+1
_
. Nanmoins, il est incorrect de penser que plus m est grand
mieux cest, puisque les calculs chaque tape deviennent plus lourds au fur et mesure que m
augmente (voir (F) ci dessous). Il est communment admis quil nest pas protable de prendre
m > 4.
Pour notre quation y
(1)
= t y traite dans les exemples prcdents, ce procd pour
dterminer les y
(m)
avec m > 1 est facile :
y
(1)
= t y
y
(2)
= 1
d
dt
y (t) = 1 t + y (t)
y
(3)
=
d
dt
(1 t + y (t)) = 1 + t y
y
(4)
=
d
dt
(1 + t y (t)) = 1 t + y
.
.
. (48)
La fonction Matlab suivante calcule les approximations solution de y
(1)
= t y faites avec la
srie de Taylor jusqu lordre 4.
function Taylor(tmin,tmax,Nint,y0) % Approximations par srie de Taylor
% Nint - nombre de sous intervalles N
% tmin - temps t
0
; tmax - temps t
0
+ T
% On trait ici lquation y = t y(t)
h = (tmax-tmin)/Nint ; % valeur du pas
t = linspace(tmin,tmax,Nint+1) ; % vecteur de t discrtis t=[tmin,tmax]
yt = inline((y0+1)*exp(-t) + t - 1,t,y0) ; % solution exact (F)
texa = linspace(tmin,tmax,101) ; % discrtisation de t pour lachage de la solution exacte
yexact = yt(texa,y0) ;
y1 = inline(t - y,t,y) ; % y
(1)
y2 = inline(1 - t + y,t,y) ; % y
(2)
y3 = inline(-1 + t - y,t,y) ; % y
(3)
y4 = inline(1 - t + y,t,y) ; % y
(4)
yT1(1) = y0 ; % yT1 contient les solutions de y - Approximation dEuler
yT2(1) = y0 ; % yT2 contient les solutions de y Approximation de Taylor ordre 2
yT3(1) = y0 ; % yT3 contient les solutions de y Approximation de Taylor ordre 3
15
Calcul Formel et Numrique : Licence sciences et technologies, deuxime anne Anne 2006-2007
yT4(1) = y0 ; % yT4 contient les solutions de y Approximation de Taylor ordre 4
for n = 2 :Nint+1 % Calcul approximation dEuler
yT1(n) = yT1(n-1) + h*y1(t(n-1),yT1(n-1)) ;
end % for n
for n = 2 :Nint+1 % Calcul de lapproximation de Taylor ordre 2
yT2(n) = yT2(n-1) + h*y1(t(n-1),yT2(n-1)) + (h^2/2)*y2(t(n-1),yT2(n-1)) ;
end % for n
for n = 2 :Nint+1 % Calcul de lapproximation de Taylor ordre 3
yT3(n) = yT3(n-1) + h*y1(t(n-1),yT3(n-1)) + ...
+(h^2/2)*y2(t(n-1),yT3(n-1))+(h^ 3/6)*y3(t(n-1),yT3(n-1)) ;
end % for n
for n = 2 :Nint+1 % Calcul de lapproximation de Taylor ordre 4
yT4(n) = yT4(n-1) + h*y1(t(n-1),yT4(n-1)) + ...
+(h^2/2)*y2(t(n-1),yT4(n-1))+(h^ 3/6)*y3(t(n-1),yT4(n-1)) + ...
+ (h^4/24)*y4(t(n-1),yT4(n-1)) ;
end % for n
% plot : crer un graphique avec les rsultats des 4 courbes
axes(FontSize,14) ;
plot(texa,yexact,t,yT1,t,yT2,t,yT3,t,yT4,+,LineWidth,2)
xlabel( t ,FontSize,16) ;
ylabel( y(t) ,FontSize,16) ;
legend(y(t) exacte,Euler (ordre 1),Taylor ordre 2,Taylor ordre 3,Taylor ordre 4) ;
tit = sprintf(Mthodes de Taylor y=t-y : N=%d, h=%.2f,Nint,h) ;
title(tit) ;
end
On peut maintenant trouver la solution de y
(1)
= t y avec t [0, 2] et N = 20 avec la
commande :
>> Taylor(0,2,20,1) ;
Le rsultat apparat en gure (6). On voit qu partir de lordre 2 de Taylor, on ne voit plus
de dirence entre les approximations bases sur la mthode de Taylor et la solution exacte
lchelle de la gure, alors que la dirence entre lapproximation dEuler et la solution exacte
est considrable. On peut essayer de faire apparatre les dirences entre les calculs dirents
ordres de la srie de Taylor en augmentant le pas de h = 0.1 h = 0.4 avec la commande :
>> Taylor(0,2,5,1) ;
Le rsultat de cette commande apparat sur la gure (7). On constate que mme avec ce pas
assez grand, les 5 valeurs calcules par la mthode de Taylor lordre 4 reste sur la courbe de
la solution exacte.
3.4 Runge Kutta
Ayant constat les amliorations oertes par le dveloppement de Taylor, on doit remarquer
un problme important. Pour se servir de la mthode de Taylor, il faut calculer les fonctions
y
(m)
(t) dordre m > 1 la main en prenant les drives de lquation de base y

= f (t, y (t)).
Par consquent, avec les mthodes de Taylor on doit recommencer cette tape chaque fois quon
change la fonction f. Cette opration est lourde et loin dtre pratique.
16
Calcul Formel et Numrique : Licence sciences et technologies, deuxime anne Anne 2006-2007
0 0.5 1 1.5 2
0.7
0.8
0.9
1
1.1
1.2
1.3
1.4
t

y
(
t
)

Mthodes de Taylor y=ty : N=20, h=0.10
y(t) exacte
Euler (ordre 1)
Taylor ordre 2
Taylor ordre 3
Taylor ordre 4
0 0.5 1 1.5 2
0.7
0.8
0.9
1
1.1
1.2
1.3
1.4
t

y
(
t
)

Mthodes de Taylor y=ty : N=20, h=0.10
y(t) exacte
Euler (ordre 1)
Taylor ordre 2
Taylor ordre 3
Taylor ordre 4
0 0.5 1 1.5 2
0.7
0.8
0.9
1
1.1
1.2
1.3
1.4
t

y
(
t
)

Mthodes de Taylor y=ty : N=20, h=0.10
y(t) exacte
Euler (ordre 1)
Taylor ordre 2
Taylor ordre 3
Taylor ordre 4
Fig. 6 Mthodes bases sur la srie de Taylor avec h = 0.1.
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
0.5
0.6
0.7
0.8
0.9
1
1.1
1.2
1.3
t

y
(
t
)

Mthodes de Taylor y=ty : N=5, h=0.40
y(t) exacte
Euler (ordre 1)
Taylor ordre 2
Taylor ordre 3
Taylor ordre 4
Fig. 7 Mthodes bases sur la srie de Taylor avec h = 0.4.
17
Calcul Formel et Numrique : Licence sciences et technologies, deuxime anne Anne 2006-2007
La mthode Runge Kutta tire les avantages des mthodes de Taylor tout en gardant une
simplicit dexcution de la mthode dEuler. En pratique, Runge Kutta remplace lvaluation
analytique des ordres y
(m)
, m > 1 par des drives numriques obtenues en valuant la fonction
f (t, y (t)) dirents endroits an dobtenir presque les mmes rsultats que ceux obtenu avec
la mthode de Taylor.
3.4.1 Runge Kutta dordre 2
Rappelons la mthode dEuler
y (t
n+1
) = y (t
n
) + hf (t
n
, y (t
n
)) (49)
La mthode dEuler permet ainsi de calculer y (t
n
+ h) en fonction de y (t
n
) et la drive en y (t
n
).
Cette mthode nest pas symtrique par rapport lintervalle puisquil ne fait pas intervenir
linformation sur la drive en n dintervalle, i.e. f (t
n
, y (t
n+1
)) nintervient pas.
La mthode Runge Kutta est plus symtrique puisquelle revient valuer numriquement
la drive au centre de lintervalle. Les quations de cette mthode sont :
k
1
hf (t
n
, y (t
n
))
k
2
hf
_
t
n
+
1
2
h, y (t
n
) +
1
2
k
1
_
y (t
n+1
) = y (t
n
) + k
2
+ O
_
h
3
_
(50)
Une faon de programmer la mthode Runge Kutta dordre 2 est la suivante :
function [t,y] = RK2(f,tmin,tmax,Nint,y0) % Mthode de Runge Kutta dordre 2
% Nint - nombre de sous intervalles
% tmin - temps t0
% tmax - temps t0 + T
% f est une fonction avec comme arguments t et y : f(t,y(t))
% y0 contient les valeurs des conditions limites
h = (tmax-tmin)/Nint ; % valeur du pas (G)
t = linspace(tmin,tmax,Nint+1) ; % vecteur de t discrtis t=[tmin,tmax]
y(1) = y0 ; % y contient les solutions de y(t
n
)n = 1, ..., Nint + 1
for n = 2 :Nint+1
k1 = h*feval(f,t(n-1),y(n-1)) ;
k2 = h*feval(f,t(n-1)+h/2,y(n-1)+k1/2) ;
y(n) = y(n-1) + k2 ;
end % for n
end
Comme la mthode dEuler, les mthodes de Runge Kutta peuvent tre appliques une
fonction arbitraire. La quasi-quivalence de la mthode Runge Kutta dordre 2 avec la mthode
de Taylor dordre 2 nest pas vidente sans quelques manipulations mathmatiques (voir ci-
dessous). Nanmoins, on peut rapidement vrier que leur comportement au niveau numrique
est similaire. Pour notre exemple habituel, y

= t y, nous comparons en gure (8) les rsultats


des deux mthodes en utilisant un grand pas, h = 0.4.
18
Calcul Formel et Numrique : Licence sciences et technologies, deuxime anne Anne 2006-2007
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
0.7
0.8
0.9
1
1.1
1.2
1.3
1.4
t

y
(
t
)

Runge Kutta ordre 2 (y = t y) : N=5 h=0.40
y(t) exacte
Runge Kutta : ordre 2
Mthode de Taylor : ordre 2
Fig. 8 Comparaison de la mthode de Runge Kutta dordre 2 avec la srie de Taylor dordre
2 avec h = 0.4.
Drivation de Runge Kutta dordre 2 Avec un peu deort, on peut driver les formules de
Runge Kutta partir des formules de Taylor et les formules des drives par dirences nies.
Prenons un dveloppement en srie de Taylor autour du point (

t, y) au centre de lintervalle
t
n
, t
n+1
.

t t
n
+
h
2
y y
_
t
n
+
h
2
_
(51)
La srie de Taylor dveloppe autour de ce point scrit en remplaant t
n
t
n
+
h
2
, et h
h
2
dans le dveloppement de Taylor de lq.(45) :
y (t
n
+ h) = y
_
t
n
+
h
2
_
+
h
2
y
(1)
_
t
n
+
h
2
_
+
h
2
8
y
(2)
_
t
n
+
h
2
_
+ O(h
3
)
= y +
h
2
f
_
t
n
+
h
2
, y
_
+
h
2
8
y
(2)
_
t
n
+
h
2
_
+ O(h
3
) (52)
Maintenant, on remplace y
(2)
_
t
n
+
h
2
_
par sa drive par dirences discrtes :
y
(2)
_
t
n
+
h
2
_
=
4
h
2
_
y (t
n
+ h) 2y
_
t
n
+
h
2
_
+ y (t
n
)
_
+ O(h)
=
4
h
2
[y (t
n
+ h) 2 y + y (t
n
)] + O(h) (53)
Insrant ce rsultat dans lquation (52), on obtient :
y (t
n
+ h) = y +
h
2
f
_
t
n
+
h
2
, y
_
+
1
2
[y (t
n
+ h) 2 y + y (t
n
)] + O(h
3
)
=
h
2
f
_
t
n
+
h
2
, y
_
+
1
2
y (t
n
+ h) +
1
2
y (t
n
) + O(h
3
) (54)
19
Calcul Formel et Numrique : Licence sciences et technologies, deuxime anne Anne 2006-2007
ce qui peut scrire :
y (t
n
+ h) = y (t
n
) + hf
_
t
n
+
h
2
, y
_
+ O(h
3
) (55)
mais la srie de Taylor dordre un nous donne le rsultat suivant :
y y
_
t
n
+
h
2
_
= y (t
n
) +
h
2
f (t
n
, y (t
n
)) + O(h
2
)
y (t
n
) +
h
2
k
1
+ O(h
2
) (56)
o nous avons utilis la dnition de k
1
(voir lq.(50) ). Avec ce rsultat, on peut faire lap-
proximation :
hf
_
t
n
+
h
2
, y
_
= hf
_
t
n
+
h
2
, y (t
n
) +
h
2
k
1
_
+ O(h
3
)
hk
2
+ O(h
3
) (57)
et lquation (55) devient nalement la formule de Runge Kutta dordre 2 :
y (t
n
+ h) = y (t
n
) + hk
2
+ O(h
3
). (58)
3.4.2 Runge Kutta : ordres 3 et 4
Les drivations de Runge Kutta aux ordres 3 et 4 sont fastidieuses. Heureusement leurs
formules sont faciles programmer et nous nous contentons dutiliser les rsultats.
La formule Runge-Kutta lordre 3 est :
k
1
= hf (t
n
, y (t
n
))
k
2
= hf
_
t
n
+
1
2
h , y (t
n
) +
1
2
k
1
_
k
3
= hf (t
n
+ h , y (t
n
) + 2k
2
k
1
)
y (t
n+1
) = y (t
n
) +
1
6
(k
1
+ 4k
2
+ k
3
) + O
_
h
4
_
(59)
La formule Runge-Kutta lordre 4 est de loin la plus utilise. Elle a une forme assez symtrique :
k
1
= hf (t
n
, y (t
n
))
k
2
= hf
_
t
n
+
1
2
h , y (t
n
) +
1
2
k
1
_
k
3
= hf
_
t
n
+
1
2
h , y (t
n
) +
1
2
k
2
_
k
4
= hf (t
n
+ h , y (t
n
) + k
3
)
y (t
n+1
) = y (t
n
) +
1
6
(k
1
+ 2k
2
+ 2k
3
+ k
4
) + O
_
h
5
_
(60)
La technique Runge-Kutta lordre 4 intervient dans la plupart des programmes ODE (Ordinary
Dierential Equations) comme ceux utiliss par Matlab et Octave.
On montre maintenant en gure (9) quen pratique Runge-Kutta lordre 4 donne presque
les mmes rsultats que la technique de Taylor dordre 4.
20
Calcul Formel et Numrique : Licence sciences et technologies, deuxime anne Anne 2006-2007
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
0.7
0.8
0.9
1
1.1
1.2
1.3
1.4
t

y
(
t
)

Runge Kutta ordre 4 (y = t y) : N=5 h=0.40
y(t) exacte
Runge Kutta : ordre 4
Mthode de Taylor : ordre 4
Fig. 9 Comparaison de la mthode Runge Kutta dordre 4 avec la srie de Taylor ordre 4 avec
h = 0.4.
On remarque que Runge-Kutta dordre 4 fait deux fois plus dvaluations de la fonction f
que Runge-Kutta dordre 2. Par consquent RK4 nest vraiment meilleur que RK2 que si RK4
donne de meilleurs rsultats que RK2 avec un pas deux fois plus grand. Ceci est souvent le cas,
mais pas toujours.
3.4.3 Runge Kutta pas adaptatif et mthodes prdiction correction
Mme si lerreur produite par la mthode Runge Kutta est de lordre de O
_
h
5
_
, il reste la
question du choix de h an davoir le meilleur compromis entre prcision et temps de calcul. Il
est intuitivement clair que lon peut choisir un h relativement grand dans une rgion o y (t)
varie plutt lentement, mais un petit h est ncessaire quand il y a de fortes variations de y (t).
Matlab utilise une mthode Runge Kutta dordre 4 pas adaptatif dans ODE45 pour rsoudre
les quations direntielles. Dans les situations o une grande prcision est ncessaire, des m-
thode dites prdiction correction sont souvent plus ecace que mme Runge Kutta dordre 4.
Nanmoins, les mthodes prdiction correction ont besoin dune premire solution approximative
pour dmarrer leurs algorithmes. Souvent donc, Runge Kutta est invoqu par les algorithmes
prdiction correction pour fournir une premire solution approximative.
3.5 Fonctions Euler et Runge Kutta adapte y R
m
On peut facilement crire les fonctions dEuler et de Runge-Kutta an quelles marchent
pour un nombre de fonctions inconnues, y
i
(t), arbitraires. Pour faciliter les comparaisons, on
crira ces fonctions an quelles retournent des valeurs dans le mme format que ODE45 (de
MatLab), ou (lsode dOctave) cest--dire dans une matrice compose de N + 1 lignes et une
colonne pour chaque fonction inconnue y
i
(t), i [1, m].
function [t,y] = Euler(f,tmin,tmax,Nint,y0) % Mthode dEuler
% Nint - nombre de sous intervalles
% tmin - temps t
0
21
Calcul Formel et Numrique : Licence sciences et technologies, deuxime anne Anne 2006-2007
% tmax - temps t
0
+ T
% f est une fonction avec comme arguments t et un vecteur y : f(t, y(t))
% y0 contient les valeurs des conditions initiales
h = (tmax-tmin)/Nint ; (H)
t =linspace(tmin,tmax,Nint+1) ; % vecteur de t discrtis t=[tmin,tmax]
t = t ;
nc = length(y0) ;
y = zeros(Nint+1,nc) ; % initialisation dune matrice de solution
y(1, :) = y0 ; % la ligne y(1, :) contient les conditions initiales y
0
for n = 2 :Nint+1
y(n, :) = y(n-1, :) + h*feval(f,t(n-1),y(n-1, :)) ; % Calcul dEuler
end % for n
end
On peut facilement modier les fonctions Runge Kutta de la mme manire an dobtenir
des fonctions qui acceptent y
0
comme un vecteur et donnent les solutions pour y
i
(t), i [1, m].
4 Applications
4.1 Mcanique des points solides
LEquation fondamentale de la dynamique

F = m

a, nous donne typiquement des qua-


tions direntielles de deuxime ordre.
4.1.1 Mouvement dun point solide avec forces de frottement :
Soit une particule de masse m, de poids

P = m

g qui subit le frottement



F
f
=

v dans
le milieu (gure 10). Son quation de mouvement scrit :
m
d
2
x
dt
2
= m

g
d

x
dt
(61)
ce qui se rduit au systme dquations dcouples :
_
d
2
x
dt
2


m
dx
dt
= 0
d
2
z
dt
2


m
dz
dt
= g
(62)
Les mmes substitutions que celles proposes en quations (19) et (21) nous permettent de
mettre les quations (62) sous la forme dune quation matricielle dordre un. Mme si on peut
rsoudre ce problme analytiquement, la solution pour = 0 est un peu pnible et ncessite
lutilisation de nombres complexes. Par contre, lextension de la solution numrique au cas de
= 0 est triviale et ncessite seulement une petite modication de la fonction fprojectile
trouve en (A) de section 2.3).
4.1.2 Orbite dun satellite :
Un satellite subit une force gravitationnelle dirige vers le centre de la terre. Son mouvement
seectue donc dans le plan qui contient le vecteur de vitesse initiale

v
0
et le centre de la terre.
22
Calcul Formel et Numrique : Licence sciences et technologies, deuxime anne Anne 2006-2007
v
P
x
z
F
f
v
0
q
0
Fig. 10 Mouvement dun point de masse qui subit la force de pesanteur et la force de frottement
dans le milieu.
Donc on peut reprsenter son mouvement par deux variables dans ce plan, x et y avec le centre
de la terre comme origine.
Le mouvement du satellite est gouvern par la force gravitationnelle :

F = m

a =
GMm
r
2
r = GMm

r
r
3
= GMm
x x + y y
(x
2
+ y
2
)
3/2
(63)
o G = 6, 67 10
11
m
3
kg
1
s
2
est la constante gravitationnelle et M 5, 976 10
24
kg la masse de
la terre. Lacclration du satellite scrit donc :
a = C
r
r
3
= C
x x + y y
(x
2
+ y
2
)
3/2
(64)
o C GM = 3, 986 10
14
m
3
s
2
= 3, 986 10
5
km
3
s
2
est une constante. On remarque que les
quations direntielles en x et y sont couples :
d
2
x
dt
2
= C
x
(x
2
+ y
2
)
3/2
d
2
y
dt
2
= C
y
(x
2
+ y
2
)
3/2
(65)
Bien quon puisse rsoudre les quations, (65), avec Matlab (Octave), lanalyse est plus
ecace si on utilise des coordonnes circulaires r et dun point M dont les relations avec les
coordonnes x et y de M sont donnes par (voir gure 11) :
_
x
y
_
=
_
r cos
r sin
_
(66)
On rappelle quen coordonnes circulaires on dnit de nouveaux vecteurs unitaires r et

(voir gure 11 ) :
r =
_
cos
sin
_

=
_
sin
cos
_
(67)
23
Calcul Formel et Numrique : Licence sciences et technologies, deuxime anne Anne 2006-2007
q
r
r
q
M
y
x
Fig. 11 Coordonnes circulaires.
dont les orientations dpendent sur langle . Par consquent, quand on eectue des drives
temporelles de la position dun point solide en coordonnes circulaires, il faut tenir compte du
fait que les orientations des vecteurs r et

changent elles aussi avec le temps.
Les drives temporelles de r et

sont :
d r
dt
=
_
_

sin

cos
_
_
=

(t)

dt
=
_
_

cos

sin
_
_
=

(t) r (68)
En coordonnes circulaires, la vitesse

v du point sexprime donc :

v
d

r
dt
= r
dr
dt
+ r
d r
dt
=

r r + r

= v
r
r + v
t

(69)
o v
r


r est la vitesse radiale et v
t
r

la vitesse tangentielle. De la mme manire, laccl-


ration du satellite est donne par :

a
d

v
dt
=
d
dt
_

r r
_
+
d
dt
_
r

_
=

r r + 2

+ r

2
r (70)
On rappelle que la force gravitationnelle agit seulement dans la direction radiale,

F =

mC
r
2
r F
r
r + F

. Prises ensemble avec lexpression de



a de lq.(70), les quations du
mouvement,

F = m

a , du satellite sont :

r r

2
=
F
r
m
=
C
r
2

+ 2

r
r

=
F

m
= 0 (71)
On transforme ce systme dquations direntielles couples en systme de Cauchy par les
dnitions habituelles :
u
1
(t) r (t) u
2
(t)

r (t)
u
3
(t) (t) u
4
(t)

(t) (72)
24
Calcul Formel et Numrique : Licence sciences et technologies, deuxime anne Anne 2006-2007
Le systme dquations direntielles de premire ordre scrit alors :
d
dt
u
1
= u
2
d
dt
u
2
=
C
u
2
1
+ u
1
u
2
4
d
dt
u
3
= u
4
d
dt
u
4
= 2

r
r

= 2
u
2
u
4
u
1
(73)
i.e.
d
dt
u(t) = f (t, u(t)) avec
f (t, u(t)) =
_

_
u
2

C
u
2
1
+ u
1
u
2
4
u
4
2
u
2
u
4
u
1
_

_
(74)
On remarque que
d
dt
u(t) = f (t, u(t)) ne prend pas la forme dune quation matricielle, mais on
peut toujours rsoudre ce systme avec ODE45, lsode, Mthode dEuler, Runge Kutta etc.
Une fois quon a trouv la solution des u(t) = (u
1
, ..., u
4
), on peut tracer lorbite du satellite en
rappelant que
x(t) = r cos = u
1
(t) cos u
3
(t)
y (t) = r cos = u
1
(t) sin u
3
(t) (75)
et en faisant plot(x,y,-o).
Vous pouvez imaginer que de telles mthodes sont employes de manire intensive par des
ingnieurs de lESA. Imaginez un instant les calculs ncessaires pour envoyer une sonde dans le
systme solaire en tenant compte de la pouss des moteurs, des eets gravitationnels du soleil
et des plantes, tout en cherchant minimiser la consommation de carburant.
4.2 Circuits lectriques
On rappelle la relation entre la charge Q sur un condensateur et le potentiel v ces bornes :
Q = vC (76)
On rappelle quen convention rcepteur le potentiel aux bornes dune bobine est u
L
= L
di
dt
et
aux bornes dune rsistance u
R
= Ri. La loi des mailles pour ce circuit RLC simple est :
L
di
dt
+ Ri + v u = 0 (77)
Utilisant la dnition du courant :
i =
dQ
dt
= C
dv
dt
(78)
on obtient une quation direntielle de deuxime ordre pour la tension aux bornes du conden-
sateur :
LC
d
2
v
dt
2
+ RC
dv
dt
+ v = u (79)
25
Calcul Formel et Numrique : Licence sciences et technologies, deuxime anne Anne 2006-2007
La mme quation direntielle peut gouverner de bien direntes situations physiques. Dans
un premier temps imaginer un circuit avec un interrupteur ouvert, sans gnrateur de tension
(i.e. u = 0), et un condensateur charg au potentiel v
0
= 10V. On ferme le circuit au temps
t
0
= 0. Lquation de mouvement est donc homogne :
LC
d
2
v
dt
2
+ RC
dv
dt
+ v = 0 (80)
On fait les dnitions habituelles :
y
1
(t) = v (t)
y
2
(t) =
dv (t)
dt
(81)
an dobtenir des quations dordre 1 :
d
dt
y
1
(t) = y
2
(t)
d
dt
y
2
(t) =
1
LC
y
1
(t)
R
L
y
2
(t) (82)
La premire condition initiale est simplement y
1
(t
0
) = v (t
0
) = v
0
. Pour la seconde condition
initiale, il faut se rappeler que le courant travers une bobine doit tre une fonction continue
du temps. Puisque dans ce problme i (t
0
< 0) = 0, la continuit du courant impose la condition
initiale i (t
0
) = 0, donc y
2
(t
0
) = 0.
Maintenant, on peut trouver la solution avec une fonction f (t, y (t)) approprie et lsode
(ODE45) et y
0
= y (t
0
) = (v
0
, 0).
4.3 Evolution temporelle des populations
Les biologistes ont remarqu que si une population est susamment grande, la croissance
de la population est proportionnelle la population. Ceci revient lobservation simple que la
croissance de la population est proportionnelle au nombre de couples possible dans la population.
Ces observations se traduisent par une quation direntielle simple :
dp
dt
= ap (t) (83)
qui a une solution analytique de
p (t) = exp (at) + Cte (84)
Bien entendu, on sait que ce modle est trop simpliste puisque quau fur et mesure que
la population grandit ses membres vont entrer en comptition les uns avec les autres pour des
ressources limits. Un meilleur modle qui tient compte de cette comptition est donc la suivante :
dp
dt
= ap (t) bp
2
(t) (85)
La population humaine sur terre semble avoir suivit une volution semblable celle prdite
par ce modle pendant une bonne partie du 20me sicle. Les biologistes estiment que la valeur
de a vaut 0, 029. On sait que la population mondiale en t
0
= 1965 valait p
0
p (t
0
) = 3, 34 10
9
26
Calcul Formel et Numrique : Licence sciences et technologies, deuxime anne Anne 2006-2007
et quelle augmentait de 2% par an cette poque, i.e.
1
p
dp
dt

t=t
0
= 0, 02. On peut donc dduire
la valeur de b de lquation direntielle et des valeurs de p
0
et de
1
p
dp
dt

t=t
0
:
1
p
dp
dt

t
0
= a bp (t
0
) 0, 02 = 0, 029 b 3, 34 10
9
(86)
soit
b = 2, 695 10
12
(87)
Utiliser lsode (ODE45) an de modliser la population mondiale avec cette quation. Quelle
est de la population mondiale prvue par cette quation pour 2007 ? Est-ce que cette quation
prvoit une limite la population mondiale ? et si cest le cas, quelle limite prvoit-elle ?
Note : On peut comparer nos rsultats avec la solution analytique de lq.(85) :
p (t) =
ap
0
bp
0
+ (a bp
0
) exp (a (t t
0
))
(88)
On voit ici que la valeur limite de la population mondiale prvu par le modle est p (t ) =
a
b
n.
27