Compte rendu
TP3 Matlab : RESOLUTION DES EQUATIONS
DIFFERENTIELLES
Méthodes Numériques
REALISE PAR : AYOUB GASSOU
ENCADRE PAR : [Link] Kammouri Alami
TP :Méthodes Numériques IMT S2 2022- 1
2023
Une équation différentielle ordinaire est une équation faisant intervenir une fonction
(inconnue) d'une seule variable (temps ou espace) ainsi qu'une ou plusieurs dérivés de
fonction.
Objectifs
Durant ce TP nous allons mettre en œuvre les algorithmes des méthodes de résolution des EDO :
La méthode d’Euler
La méthode de Range Kutta
Après on va comparer les deux méthodes
Remarque :
La résolution d'une ODE nécessite la connaissance d'une variable à un instant initial.
Le nombre des conditions initiales correspond à l'ordre du dérivé le plus élevée
ODE 1er Ordre:
Méthode d'Euler
C’est une procédure numérique pour résoudre par approximation des équations
différentielles du premier ordre avec une condition initiale. C'est la plus simple des
méthodes de résolution numérique des équations différentielles.
Il s'arrête au 1er ordre du développent
subdivision d'un intervalle [a,b] , n est le pas de discrétisation n=(b-a)/n
Méthode de Heun
(2 évaluations)
Méthode de runge kutta
(3 évaluations)
Le fonctionnement de cette méthode est basé sur l'itération, ce qui implique qu'une première
approximation de la solution est utilisée pour calculer une estimation plus précise
Runge kutta d'ordre 4
(4 évaluations)
Application de la méthode d'Euler :
clear all,close all
f1=inline('y1/(1+t^2)');
a=0;
b=0.4;
h=0.2;
N=floor((b-a)/h);
t=[0:0.2:0.4];
y1=zeros(1,N); y1(1)=1;
for i=1 : N
y1(i+1)=y1(i)+h*f1(t(i),y1(i));
end
t
t = 1×3
0 0.2000 0.4000
y1
y1 = 1×3
1.0000 1.2000 1.4308
Application runge kutta:
f2=inline('y2/(1+t^2)');
a=0;
b=0.4;
h=0.2;
N=floor((b-a)/h);
t=[a:h:b];
y2=zeros(1,N); y2(1)=1;
for i=1 : N
k1=f2(t(i),y2(i));
k2=f2(t(i)+h/2,y2(i)+k1*h/2);
k3=f2(t(i)+h/2,y2(i)+k2*h/2);
k4=f2(t(i)+h,y2(i)+k3*h);
y2(i+1)=y2(i)+(h/6)*(k1+2*k2+2*k3+k4);
end
t
t = 1×3
0 0.2000 0.4000
y2
y2 = 1×3
1.0000 1.2182 1.4630
t=[0:0.2:0.4];
z=atan(t);
f=exp(z);
plot(t,y1)
hold on
plot(t,y2,'o')
hold on
plot(t,f)
hold on
OBSERVATION initiale : on constate que la méthode d’Euler n’est pas
précise que la méthode de Runge Kutta , mais avant de conclure on va
essayer d’augmenter les points d’intervalles c’est à dire les
itérations vont augmenter.
On obtient la représentation suivant :
Les 5 premières valeurs par :
Runge kutta
Euler
La fonction exacte
Et on a la représentation graphique suivante :
Erreur d’approximation :
Pour un pas de 0.2 ,On va tracer la fonction f(x)= | Fexat – F rungkutta |
Pour un pas de 0.02 ,On va tracer la fonction f(x)= | Fexat – F rungkutta |
En résumé
En résumé, la méthode d'Euler est facile à utiliser, mais une petite valeur de h pour augmenter la
précision peut être coûteuse en temps d'exécution et entraîner une accumulation d'erreurs
numériques.
La méthode Runge Kutta ordre 4 est une méthode d'ordre 4, ce qui implique que l'erreur commise à
chaque étape est de l'ordre de h5, tandis que l'erreur totale accumulée est de l'ordre de h4. Il est
évident que la méthode de Runge Kutta est plus précise que la méthode d'Euler.
On en conclut que pour un effort de calcul
équivalent il est préférable de choisir une méthode
d’ordre élevé. Il est donc mieux de prendre un pas
plus grand avec un schéma d’ordre élevé qu’un pas
petit avec un schéma d’ordre plus petit.