Académique Documents
Professionnel Documents
Culture Documents
1 Equations
differentielles
1.1 Rappels sur la theorie . . . . . . . . . . . .
1.2 Methodes numeriques de resolution . . . .
1.3 Exemples dequations differentielles . . . .
1.4 Application a` la modelisation des e pidemies
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
2
3
10
10
1 Equations
differentielles
1.1 Rappels sur la theorie
Quest-ce quune e quation differentielle
Une e quation reliant une fonction inconnue avec ses derivees.
Si la fonction ne depend que dune variable on parle dequation differentielle ordinaire (EDO). Sinon, on
parle de quations aux derivees partielles (EDP).
Exemples
1. Croissance (a > 0) ou extinction (a < 0) dune esp`ece
y (t) = ay(t),
y(0) = y0 ,
de solution
y(t) = y0 eat .
2. Le probl`eme du pendule
(t) +
g
sin (t) = 0,
L
(p1)
y
(t)
=
f
t,
y(t),
y
(t),
.
.
.
,
y
(t)
y(0) = y0
peut secrire
y (0) = y01
(p1)
y
(0) = y0p1
avec
y(t)
y (t)
: R 7 Rp ,
Y (t) =
..
y (p1) (t)
et
F : R Rp 7 Rp
(t Z) 7 F (t, Z)
avec
y0
y01
p
Y0 =
... R
y0p1
Z2
Z3
.
F (t, Z) =
.
..
f (t, Z1 , Z2 , . . . , Zp )
(0) = 0 ,
en introduisant la fonction
2
2
F : R 7 R
Z 7 F (Z) =
Z2
g
sin(Z1 )
L
Alors il existe 0 < T et une unique fonction y(t) de [0, ] dans Rm solution de lequation differentielle
y (t) = f t, y(t) , y(0) = y0 .
Ordre p de la methode :
E(h) = max ||e(ti , y, h)|| Khp+1
i
Stabilite
Le schema est dit stable sil existe une constante M ne dependant que de telle que
!
n
X
max ||
yi zi || M ||
y0 z0 || +
||i ||
i=0,..n
i=0
y0 = y0
k1 = f (ti , yi )
k2 = f (ti + h/2, yi + hk1 /2)
y0 = y0
k1 = f (ti , yi )
k = f (ti + h, yi + hk3 )
4
yi+1 = yi + h(k1 + 2k2 + 2k3 + k4 )/6 pour i = 0, 1, ...n 1
Exemples de schemas numeriques implicites
Euler implicite
y0 = y0
yi+1 = yi + hf (ti+1 , yi+1)
pour i = 0, 1, ...n 1
CrankNicholson
y0 = y0
yi+1 = yi + h2 f (ti , yi) + h2 f (ti+1 , yi+1 ) pour i = 0, 1, ...n 1
` chaque pas de temps on doit resoudre une e quation non-lineaire (si la fonction f est non-lineaire) pour
A
determiner yi+1 en fonction de yi.
Mise en oeuvre Matlab
y (t) = ay(t),
y(0) = y0
La solution y(t) = y0 eat est representee sur la Figure
avec son approximation numerique.
EDO
h=T/n;
t=[0:n]*h;
ye=y0*exp(a*t);
ybar=y0*ones(1,n+1);
for i=1:n
ybar(i+1)=(1+h*a)*ybar(i);
end
plot(t,ye,b-,t,ybar,r-o)
ema dEuler explicite)
title(Sch
legend(exacte,Euler)
clear
close all
a=-1;
y0=1;
T=1;
n=10;
0.8
0.7
0.6
0.5
0.4
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
title(Sch
ema dEuler explicite)
legend(exacte,Euler)
Script 3. Fonctions second membre multiples
clear
% definition of exact solutions
yexacte0=inline(exp(t));
f0=inline(y,t,y);
yexacte1=inline((t+1).*exp(-t));
f1=inline(-t.*y./(t+1),t,y);
yexacte2=inline(1.0./(1-t));
f2=inline(y.*y,t,y);
yexacte3=inline(sin(t));
f3=inline(sqrt(1-y.*y),t,y);
Fonctions second membre multiples (2)
T=.9; n=100; h=T/n; t=[0:n]*h;
% choix du cas test
sol=yexacte2;
fun=f2;
ye=sol(t);
ybar=sol(t(1))*ones(1,n+1);
for i=1:n
ybar(i+1)=ybar(i)+h*fun(t(i),ybar(i));
end
plot(t,ye,b-,t,ybar,r-o)
title(Sch
ema dEuler explicite)
legend(exacte,Euler)
Script 4 - Verification de lordre dun schema
clear
NbDisc=10; % Nombre de discr
etisations `
a tester
T=1.;
% espacement uniforme dans une
echelle logarithmique
N=round(5*logspace(1,3,NbDisc));
ER=zeros(1,NbDisc);
for i=1:NbDisc
ER(i)=ErreurEuler(N(i));
end
loglog(T./N,ER,b-o,T./N,T./N,r-)
legend(Erreur,O(h))
title(v
erification de lordre du sch
ema dEuler)
function er=ErreurEuler(n)
T=1; h=T/n; t=[0:n]*h;
sol=yexacte0;
fun=f0;
ybar=feval(sol,t(1))*ones(1,n+1);
for i=1:n
ybar(i+1)=ybar(i)+h*feval(fun,t(i),ybar(i));
end
er=abs(ybar(n+1)-feval(sol,t(n+1)));
Dans le fichier yexacte0.m
function y=yexacte0(t)
y=exp(t);
Dans le fichier f0.m
function dy=f0(t,y)
dy=y;
Script 6. Equation du pendule
clear
close all
T=50;
n=1000; h=T/n;
t=[0:n]*h;
ybar=zeros(2,n+1);
ybar(1,1)=1;
ybar1=zeros(2,n+1);
ybar1(1,1)=1;
for i=1:n
% euler
ybar1(:,i+1)=ybar1(:,i)+h*F(t(i),ybar1(:,i));
% runge kutta
yb=ybar(:,i)+h*F(t(i),ybar(:,i))/2;
ybar(:,i+1)=ybar(:,i)+h*F(t(i)+h/2,yb);
end
Script 6. Equation du pendule (2)
plot(t,ybar(1,:),t,ybar(2,:),t,ybar1(1,:),t,ybar1(2,:))
title(Mouvt. du pendule - comp. Euler et Runge-Kutta)
legend(phi (RK),phi (RK),phi (Euler),phi (Euler))
figure
plot(ybar(1,:),ybar(2,:),ybar1(1,:),ybar1(2,:))
title(comp. Euler et Runge-Kutta - espace des phases)
legend(RK,Euler)
Dans le fichier F.m
function YP=F(t,Y)
YP=Y;
YP(1)=Y(2);
YP(2)=-sin(Y(1));
Arguments de sortie :
T : les temps o`u est calculee la solution
Y : Les valeurs de la solution aux temps T
Script 8 - Exemple dutilisation du solveur ODE de matlab
yexacte3=inline(sin(t));
f3=inline(sqrt(1-y.2),t,y);
T=2; n=100; h=T/n; t=[0:n]*h;
ye=yexacte3(t);
[ty,ybar] =ode23(f3,[0,T],0);
Y0(1,1)=0; Y0(2,1)=1;
[ TY,YBAR ] =ode23(@F1,[0,T],Y0);
hold on
plot(t,ye,b)
plot(ty,ybar,rx)
plot(TY,YBAR(:,1),go)
title(Solveur ODE de MATLAB)
legend(exacte,scalaire,Vect)
Script 9 - Etude de la stabilite
yexacte3=inline(sin(t));
T=20;
n=400;
h=T/n;
t=[0:n]*h;
ye=yexacte3(t);
YBAR=ones(2,n+1);
YBAR(1,1)=0;
YBAR(2,1)=1;
for i=1:n
YBAR(:,i+1)=YBAR(:,i)+h*F1(t(i),YBAR(:,i));
end
Timp=100;
nimp=2000;
h=Timp/nimp;
timp=[0:nimp]*h;
yeimp=yexacte3(timp);
YBARimp=ones(2,nimp+1);
YBARimp(1,1)=0;
YBARimp(2,1)=1;
for i=1:nimp
YBARimp(2,i+1)=(YBARimp(2,i)-h*YBARimp(1,i))/(1+h
2);
YBARimp(1,i+1)=YBARimp(1,i)+h*YBARimp(2,i+1);
end
plot(timp,yeimp,t,YBAR(1,:),timp,YBARimp(1,:))
emas dEuler explicite et implicite)
title(Sch
legend(exacte,explicite,implicite)
y (t) = x(t) + y(t) et ,
x(0) = 1,
y(0) = 0.
On pourra se ramener a` une e quation differentielle dordre deux a` une inconnue, par e limination.
2) Ecrire un script Matlab pour calculer numeriquement la solution avec le schema dEuler et comparer
avec la solution exacte. Representer les deux solutions sur lintervalle [0, 2] sur le meme graphe (avec un
graphe pour chaque composante x(t) et y(t)).
3) Meme question avec le schema de Runge-Kutta dordre 4.
4) Meme question avec le solveur ode45 de Matlab .
dS
= rSI,
dt
dI
(1)
= rSI aI,
dt
dR = aI.
dt
10
Pour une population donnee N = S +I +R constante, la propagation de lepidemie varie suivant les valeurs
des constantes r et a et des conditions initiales
S(0) = S0 ,
I(0) = I0 = N S0 ,
(2)
R(0) = 0.
Exercice 3
1. Resoudre le syst`eme (1) avec le schema de Runge-Kutta dordre 4. Parametriser le programme de mani`ere a` pouvoir faire varier facilement les coefficients et les conditions initiales.
2. Tracer sur le meme graphe levolution des trois groupes en fonction du temps
3. Pour a, r et N fixes, faire varier S0 et I0 et a` chaque fois tracer I(t) en fonction de S(t). Quobservet-on ?
dI
4. Un peu de maths... Calculer dS
et integrer. Quel est le nombre maximum de personnes contamines
au cours de lepidemie, en fonction de N et = a/r. Retrouver ce resultat sur les simulations
numeriques precedentes.
dS
5. Calculer dR
et integrer. En deduire une e quation differentielle scalaire pour R uniquement. Integrer
numeriquement.
11