TD sue les équations différentielles à
conditions initiales
Exercice 1 : Résoudre l'équation différentielle suivante avec la méthode de Runge-Kutta d'ordre 4 :
𝑦 =𝑦− 𝑡 +1
𝑦(0) = , t € [0,2]
Solution d’exercice 1 : Les formules de la méthode de Runge-Kutta d'ordre 4 sont les suivantes :
1
𝑦 = 𝑦 = (𝑘 + 2𝑘 + 2𝑘 + 𝑘 ) , 𝑎𝑣𝑒𝑐 ∶
6
𝑘 = ℎ𝑓(𝑡 , 𝑦 ),
ℎ 𝑘
𝑘 = ℎ𝑓 𝑡 + ,𝑦 + ,
2 2
ℎ 𝑘
𝑘 = ℎ𝑓 𝑡 + , 𝑦 + ,
2 2
𝑘 = hf(𝑡 + h , 𝑦 + 𝑘 )
On prend 𝑁 = = 20 , donc : 𝑡 = [0 , 0.1 , 0.2 , … , 2] ,
Pout t = 𝑡 ∶
𝑘 = 0.1 × (0.5 − 0 + 1 ) = 0.15
0.15 0.1
𝑘 = 0.1 × 0.5 + − 0+ +1 = 0.15725
2 2
0.15725 0.1
𝑘 = 0.1 × 0.5 + − 0+ +1 = 0.1576125
2 2
𝑘 = 0.1 × (0.5 + 0.1576125 − 0.1 + 1) = 0.16476125
Donc 𝑦 = 𝑦 + (0.15 + 2 × 0.15725 + 2 × 0.1576125 + 0.16476125)
= 0.65741437.
On utilise le script suivant dans Matlab pour obtenir les valeurs suivantes :
f = @(t, y) y - t^2 + 1;
t0 = 0;
y0 = 0.5;
h = 0.1;
tf = 2;
N = (tf - t0) / h;
t = t0:h:tf;
y = zeros(1, N+1);
y(1) = y0;
for i = 1:N
k1 = h * f(t(i), y(i));
k2 = h * f(t(i) + h/2, y(i) + k1/2);
k3 = h * f(t(i) + h/2, y(i) + k2/2);
k4 = h * f(t(i) + h, y(i) + k3);
y(i+1) = y(i) + (k1 + 2*k2 + 2*k3 + k4) / 6;
end
figure;
plot(t, y, '-o')
title('Exercice 1: Runge-Kutta d''ordre 4')
xlabel('t')
ylabel('y')
grid on
On obtient le tableau suivant :
𝑡 𝑦 𝑘 𝑘 𝑘 𝑘 𝑦
0. 0.5 0.15 0.15725 0.1576125 0.16476125 0.65741437
0 5
0. 0.65741437 0.18374143 0.1920286093 0.192342368 0.201975674 0.84909770
1 5 75 75 75 61
0. 0.84909770 0.22490977 0.2346502590 0.234918283 0.245401598 1.07610647
2 61 06 6 53 05 5
Exercice 2 : Résoudre l'équation différentielle suivante avec la méthode d'Euler :
𝑦 = 3𝑡 − 𝑦 , avec t € [0,1]
𝑦(0) = 1
Solution d’exercice 2 :
La méthode d'Euler pour résoudre une équation différentielle de la forme précédente est donnée par la
formule récursive :
𝑦 = 𝑦 + ℎ𝑓(𝑡 + 𝑦 )
On prend 𝑁 = = 10 , donc ℎ = 0.1
Donc : t = [0, 0.1, 0.2, …, 1.0]
Pour 𝑡 = 0 , on a :
𝑦 = 𝑦 + ℎ𝑓(𝑡 , 𝑦 ) = 1 + 0.1 ⋅ (3 ⋅ 0 − 1) = 0.9
Pour 𝑡 = 0.1, on a :
𝑦 = 𝑦 + ℎ𝑓(𝑡 , 𝑦 ) = 0.813
Pour 𝑡 = 0.2, on a :
𝑦 = 𝑦 + ℎ𝑓(𝑡 , 𝑦 ) = 0.7437
Donc on utilise le script suivant dans Matlab pour Calculer les restes valeurs :
f = @(t, y) 3*t^2 - y;
t0 = 0;
y0 = 1;
h = 0.1;
tf = 1;
N = (tf - t0) / h;
t = t0:h:tf;
y = zeros(1, N+1);
y(1) = y0;
for i = 1:N
y(i+1) = y(i) + h * f(t(i), y(i));
end
figure;
plot(t, y, '-o')
title('Exercice 2: Méthode d''Euler')
xlabel('t')
ylabel('y')
grid on
Donc, on obtient le tableau suivant :
𝑡 𝑦 𝑦
0.0 1.0000 −1.0000
0.1 0.9000 −0.8700
0.2 0.8130 −0.6930
0.3 0.7437 −0.4812
0.4 0.6956 −0.2345
… … …
1.0 0.9320 1.2744
Exercice 3 : Résoudre l'équation différentielle suivante avec la méthode de Heun (Euler modifiée) :
𝑦 = sin(𝑡) . 𝑦
𝑦(0) = 1 , 𝑎𝑣𝑒𝑐 𝑡 € [0,2]
Solution d’exercice 3 :
La méthode de Heun (ou Euler modifiée) est une méthode de prédicteur-correcteur. Les formules
sont les suivantes :
ℎ
𝑦 = 𝑦 + 𝑓(𝑡 , 𝑦 ) + 𝑓 𝑡 ,𝑦
2
𝑎𝑣𝑒𝑐 ∶ 𝑦 = 𝑦 + ℎ𝑓(𝑡 , 𝑦 )
𝑦 , = 1 + 0.1 × 0 = 1, 𝑑𝑜𝑛𝑐 𝑦 = 1.004992