7.9 Systèmes d’équations différentielles
241
7.9 Systèmes d’équations différentielles
Considérons le système d’équations différentielles du premier ordre dont
les inconnues sont y 1 (t), . . . , y m (t)
⎧
⎪ ⎪ ⎪ ⎪ ⎪ ⎨
⎪ ⎪ ⎪ ⎪ ⎪ ⎩
y
1 = f 1 (t, y 1 , . . . , y m ),
. . .
y
m = f m (t, y 1 , . . . , y m ),
où t ∈]t 0 , T ], avec des conditions initiales
y 1 (t 0 ) = y 0,1 , . . . , y m (t 0 ) = y 0,m .
Pour le résoudre, on pourrait appliquer à chaque équation une des
méthodes introduites précédemment pour les problèmes scalaires. Par
exemple, la n-ème itération de la méthode d’Euler explicite s’écrit
⎧
⎪ ⎪ ⎪ ⎪ ⎪ ⎨
⎪ ⎪ ⎪ ⎪ ⎪ ⎩
u n+1,1 = u n,1 + hf 1 (t n , u n,1 , . . . , u n,m ),
. . .
u n+1,m = u n,m + hf m (t n , u n,1 , . . . , u n,m ).
En écrivant le système sous forme vectorielle y
(t) = F(t, y(t)), avec
des notations évidentes, on étend directement au cas des systèmes les
méthodes développées dans le cas d’une seule équation. Par exemple, la
méthode
u n+1 = u n + h(ϑF(t n+1 , u n+1 ) + (1 − ϑ)F(t n , u n )),
n≥ 0,
avec u 0 = y 0 , 0 ≤ ϑ ≤ 1, est la forme vectorielle de la méthode d’Euler
explicite si ϑ = 0, de la méthode d’Euler implicite si ϑ = 1 et de la
méthode de Crank-Nicolson si ϑ = 1/2.
Exemple 7.7 (Dynamique des populations) Appliquons la méthode d’Euler explicite pour résoudre les équations de Lotka-Volterra (7.3) avec C1 =
C2 = 1, b1 = b2 = 0 et d1 = d2 = 1. Afin d’utiliser le Programme 7.1 pour
un système d’équations différentielles ordinaires, on crée une fonction f qui
contient les composantes de la fonction vectorielle F, et qu’on sauve dans un
fichier f.m. Pour notre système particulier on a :
function fn = f (t , y)
C1 =1; C2 =1; d1 =1; d2 =1; b1 =0; b2 =0;
[n , m ]= size ( y ); fn= zeros (n , m );
fn (1)= C1* y (1)*(1 - b1* y (1) -d2* y (2));
fn (2)= -C2 *y (2)*(1 -b2 *y (2) -d1 *y (1));
return
241
7.9 Systèmes d’équations différentielles
Considérons le système d’équations différentielles du premier ordre dont
les inconnues sont y 1 (t), . . . , y m (t)
⎧
⎪ ⎪ ⎪ ⎪ ⎪ ⎨
⎪ ⎪ ⎪ ⎪ ⎪ ⎩
y
1 = f 1 (t, y 1 , . . . , y m ),
. . .
y
m = f m (t, y 1 , . . . , y m ),
où t ∈]t 0 , T ], avec des conditions initiales
y 1 (t 0 ) = y 0,1 , . . . , y m (t 0 ) = y 0,m .
Pour le résoudre, on pourrait appliquer à chaque équation une des
méthodes introduites précédemment pour les problèmes scalaires. Par
exemple, la n-ème itération de la méthode d’Euler explicite s’écrit
⎧
⎪ ⎪ ⎪ ⎪ ⎪ ⎨
⎪ ⎪ ⎪ ⎪ ⎪ ⎩
u n+1,1 = u n,1 + hf 1 (t n , u n,1 , . . . , u n,m ),
. . .
u n+1,m = u n,m + hf m (t n , u n,1 , . . . , u n,m ).
En écrivant le système sous forme vectorielle y
(t) = F(t, y(t)), avec
des notations évidentes, on étend directement au cas des systèmes les
méthodes développées dans le cas d’une seule équation. Par exemple, la
méthode
u n+1 = u n + h(ϑF(t n+1 , u n+1 ) + (1 − ϑ)F(t n , u n )),
n≥ 0,
avec u 0 = y 0 , 0 ≤ ϑ ≤ 1, est la forme vectorielle de la méthode d’Euler
explicite si ϑ = 0, de la méthode d’Euler implicite si ϑ = 1 et de la
méthode de Crank-Nicolson si ϑ = 1/2.
Exemple 7.7 (Dynamique des populations) Appliquons la méthode d’Euler explicite pour résoudre les équations de Lotka-Volterra (7.3) avec C1 =
C2 = 1, b1 = b2 = 0 et d1 = d2 = 1. Afin d’utiliser le Programme 7.1 pour
un système d’équations différentielles ordinaires, on crée une fonction f qui
contient les composantes de la fonction vectorielle F, et qu’on sauve dans un
fichier f.m. Pour notre système particulier on a :
function fn = f (t , y)
C1 =1; C2 =1; d1 =1; d2 =1; b1 =0; b2 =0;
[n , m ]= size ( y ); fn= zeros (n , m );
fn (1)= C1* y (1)*(1 - b1* y (1) -d2* y (2));
fn (2)= -C2 *y (2)*(1 -b2 *y (2) -d1 *y (1));
return
