11
Rappels sur la r´ esolution num´ erique d’EDO avec Matlab Master Math´ ematiques Pour l’Entreprise Marie Postel 1 Laboratoire Jacques-Louis Lions Universit´ e Pierre et Marie Curie, Paris 6 Version septembre 2011 Table des mati` eres 1 ´ Equations diff´ erentielles 2 1.1 Rappels sur la th´ eorie ..................................... 2 1.2 ethodes num´ eriques de r´ esolution ............................. 3 1.3 Exemples d’´ equations diff´ erentielles ............................. 10 1.4 Application ` a la mod´ elisation des ´ epid´ emies ......................... 10 1 Campus Jussieu, 15-25-313, http ://www.ljll.math.upmc.fr/postel 1

Rapp Else Do

  • Upload
    dhahri

  • View
    2

  • Download
    1

Embed Size (px)

DESCRIPTION

Rapp Else EDo

Citation preview

Page 1: Rapp Else Do

Rappels sur la resolution numerique d’EDO avecMatlabMaster Mathematiques Pour l’Entreprise

Marie Postel1

Laboratoire Jacques-Louis LionsUniversite Pierre et Marie Curie, Paris 6

Version septembre 2011

Table des matieres

1 Equations differentielles 21.1 Rappels sur la theorie . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . 21.2 Methodes numeriques de resolution . . . . . . . . . . . . . . .. . . . . . . . . . . . . . 31.3 Exemples d’equations differentielles . . . . . . . . . . . .. . . . . . . . . . . . . . . . . 101.4 Application a la modelisation des epidemies . . . . . .. . . . . . . . . . . . . . . . . . . 10

1Campus Jussieu, 15-25-313, http ://www.ljll.math.upmc.fr/postel

1

Page 2: Rapp Else Do

1 Equations differentielles

1.1 Rappels sur la theorie

Qu’est-ce qu’uneequation differentielle– Une equation reliant une fonction inconnue avec ses derivees.– Si la fonction ne depend que d’une variable on parle d’equation differentielleordinaire (EDO). Sinon, on

parle d’equations aux derivees partielles (EDP).– Exemples

1. Croissance (a > 0) ou extinction (a < 0) d’une espece{

y′(t) = ay(t),y(0) = y0,

de solutiony(t) = y0e

at.

2. Le probleme du pendule

ϕ′′(t) +g

Lsinϕ(t) = 0,

oug > 0 est la constante gravitationnelle.

Passage d’une ODE scalairea un systeme

y(p)(t) = f(

t, y(t), y′(t), . . . , y(p−1)(t))

y(0) = y0

y′(0) = y10

y(p−1)(0) = yp−10

peut s’ecrire

{

Y ′(t) = F (t, Y (t))Y (0) = Y0

avec

Y (t) =

y(t)y′(t)

...y(p−1)(t)

: R 7→ Rp, Y0 =

y0

y10...

yp−10

∈ Rp

et

F : R × Rp 7→ R

p

(t× Z) 7→ F (t, Z)avec F (t, Z) =

Z2

Z3...

f(t, Z1, Z2, . . . , Zp)

.

Application a l’exemple du penduleL’equation differentielled’ordre deux

ϕ′′(t) +g

Lsinϕ(t) = 0,

ϕ(0) = ϕ0,ϕ′(0) = ψ0,

peut s’ecrire comme un systeme differentielautonomedu premier ordre

Φ′(t) = F (Φ(t)), Φ(0) =

(

ϕ0

ψ0

)

,

2

Page 3: Rapp Else Do

en introduisant la fonction

F : R2 7→ R

2

Z 7→ F (Z) =

(

Z2

−g

Lsin(Z1)

)

Systemes d’equations differentielles ordinaires d’ordre 1f : [0, T ] × R

N → RN

(P )

{

u′(t) = f(t, u) pour t ∈ [0, T ]u(0) = u0 ∈ R

N .

Cas ouf(t, u) estLipschitzienne par rapport au uniformement ent.C’est-a-dire qu’il existeL telle que pour toutx, x∗ ∈ R

m, et t ∈ [0, T ] :

|f(t, x) − f(t, x∗)| ≤ L|x− x∗|.

La constanteL est laconstante de LipschitzExistence et unicite d’une solution globaleTheoreme de Cauchy-LipschitzSoitT > 0, y0 ∈ R

m et f(t, x) une fonction continue de[0, T ] × Rm dansRm, Lipschitzienne par rapport

ax uniformement ent.Alors il existe une unique fonctiony(t) de[0, T ] dansRm solution de l’equation differentielle

y′(t) = f(

t, y(t))

, y(0) = y0.

Existence et unicite d’une solution localeSi f est localementLipschitzienne, c’est-a-dire que pour toutB ⊂ R

m ouvert borne,x, x∗ ∈ B, et t ∈[0, T ], il existeL telle que

|f(t, x) − f(t, x∗)| ≤ LB|x− x∗|.

Alors il existe0 < τ ≤ T et une unique fonctiony(t) de[0, τ ] dansRm solution de l’equation differentielle

y′(t) = f(

t, y(t))

, y(0) = y0.

1.2 Methodes numeriques de resolution

– Discretisation de l’intervalle[0, T ] : t0 = 0 < . . . < ti < . . . < tn = TDiscretisation uniforme :ti+1 − ti = h, avecnh = T

– Methode numeriqueexplicitea un pas : definition d’une solution approcheeyi ≈ y(ti) suite deRm

{

yi+1 = yi + hφ(ti, yi, h) pour i = 0, . . . , n− 1y0 = y0

avecφ : [0, T ] × Rm × R −→ R

m

Methodes numeriquesa un pas– Methode consistante :φ(t, y, 0) = f(t, y).– Erreur de consistance

e(ti, y, h) = u(ti+1) − y − hφ(ti, y, h)

ouu(t) est la solution deu′(t) = f(t, u) avec la condition initialeu(ti) = y.

3

Page 4: Rapp Else Do

– Ordrep de la methode :E(h) = max

i||e(ti, y, h)|| ≤ Khp+1

avecK independant deti ety poury dans un borne.– Convergence

E(h) = maxi=0,..n

||y(ti) − yi|| → 0 quand h→ 0

– Stabiliteyi+1 = yi + hφ(ti, yi, h) avec y0 donnezi+1 = zi + hφ(ti, zi, h) + ǫi avec z0 donne

Le schema est dit stable s’il existe une constanteM ne dependant que deφ telle que

maxi=0,..n

||yi − zi|| ≤M

(

||y0 − z0|| +n∑

i=0

||ǫi||

)

Deux resultats fondamentaux– Une methode a un pas consistante et stable est convergente. Sif ∈ Cp([0, T ] × R

n) et si le schema estd’ordrep alors l’erreur globale de discretisation est enO(hp)

– Si φ : [0, T ] × RN × [0, h∗] → R

N est lipschitzienne eny uniformement par rapport at et h alors leschema est stable.

Exemples de schemas numeriques– Euler explicite

{

y0 = y0

yi+1 = yi + hf(ti, yi) pour i = 0, 1, ...n− 1

– Runge Kutta, deuxieme ordre

y0 = y0

k1 = f(ti, yi)k2 = f(ti + h/2, yi + hk1/2)yi+1 = yi + hk2 pour i = 0, 1, ...n− 1

– Runge Kutta d’ordre 4

y0 = y0

k1 = f(ti, yi)k2 = f(ti + h/2, yi + hk1/2)k3 = f(ti + h/2, yi + hk2/2)k4 = f(ti + h, yi + hk3)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

– Crank–Nicholson{

y0 = y0

yi+1 = yi + h2f(ti, yi) + h

2f(ti+1, yi+1) pour i = 0, 1, ...n− 1

– A chaque pas de temps on doit resoudre une equation non-lineaire (si la fonctionf est non-lineaire) pourdetermineryi+1 en fonction deyi.

Mise en oeuvre Matlab

4

Page 5: Rapp Else Do

EDO

{

y′(t) = ay(t),y(0) = y0

La solutiony(t) = y0eat est representee sur la Figure

avec son approximation numerique.

clearclose alla=-1;y0=1;T=1;n=10;

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);endplot(t,ye,’b-’,t,ybar,’r-o’)title(’Sch ema d’’Euler explicite’)legend(’exacte’,’Euler’)

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

0.4

0.5

0.6

0.7

0.8

0.9

1Schéma d’Euler explicite

exacteEuler

FIG. 1 – Solution de l’equation d’evolution exponentielle

Script 2. Fonction second membre

clearclose all% definition de la solution exacteyexacte=inline(’exp(t)’);% definition de la fonction second membref=inline(’y’,’t’,’y’);T=1; n=10; h=T/n; t=[0:n] * h;ye=yexacte(t);ybar=yexacte(t(1)) * ones(1,n+1);for i=1:n

ybar(i+1)=ybar(i)+h * f(t(i),ybar(i));endplot(t,ye,’b-’,t,ybar,’r-o’)

5

Page 6: Rapp Else Do

title(’Sch ema d’’Euler explicite’)legend(’exacte’,’Euler’)

Script 3. Fonctions second membre multiples

clear% definition of exact solutionsyexacte0=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 testsol=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));endplot(t,ye,’b-’,t,ybar,’r-o’)title(’Sch ema d’’Euler explicite’)legend(’exacte’,’Euler’)

Script 4 - Verification de l’ordre d’un schema

clearNbDisc=10; % Nombre de discr etisations a testerT=1.;% espacement uniforme dans une echelle logarithmiqueN=round(5 * logspace(1,3,NbDisc));ER=zeros(1,NbDisc);for i=1:NbDisc

ER(i)=ErreurEuler(N(i));endloglog(T./N,ER,’b-o’,T./N,T./N,’r-’)legend(’Erreur’,’O(h)’)title(’v erification de l’’ordre du sch ema d’’Euler’)

Fonctions pour le script 4Dans le fichierErreurEuler.m

6

Page 7: Rapp Else Do

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));ender=abs(ybar(n+1)-feval(sol,t(n+1)));

Dans le fichieryexacte0.m

function y=yexacte0(t)y=exp(t);

Dans le fichierf0.m

function dy=f0(t,y)dy=y;

Script 6. Equation du pendule

clearclose allT=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

% eulerybar1(:,i+1)=ybar1(:,i)+h * F(t(i),ybar1(:,i));% runge kuttayb=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’’ (Eu ler)’)figureplot(ybar(1,:),ybar(2,:),ybar1(1,:),ybar1(2,:))title(’comp. Euler et Runge-Kutta - espace des phases’)legend(’RK’,’Euler’)

Dans le fichierF.m

function YP=F(t,Y)YP=Y;YP(1)=Y(2);YP(2)=-sin(Y(1));

7

Page 8: Rapp Else Do

Script 7 - comparaisonequation scalaire et vectorielle

yexacte3=inline(’sin(t)’);f3=inline(’sqrt(1-y. * y)’,’t’,’y’);T=10; n=200; h=T/n; t=[0:n] * h;ye=yexacte3(t);ybar=yexacte3(t(1)) * ones(1,n+1);for i=1:n

ybar(i+1)=ybar(i)+h * f3(t(i),ybar(i));endYBAR=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));endplot(t,ye,t,ybar,t,YBAR(1,:))title(’Sch ema d’’Euler explicite’)legend(’exacte’,’Euler’,’Vect’)figure

Script 7 - comparaisonequation scalaire et vectorielle (2)

for i=1:nyb=ybar(i)+h * f3(t(i),ybar(i))/2;ybar(i+1)=ybar(i)+h * f3(t(i)+h/2,yb);

endYBAR=ones(2,n+1); YBAR(1,1)=0; YBAR(2,1)=1;for i=1:n

YB=YBAR(:,i)+h * F1(t(i),YBAR(:,i))/2;YBAR(:,i+1)=YBAR(:,i)+h * F1(t(i)+h/2,YB);

endplot(t,ye,t,ybar,t,YBAR(1,:))title(’Sch ema de RungeKutta ordre 2’)legend(’exacte’,’RK scal’,’Vect’)

Dans le fichierF1.m

function YP=F1(t,Y)YP=Y;YP(1)=Y(2); YP(2)=-Y(1);

Utilisation du solveur ODE de matlabode45, ode23, ode113, ode15s, ode23s, ode23t, ode23tb ,La syntaxe de base :

[T,Y] = solver(odefun,tspan,y0)

Arguments d’entree :odefun : fonction au second membre du systeme differentiel ci dessus f(t,y)tspan : [t0,t1,...,tf] temps ou on veut calculer la solution yy0 : Condition initiale y(t0) (vecteur colonne n composantes)

8

Page 9: Rapp Else Do

Arguments de sortie :T : les temps ou est calculee la solutionY : Les valeurs de la solution aux temps TScript 8 - Exemple d’utilisation 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 onplot(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));endTimp=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);

endplot(timp,yeimp,t,YBAR(1,:),timp,YBARimp(1,:))title(’Sch emas d’’Euler explicite et implicite’)legend(’exacte’,’explicite’,’implicite’)

9

Page 10: Rapp Else Do

1.3 Exemples d’equations differentielles

Exercice 1 1) Resoudre a la main l’equation differentielle{

x′(t) = 2x(t) − t2 − 3,x(0) = 2.

2) Ecrire un scriptMatlab pour calculer numeriquement la solution avec le schema d’Euler et compareravec la solution exacte. Representer les deux solutions sur l’intervalle [0, 2] sur le meme graphe.3) Meme question avec le schema de Runge-Kutta d’ordre 4.4) Meme question avec le solveurode45 deMatlab .5) Verifier numeriquement l’ordre de convergence des sch´emas d’Euler et Runge-Kutta.

Exercice 2 1) Resoudre a la main l’equation differentielle

x′(t) = 2x(t) − 3y(t) + 3et,y′(t) = −x(t) + y(t) − et,x(0) = 1,y(0) = 0.

On pourra se ramener a une equation differentielle d’ordre deux a une inconnue, par elimination.2) Ecrire un scriptMatlab pour calculer numeriquement la solution avec le schema d’Euler et compareravec la solution exacte. Representer les deux solutions sur l’intervalle [0, 2] sur le meme graphe (avec ungraphe pour chaque composantex(t) ety(t)).3) Meme question avec le schema de Runge-Kutta d’ordre 4.4) Meme question avec le solveurode45 deMatlab .

1.4 Application a la modelisation desepidemies

On considere que la population globale constante. Un petitgroupe d’individus porteur d’un virus est in-troduit et on etudie la propagation du virus en fonction du temps. En premiere approximation on fait deshypotheses simplificatrices. En particulier on regroupe les malades une fois gueris qui sont immunises avecceux qui ont decede de la maladie. On divise donc la population totale en trois categories– Les individus sainsS (pour “susceptibles” en anglais)– Les individus contaminesI (pour “infected” en anglais)– Les individus soit gueris, soit mortsR (pour “recovered”en anglais)On va etudier l’evolution des effectifs de chaque categorie en fonction du tempsS(t), I(t) etR(t). Pourcela on va supposer que– L’augmentation du groupe des contamines est proportionnel au nombre d’individus contamines et d’in-

dividus sainsrSI, avecr > 0 une constante. Le nombre d’individus sains decroıt inversement.– La transition du groupe des individus contamines vers le groupe des individus “gueris” se fait propor-

tionnellement au nombre de contaminesaI avec une constantea. Donc1/a mesure le temps passe dansle groupe contamine.

– On neglige le temps d’incubation de la maladie, les transitions du groupeS au groupeI sont instantanees.Avec ces hypotheses on peut ecrire le systeme differentiel SIR (aussi connu sous le nom de son auteurKermack-McKendrick) verifie par les effectifs des trois classes

dS

dt= −rSI,

dI

dt= rSI − aI,

dR

dt= aI.

(1)

10

Page 11: Rapp Else Do

Pour une population donneeN = S+I+R constante, la propagation de l’epidemie varie suivant les valeursdes constantesr eta et des conditions initiales

S(0) = S0,I(0) = I0 = N − S0,R(0) = 0.

(2)

Exercice 3 1. Resoudre le systeme (1) avec le schema de Runge-Kutta d’ordre 4. Parametriser le pro-gramme de maniere a pouvoir faire varier facilement les coefficients et les conditions initiales.

2. Tracer sur le meme graphe l’evolution des trois groupesen fonction du temps

3. Poura, r etN fixes, faire varierS0 et I0 et a chaque fois tracerI(t) en fonction deS(t). Qu’observe-t-on ?

4. Un peu de maths... CalculerdIdS

et integrer. Quel est le nombre maximum de personnes contaminesau cours de l’epidemie, en fonction deN et ρ = a/r. Retrouver ce resultat sur les simulationsnumeriques precedentes.

5. CalculerdSdR

et integrer. En deduire une equation differentielle scalaire pourR uniquement. Integrernumeriquement.

6. Un exemple vecu dans un pensionnat de garcons en Angleterre en 1978 :N = 763, S0 = 762, I0 = 1,ρ = 202, r = 2.18 × 10−3/jour. TracerS et I en fonction du temps.

11