Vous êtes sur la page 1sur 9

Compte rendu

TP3 Matlab : RESOLUTION DES EQUATIONS


DIFFERENTIELLES
Méthodes Numériques

REALISE PAR : AYOUB GASSOU


ENCADRE PAR : Pr.Salaheddine 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.

Vous aimerez peut-être aussi