Vous êtes sur la page 1sur 7

RÉPUBLIQUE ALGÉRIENNE DÉMOCRATIQUE ET POPULAIRE

UNIVERSITÉ DE BOUMERDES

FACULTE DES HYDROCARBURES ET CHIMIE DEPARTEMENT

TP N°01:
Résolution des équations différentielles

Groupe : maca19

Etudiant : Benour Abderrahim

Année Universitaire:
2022-2023
Introduction :
Il existe un grand nombre de façons de résoudre une équation différentielle et
aucune méthode n’est clairement supérieure à toutes les autres dans toutes les
circonstances. De nos jours, la technique « Runge Kutta » d’ordre 4 et à pas
adaptatif est souvent utilisée. Nous verrons les raisons de ce choix dans ce qui
suit.

Le but du TP :
Le but de ce TP est d’apprendre la résolution des équations différentielles par
la méthode « Runge Kutta » d’ordre 4 en utilisant MATLAB puis l’utilisée dans
les problèmes de la commande optimale.

Partie théorique :
1-Méthodes de Runge-Kutta :
Les méthodes de « Runge-Kutta » sont des méthodes d'analyse numérique
d'approximation de solutions d'équations différentielles. Ces méthodes
reposent sur le principe de l'itération, c'est-à-dire qu'une première estimation
de la solution est utilisée pour calculer une seconde estimation, plus précise, et
ainsi de suite.
2-Résolution numérique des équations différentielles par la
méthode de Runge-Kutta :
Une équation différentielle d’ordre supérieur à 1 se ramène à un système
d’équations du 1er ordre. Étant donne un système à deux équations :
ẏ=F ( y , z , t)
ż=G( y , z ,t )

Y(t0) =Y0, Z(t0) =Z0, sont donnes et [t0, tf] un intervalle de temps fini, h est le pas.
La méthode RK4 est donnée par les deux équations :
h
Y k +1=Y K + ( M 1 +2 M 2+2 M 3 + M 4 )
6
h
Z k+1=Z K + ( N 1 +2 N 2+ 2 N 3 + N 4)
6
Où :
 M 1=F (Y K , Z K , t K ) Et : N 1=G(Y K , Z K , t K )
h h h
 M 2=F (Y K + 2 M 1 , Z K + 2 N 1 , t K + 2 ) Et :
h h h
N 2=G(Y K + M 1 , Z K + N 1 ,t K + )
2 2 2
h h h
 M 3=F (Y K + 2 M 2 , Z K + 2 N 2 , t K + 2 ) Et :
h h h
N 3=G(Y K + M 2 , Z K + N 2 , t K + )
2 2 2
 M 4 =F (Y K +h M 3 , Z K + h N 3 ,t K + h) Et :
N 4 =G(Y K +h M 3 , Z K + h N 3 , t K + h)

L'idée est que la valeur suivante (yk+1) est approchée par la somme de la valeur
actuelle (yk) et du produit de la taille de l'intervalle (h) par la pente estimée. La
pente est obtenue par une moyenne pondérée de pentes :
 M1 est la pente au début de l'intervalle.
 M2 est la pente au milieu de l'intervalle, en utilisant la pente M1 pour cal-
culer la valeur de y au point tk + h/2 par le biais de la méthode d'Euler.
 M3 est de nouveau la pente au milieu de l'intervalle, mais obtenue cette
fois en utilisant la pente M2 pour calculer y.
 M4 est la pente à la fin de l'intervalle, avec la valeur de y calculée en utili-
sant M3.

Partie Programmation :
Enonce de problème :
Utiliser la méthode RK4,4 pour résoudre numériquement les exemples suivants
sur l’horizon de temps [0, t max], puis tracer les solutions obtenues y(t), z(t) et
déterminer leurs extrémums.
Avec : t max = 0.4

Exemple 1 : h = 0.01 ; Y (0) = 1 ; Z (0) = 1 

4t
ẏ= yz+
y
2 −t
ż=z + yz +3 e
Le programme élaboré :

h=0.01;
t0=0;
tmax=0.4;
funct1=input('Donner dy : dy = ','s');
F=inline(funct1,'y','z','t');
funct2=input('Donner dz : dz = ','s');
G=inline(funct2,'y','z','t');
y(1)=1;
z(1)=1;
t(1)=0;
N=(tmax-t0)/h;
for k=1:N
t(k+1)=t(k)+h;
M1=F(y(k),z(k),t(k));
N1=G(y(k),z(k),t(k));
M2=F(y(k)+(h/2)*M1,z(k)+(h/2)*N1,t(k)+h/2);
N2=G(y(k)+(h/2)*M1,z(k)+(h/2)*N1,t(k)+h/2);
M3=F(y(k)+(h/2)*M2,z(k)+(h/2)*N2,t(k)+h/2);
N3=G(y(k)+(h/2)*M2,z(k)+(h/2)*N2,t(k)+h/2);
M4=F(y(k)+h*M3,z(k)+h*N3,t(k)+h);
N4=G(y(k)+h*M3,z(k)+h*N3,t(k)+h);
y(k+1)=y(k)+(h/6)*(M1+2*M2+2*M3+M4);
z(k+1)=z(k)+(h/6)*(N1+2*N2+2*N3+N4);
end
plot(y,t,'r')
grid on
hold on
plot(z,t,'b')
legend('Le tracé de Y(t)','Le tracé de Z(t)')
title('Exemple 01')
% Les extrémums :
miny=min(y)
maxy=max(y)
minz=min(z)
maxz=max(z)
Les résultats obtenus :

Exemple 2 : h = 0.001 ; Y (0) = 1 ; Z (0) = 1 

ẏ=50 e−20 t . sin ( 10 z )


−0.2 y
ż=zy −10 e . sin ⁡(40 t)
Le programme élaboré :

h=0.001;
t0=0;
tmax=0.4;
funct1=input('Donner dy : dy = ','s');
F=inline(funct1,'y','z','t');
funct2=input('Donner dz : dz = ','s');
G=inline(funct2,'y','z','t');
y(1)=1;
z(1)=1;
t(1)=0;
N=(tmax-t0)/h;
for k=1:N
t(k+1)=t(k)+h;
M1=F(y(k),z(k),t(k));
N1=G(y(k),z(k),t(k));
M2=F(y(k)+(h/2)*M1,z(k)+(h/2)*N1,t(k)+h/2);
N2=G(y(k)+(h/2)*M1,z(k)+(h/2)*N1,t(k)+h/2);
M3=F(y(k)+(h/2)*M2,z(k)+(h/2)*N2,t(k)+h/2);
N3=G(y(k)+(h/2)*M2,z(k)+(h/2)*N2,t(k)+h/2);
M4=F(y(k)+h*M3,z(k)+h*N3,t(k)+h);
N4=G(y(k)+h*M3,z(k)+h*N3,t(k)+h);
y(k+1)=y(k)+(h/6)*(M1+2*M2+2*M3+M4);
z(k+1)=z(k)+(h/6)*(N1+2*N2+2*N3+N4);
end
plot(y,t,'r')
grid on
hold on
plot(z,t,'b')
legend('Le tracé de Y(t)','Le tracé de Z(t)')
title('Exemple 02')
% Les extrémums :
miny=min(y)
maxy=max(y)
minz=min(z)
maxz=max(z)
Les résultats obtenus :

Conclusion :
On conclut que la méthode de « Runge-Kutta » est une méthode très efficace
pour résoudre les équations différentielles.

Vous aimerez peut-être aussi