Vous êtes sur la page 1sur 3

Université A.

Mira de Béjaia Faculté des Sciences Exactes


Département de Physique
Master 1 Dynamique des Fluides et Energétique
Modélisation Mathématique en Physique

Travail Pratique
Méthodes de Runge Kutta d’ordre 2 et 4
I-Introduction
On va chercher à approcher numériquement les solutions d’équations différentielles de la forme.
 y '  f t , y  t  a, b
 (1)
 y t 0   y 0
Où f est une fonction continue par rapport à la deuxième variable. Le théorème de Cauchy Lipchitz
assure l’existence et l’unicité de la solution. Il arrive que l’on sache résoudre ce problème de manière
analytique mais dans un grand nombre de cas on ne connait pas de forme explicite de la solution. On
peut essayer d’approcher la solution par un schéma numérique.

II-Schéma de Range Kutta d’ordre 2


Il existe plusieurs variantes de la méthode de Runge-Kutta. La méthode de Runge Kutta d’ordre 2 est
donné par :
Soit l’équation différentielle suivante :
 y '  f t , y  t  a, b

 yt 0   y0

L’algorithme de RK2 s’écrit :


 k1  h * f t i , yi t i 

k  h * f  x  h , y t   k1 


2

i
2
i i
2
y i1 ti 1   y i ti   k 2 , i  1,2,....
Exemple :
On considère l’équation différentielle suivante :
 dy t 
  t  y t  t  
 dt (1)

 y t  0   1
2.1-Calculer la solution exacte.
2.2-Le code RK2 Matlab pour la résolution de cette équation est donné par :

function [t,y] = RK2(f,tmin,tmax,Nint,y0) % Méthode de Runge Kutta d’ordre 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 discrétisé t=[tmin,tmax]
y(1) = y0 ; % y contient les solutions de y(tn)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

Page 1
Université A. Mira de Béjaia Faculté des Sciences Exactes
Département de Physique
Master 1 Dynamique des Fluides et Energétique
Modélisation Mathématique en Physique

Programme 1
%Programme pour avoir la solution analytique et la solution donnée par RK2
f=@(x,y) x-y;
% Calcul de la solution exacte solution
g=@(x) 2*exp(-x)+x-1;
xe=[0:0.1:2];
ye=g(xe);
% Call function RK2
[x1,y1]=RK2(f,0,2,50,1);
% Plot
plot(xe,ye,'k-',x1,y1,'r:')
xlabel('x')
ylabel('y')
legend('exacte','RK2')
axis([0 2 0 2])

Ce code permet de tracer la solution exacte et la solution approchée sur un intervalle du temps donné.
2.3-Exécuter le code pour t  0, 2 avec un nombre de pas N int  50
2.4-Donner la solution analytique de l’équation différentielle :
dyt  yt  t
  e avec yt  1  1 et modifier le code précédent pour la résoudre
dt t
numériquement.
2.5-Tracer la solution analytique et la solution numérique obtenue avec la méthode RK2. On donne
t  1, 2 avec un nombre de pas N int  10

III-Schéma de Range Kutta d’ordre 4

Soit l’équation différentielle suivante :


 y '  f t , y  t  a, b

 yt 0   y0
L’algorithme de la méthode de Runge Kutta d’ordre 4 (RK4) s’écrit :
:
 k1  h * f xi , yi 
  h k 
 k 2  h * f  xi  , y i  1 
  2 2

k 3  h * f  xi  h , yi  k 2 
  2 2 
 k 4  h * f  xi  h, yi  k 3 

y i1  y i  k1  2k 2  2k3  k 4 , i  1,2,....


1
6

Page 2
Université A. Mira de Béjaia Faculté des Sciences Exactes
Département de Physique
Master 1 Dynamique des Fluides et Energétique
Modélisation Mathématique en Physique

1- Le code de la fonction RK4 est donné par


function [t,y] = RK4(f,tmin,tmax,Nint,y0) % Méthode de Runge Kutta d’ordre 4
% 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 discrétisé t=[tmin,tmax]
y(1) = y0 ; % y contient les solutions de y(tn)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) ;
k3 = h*feval(f,t(n-1)+h/2,y(n-1)+k2/2) ;
k4 = h*feval(f,t(n-1)+h,y(n-1)+k3) ;
y(n) = y(n-1) + (k1+2*k2+2*k3+k4)/6 ;
end
end

3.1-Transformer le programme 1 pour avoir la solution de l’équation différentielle (1) avec la


méthode RK4. Tracer sur le même graphe la solution exacte, la solution obtenue avec RK2 et la
solution obtenue avec RK4
3.2-Refaire le même travail pour l’équation différentielle donnée en (2.4).

Page 3

Vous aimerez peut-être aussi