Vous êtes sur la page 1sur 9

Le but de ce tp  :

- De résoudre quelques équations différentielles ordinaires (EDO)


- Programmer des méthodes de résolution des EDO : méthode de Gauss et
Rang Kutta.
A-ODE du premier ordre
1-La méthode d’Euler  :
Cette méthode est d’ordre 1, cela veut dire que l’erreur est proportionnelle au carré du pas (ℎ) de
discrétisation. Intuitivement, on comprend que pour améliorer la précision cette méthode, il suffira de
réduire ℎ
La solution

f=@(t,y) 3+t-y;
clear t% Clears old time steps
clear y% y values from previous runs
a=0; % Initial time
b=1; % Final time
N=10; % Number of time steps
y0=0; % Initial value y(a)
h=(b-a)/N; % Time step
t(1)=a;
y(1)=y0;
for n=1:N % For loop, sets next t,y values
t(n+1)=t(n)+h;
y(n+1)=y(n)+h*f(t(n),y(n)); % Calls the function f(t,y)=dy/dt
end
plot(t,y)
title(['Euler Method using N=',num2str(N),'steps, dy/dt=3+t-y'])
% Include your own name

Euler Method using N=10steps, dy/dt=3+t-y


2.5

1.5
f

0.5

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
t

Changement avec exp  :


f=@(t,y) 2*t-exp(-t);
clear t% Clears old time steps
clear y% y values from previous runs
a=0; % Initial time
b=1; % Final time
N=10; % Number of time steps
y0=0; % Initial value y(a)
h=(b-a)/N; % Time step
t(1)=a;
y(1)=y0;
for n=1:N % For loop, sets next t,y values
t(n+1)=t(n)+h;
y(n+1)=y(n)+h*f(t(n),y(n)); % Calls the function f(t,y)=dy/dt
end
plot(t,y)
title(['Euler Method using N=',num2str(N),'steps, dy/dt=3+t-y'])
% Include your own name

Euler Method using N=10steps, dy/dt=3+t-y


0.4

0.2

-0.2

-0.4
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Les erreurs
ySym=dsolve('Dy=2*t-exp(-t)','y(0)=0','t')

ySym =

1/exp(t) + t^2 – 1
ySym=dsolve('D2y+3*y=4*cos(t)+exp(-t)','y(0)=1','Dy(0)=1','t')
ySym =
cos(3^(1/2)*t)*(cos(t + 3^(1/2)*t) + cos(3^(1/2)*t - t) - (3^(1/2)*cos(t +
3^(1/2)*t))/3 + cos(3^(1/2)*t)/(4*exp(t)) + (3^(1/2)*cos(3^(1/2)*t - t))/3 +
(3^(1/2)*sin(3^(1/2)*t))/(12*exp(t))) - (5*cos(3^(1/2)*t))/4 +
(5*3^(1/2)*sin(3^(1/2)*t))/12 - sin(3^(1/2)*t)*(sin(t - 3^(1/2)*t) - sin(t + 3^(1/2)*t)
+ (3^(1/2)*sin(t + 3^(1/2)*t))/3 + (3^(1/2)*sin(t - 3^(1/2)*t))/3 -
sin(3^(1/2)*t)/(4*exp(t)) + (3^(1/2)*cos(3^(1/2)*t))/(12*exp(t)))

Remarque  :
l’avantage de la méthode d’Euler, tire son origine du fait qu’elle réclame
uniquement l’évaluation de la fonction 𝑓 pour chaque pas d’intégration
*- méthode Runge–Kutta
elles génèrent des solutions numériques plus proches des solutions analytiques

Solution :
clear all ; clc
h=0.1;
b=2;
n=1;
t(1)=0;y(1)=0.5;
f=@(t,y) 3*t-y;
while t<10
k1=h*f(t(n),y(n));
k2=h*f(t(n)+h/2,y(n)+k1/2);
k3=h*f(t(n)+h/2,y(n)+k2/2);
k4=h*f(t(n)+h,y(n)+k3);
y(n+1)=y(n)+(k1+2*k2+2*k3+k4)/6;
t(n+1)=t(n)+h;
n=n+1;
end
y
plot(t,y)

30

20
y

10

0
0 2 4 6 8 10 12
t

Changement de f  :
clear all ; clc
h=0.1;
b=2;
n=1;
t(1)=0;y(1)=0.5;
f=@(t,y) 3+t-y;
while t<10
k1=h*f(t(n),y(n));
k2=h*f(t(n)+h/2,y(n)+k1/2);
k3=h*f(t(n)+h/2,y(n)+k2/2);
k4=h*f(t(n)+h,y(n)+k3);
y(n+1)=y(n)+(k1+2*k2+2*k3+k4)/6;
t(n+1)=t(n)+h;
n=n+1;
end
y
plot(t,y)
donc
quand t(1)=0  ;y(1)=0.5
14

12

10

0
0 2 4 6 8 10 12

clear all ; clc


h=0.1;
b=2;
n=1;
t(1)=0;y(1)=0;
f=@(t,y) 3+t-y;
while t<10
k1=h*f(t(n),y(n));
k2=h*f(t(n)+h/2,y(n)+k1/2);
k3=h*f(t(n)+h/2,y(n)+k2/2);
k4=h*f(t(n)+h,y(n)+k3);
y(n+1)=y(n)+(k1+2*k2+2*k3+k4)/6;
t(n+1)=t(n)+h;
n=n+1;
end
y
plot(t,y)
donc
quand t(1)=0  ;y(1)=0
14

12

10

0
0 2 4 6 8 10 12

Changement avec exp  :


clear all ; clc
h=0.1;
b=2;
n=1;
t(1)=0;y(1)=0;
f=@(t,y) 2*t-exp(-t);
while t<10
k1=h*f(t(n),y(n));
k2=h*f(t(n)+h/2,y(n)+k1/2);
k3=h*f(t(n)+h/2,y(n)+k2/2);
k4=h*f(t(n)+h,y(n)+k3);
y(n+1)=y(n)+(k1+2*k2+2*k3+k4)/6;
t(n+1)=t(n)+h;
n=n+1;
end
y
plot(t,y)
120

100

80

60

40

20

-20
0 2 4 6 8 10 12

Remarque  :
Les méthodes de type Runge-Kutta permettent d’obtenir une plus grande précision

2-méthode avec ODE23  :


Résoudre symboliquement et numériquement au moyen du solveur ode23, l’équation différentielle du
second ordre suivante : {︃𝑦 ′′(𝑡) + 3 𝑦 = 4 sin(𝑡) + exp(−𝑡) 𝑦(0) = 1, 𝑦 ′ (0) = 1

fonction
dy=g2(t,y)
dy(1)=3+t-y;

La solution
clear all; clc;
[t,y]=ode23('g2',[0 1],0);
plot(t,y)
2.5

1.5

0.5

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

fonction
dy=g2(t,y)
dy(1)=2*t-exp(-t);

changement avec exp


clear all; clc;
[t,y]=ode23('g2',[0 1],0);
plot(t,y)

0.5

0.4

0.3

0.2

0.1

-0.1

-0.2
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

a=0;b=10;n=200;h=(b-a)/n;
tn=a:h:b;
y=[1;1];
eqs=@(tn,y)[y(2);-3*y(1)+4*cos(tn)+exp(-tn)];
opts=odeset('Stats','on','RelTol',1e-3);
[tn,ysol]=ode23(eqs,[tn(1);tn(end)],y,opts);%SOLVEURode23

Remarque
la résolution d’équations différentielles. Les plus utilisés sont ode23, qui est
basé sur la méthode de Runge-Kutta explicite à un pas
B-ODE dure deuxième ordre
Solution
program
figure('color',[1 1 1]);
plot(tn,ysol(:,1),'o','LineWidth',1);hold on;
plot(tn,double(subs(ySym,t,tn)),'+','LineWidth',1)
xlabel('t','FontSize',12);ylabel('y(t)','FontSize',12);
ih1=legend('SOLUTION NUMERIQUE','SOLUTION ANALYTIQUE');
set(ih1,'Interpreter','none','Location','NorthWest','Box','off','Color','none')
3

-1

-2

-3

-4
0 1 2 3 4 5 6 7 8 9 10

2-Résoudre numériquement au moyen du solveur ode45, l’équation différentielle

la comparaison quantitative des résultats


numériques :
et des prévisions d’origine théorique (ce qui nécessite quelques calculs
supplémentaires à partir des courbes), ainsi que des explications sur les écarts
constatés. La restitution se fait sous deux formes : compte-rendu papier avec codes
et figures commentées d’une part et fichier d’archive compressé déposé sur sakai
d’autre part. 1. Indiquer votre nom, prénom (sans accent) et numéro d’étudiant en
commentaire, en début de tous les fichiers source. On rappelle les caractères
introducteurs de commenta
Le tableaux de comparaison  :
Méthode de d’euler La Méthode de Runge-Kutta
La méthode d’Euler est la plus facile La méthode deRunge-Kutta est un peu plus
à interpréter et la plus simple à complexe à mettre en oeuvre. • La méthode
mettre en oeuvre. • La méthode d’intégration numérique utilisée pour intégrer la
d’intégration numérique utilisée fonction f sur chaque intervalle [xk, xk+1]
pour intégrer la fonction f sur
chaque intervalle [xk, xk+1] est
celle d’ordre la plus bas

Conclusion  :
Les performances d’une méthode sont évaluées en comparant : — La rapidité nécessaire à effectuer une
itération unique. Cette propriété dépend du nombre d’évaluations de la fonction f nécessaire à
compléter l’itération. — Le nombre d’itérations nécessaires pour obtenir une précision donnée. Des
méthodes d’ordres différents ont des erreurs qui décroissent plus ou moins vite avec la taille du pas
d’intégration.