informatique - cn3 - david malka mpsi · informatique - cn3 résolution numérique d’une...

27
Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI 2018-2019 1 / 27

Upload: others

Post on 04-Jun-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Informatique - CN3 - David Malka MPSI · Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI

Informatique - CN3Résolution numérique d’une équation différentielle ordinaire

D.Malka

MPSI 2018-2019

D.Malka Informatique - CN3 MPSI 2018-2019 1 / 27

Page 2: Informatique - CN3 - David Malka MPSI · Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI

Sommaire

Sommaire

1 Équations différentielles ordinaires (EOD)

2 Résolution numérique approchée d’équations d’ordre 1

3 Résolution numérique d’équation d’ordre supérieur à 1

4 Fonction prédéfinies en Python

D.Malka Informatique - CN3 MPSI 2018-2019 2 / 27

Page 3: Informatique - CN3 - David Malka MPSI · Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI

Équations différentielles ordinaires (EOD)

Sommaire

1 Équations différentielles ordinaires (EOD)

2 Résolution numérique approchée d’équations d’ordre 1

3 Résolution numérique d’équation d’ordre supérieur à 1

4 Fonction prédéfinies en Python

D.Malka Informatique - CN3 MPSI 2018-2019 3 / 27

Page 4: Informatique - CN3 - David Malka MPSI · Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI

Équations différentielles ordinaires (EOD) Exemples d’équations différentielles

Equations différentielles

Equations différentielles ordinaires (EOD)

y ′ = ay

y ′ =y

a.t + y{x ′ = ax−bxyy ′ = cy + dyx

Forme générale d’une équation d’ordre 1 pour une fonction dépendant d’une seulevariable t : {

y ′ = f (y (t), t)y (a) = y0

D.Malka Informatique - CN3 MPSI 2018-2019 4 / 27

Page 5: Informatique - CN3 - David Malka MPSI · Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI

Équations différentielles ordinaires (EOD) Existence de solutions d’une équation différentielle

Existence de solutions

Existence de solutionsLa majorité des équations différentielles n’admet pas de solution analytique.

Mais des preuves non constructives peuvent assurer qu’elles admettent une solution.Exemple : le théorème de Cauchy-Lipschitz.

D.Malka Informatique - CN3 MPSI 2018-2019 5 / 27

Page 6: Informatique - CN3 - David Malka MPSI · Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI

Résolution numérique approchée d’équations d’ordre 1

Sommaire

1 Équations différentielles ordinaires (EOD)

2 Résolution numérique approchée d’équations d’ordre 1

3 Résolution numérique d’équation d’ordre supérieur à 1

4 Fonction prédéfinies en Python

D.Malka Informatique - CN3 MPSI 2018-2019 6 / 27

Page 7: Informatique - CN3 - David Malka MPSI · Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI

Résolution numérique approchée d’équations d’ordre 1 Intérêt

Résolution approchée

Résolution approchéeOn détermine de manière algorithmique une solution approchée de l’équationdifférentielle en discrétisant l’équation.

La fonction solution de l’équation différentielle est alors une liste d’approximations(yi )i∈N des valeurs (y (ti ))i∈N prises par la fonction pour différents antécédents (ti )i∈N.

Il faut s’assurer de la convergence et de la stabilité numérique de l’algorithme. Il fautcontrôler et estimer l’erreur commise par rapport à la solution exacte.

D.Malka Informatique - CN3 MPSI 2018-2019 7 / 27

Page 8: Informatique - CN3 - David Malka MPSI · Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI

Résolution numérique approchée d’équations d’ordre 1 Intérêt

Schéma numérique

Soit le problème de Cauchy : {y ′ = f (y (t), t)y (a) = y0

On appelle schéma numérique la relation de récurrence permettant de calculersuccessivement les termes de la suite (yi ) en discrétisant les abscisses (ti ).

D.Malka Informatique - CN3 MPSI 2018-2019 8 / 27

Page 9: Informatique - CN3 - David Malka MPSI · Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI

Résolution numérique approchée d’équations d’ordre 1 Principe de la méthode d’Euler

Méthode d’Euler explicite

I On cherche à résoudre sur [t0,T ] l’équation de la forme :

y ′ = f (y (t), t) avec y (t0) = y0

I Si y (t) est de classe C1 alors, connaissant y (ti ), on peut évaluer de façonapprochée, y (ti+1) par son développement de Taylor à l’ordre 1.

y (ti+1) = y (ti ) + y ′(ti )(ti+1− ti )I Avec y ′ = f (y (t), t), il vient y (ti+1) = y (ti ) + f (y (ti ), ti )(ti+1− ti ).I Sauf qu’on ne connaît pas les images y (ti ) sauf pour t0 = a.I On calcule donc une valeur approchée y1 de y (t1) ainsi :

y (t1)≈ y1 = y0 + f (y0, t0)(t1− t0)I Par récurrence, on détermine tous les termes de la suite (yi ) via le schéma

numérique d’Euler explicite :

yi+1 = yi + f (yi , ti )(ti+1− ti )I Si en plus, le pas de discrétisation h = ti+1− ti est constant :

yi+1 = yi + f (yi , ti )h avec ti = t0 + i.hD.Malka Informatique - CN3 MPSI 2018-2019 9 / 27

Page 10: Informatique - CN3 - David Malka MPSI · Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI

Résolution numérique approchée d’équations d’ordre 1 Principe de la méthode d’Euler

Méthode d’Euler explicite

I Par récurrence, on détermine tous les termes de la suite (yi ) via le schémanumérique d’Euler explicite :

yi+1 = yi + f (yi , ti )(ti+1− ti )

I Si en plus, le pas de discrétisation h = ti+1− ti est constant :

yi+1 = yi + f (yi , ti )h avec ti = t0 + i.h

Attention yi 6= y (ti )!Il est important de comprendre que les termes suite (yi ) ne sont pas les images y (ti ) dela fonction mais des valeurs approchées.

On espère qu’en réduisant le pas h de discrétisation, cette suite converge vers la suitey (ti ) i.e. que :

∀i limh→0

yi = y (ti )

D.Malka Informatique - CN3 MPSI 2018-2019 10 / 27

Page 11: Informatique - CN3 - David Malka MPSI · Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI

Résolution numérique approchée d’équations d’ordre 1 Principe de la méthode d’Euler

Interprétation géométrique

0.0 0.2 0.4 0.6 0.8 1.0t

0.5

1.0

1.5

2.0

2.5

3.0y

Interpretation_geometrique de la methode d'Euler

"vraie" solution y=exp(t)

Methode d'Euler, h=1/3

D.Malka Informatique - CN3 MPSI 2018-2019 11 / 27

Page 12: Informatique - CN3 - David Malka MPSI · Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI

Résolution numérique approchée d’équations d’ordre 1 Implémentation en Python

Implémentation en Python

� �1

2 def Euler(f,y0,a,b,n):3 ’’’4 Integre l’equation y’(t)=f(y(t),t) avec y(a)=y0 selon le schema

explicite d’Euler5 f : function6 y0,a,b :floats. [a,b] : intervalle de resolution7 n : int, nombre de points. Pas de discretisation : h=(b-a)/(n-1)8 t,y : list of floats9 ’’’

10 h=(b-a)/(n-1)11 y=np.zeros(n);y[0]=y012 t=np.linspace(a,b,n,endpoint=True)13 for i in range(0,n-1):14 y[i+1]=y[i]+f(y[i],t[i])*h15 return t,y� �

D.Malka Informatique - CN3 MPSI 2018-2019 12 / 27

Page 13: Informatique - CN3 - David Malka MPSI · Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI

Résolution numérique approchée d’équations d’ordre 1 Implémentation en Python

Erreur

0.0 0.2 0.4 0.6 0.8 1.0t

0.5

1.0

1.5

2.0

2.5

3.0

y

Interpretation_geometrique de la methode d'Euler

"vraie" solution y=exp(t)

Methode d'Euler, h=1/3

I Erreur locale ei ∼12

f ”(xi )h2.

I Erreur globale E qui provient de l’accumulation des erreurs des itérationsprécédentes.

D.Malka Informatique - CN3 MPSI 2018-2019 13 / 27

Page 14: Informatique - CN3 - David Malka MPSI · Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI

Résolution numérique approchée d’équations d’ordre 1 Influence du pas de discrétisation

Influence du pas discrétisation

0 1 2 3 4 50

20

40

60

80

100

120

140

160Fonction exp(t) calculee par la methode d'Euler avec h=0.5

exacte

calculee

0 1 2 3 4 50

20

40

60

80

100

120

140

160Fonction exp(t) calculee par la methode d'Euler avec h=0.05

exacte

calculee

I Plus h est petit, plus la solution approchée sera consistante . . .I . . . jusqu’à un certain point. En deçà les erreurs numériques explosent !

I Complexité de la méthode d’Euler : O(n) avec n =b−a

h. Plus h est petit, plus le

temps de calcul est élevé.I Il faut trouver un compromis.

D.Malka Informatique - CN3 MPSI 2018-2019 14 / 27

Page 15: Informatique - CN3 - David Malka MPSI · Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI

Résolution numérique approchée d’équations d’ordre 1 Influence du pas de discrétisation

Consistance de la méthode d’Euler

10-7 10-6 10-5 10-4 10-3 10-2 10-1 100

pas h

10-8

10-7

10-6

10-5

10-4

10-3

10-2

10-1

100

err

eur

rela

tive e

(h)

sur

exp(1

)

Erreur de consistance

Erreur relative e par calcul itératif pour différents pas h avec la méthode d’Euler : pourh petit, log(e) = α log(h) + b soit e = k .hα.

D.Malka Informatique - CN3 MPSI 2018-2019 15 / 27

Page 16: Informatique - CN3 - David Malka MPSI · Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI

Résolution numérique approchée d’équations d’ordre 1 Stabilité

Influence du pas discrétisation

0 1 2 3 4 50.0

0.2

0.4

0.6

0.8

1.0Fonction exp(-t) calculee par la methode d'Euler avec h=0.5

exacte

calculee

0 1 2 3 4 50

20

40

60

80

100

120

140

160Fonction exp(t) calculee par la methode d'Euler avec h=0.5

exacte

calculee

I toujours instable si l’EOD est instable elle-même (y ′− y = 0) i.e l’erreur globalediverge.

I stable si l’EOD stable et si h suffisamment petit (y ′ + y = 0) i.e l’erreur globale estbornée.

D.Malka Informatique - CN3 MPSI 2018-2019 16 / 27

Page 17: Informatique - CN3 - David Malka MPSI · Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI

Résolution numérique approchée d’équations d’ordre 1 Autres schémas numérique en bref

Autres schémas numérique en bref

La méthode d’Euler n’est pas efficace et donc jamais utilisée en pratique. On peutdéfinir d’autre schémas numérique dont certains seront abordés en TD. Par exemple

I Idée : pousser le développement en série de la fonction y à un ordre supérieuret/ou composer différents schémas numérique entre eux. Exemple :

Méthode d’Euler implicite : yi+1 = yi + f (yi+1, ti+1)hMéthode d’Heun : ordre 2Méthode de Runge-Kutta : ordre 4

I Méthode à pas adaptatif : le pas hi est choisi d’autant plus petit que les variationslocales de la fonction y sont importante i.e. que |y ′| est élevée.

D.Malka Informatique - CN3 MPSI 2018-2019 17 / 27

Page 18: Informatique - CN3 - David Malka MPSI · Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI

Résolution numérique d’équation d’ordre supérieur à 1

Sommaire

1 Équations différentielles ordinaires (EOD)

2 Résolution numérique approchée d’équations d’ordre 1

3 Résolution numérique d’équation d’ordre supérieur à 1

4 Fonction prédéfinies en Python

D.Malka Informatique - CN3 MPSI 2018-2019 18 / 27

Page 19: Informatique - CN3 - David Malka MPSI · Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI

Résolution numérique d’équation d’ordre supérieur à 1

{Equation différentielle d’ordre supérieur à 1

Exemple : chute verticale avec frottement : y =−g−λy .

Cette équation différentielle d’ordre 2 est équivalente au système d’équationsdifférentielles d’ordre 1 : {

y ′ = yp

y ′p =−g−λyp

On applique alors un schéma numérique, par exemple d’Euler, à chacune deséquations du système pour évaluer yp(t) = y ′(t) et y (t).

D.Malka Informatique - CN3 MPSI 2018-2019 19 / 27

Page 20: Informatique - CN3 - David Malka MPSI · Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI

Fonction prédéfinies en Python

Sommaire

1 Équations différentielles ordinaires (EOD)

2 Résolution numérique approchée d’équations d’ordre 1

3 Résolution numérique d’équation d’ordre supérieur à 1

4 Fonction prédéfinies en Python

D.Malka Informatique - CN3 MPSI 2018-2019 20 / 27

Page 21: Informatique - CN3 - David Malka MPSI · Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI

Fonction prédéfinies en Python Odeint

Fonction prédéfinies en Python

Module integrate de la bibliotheque scipy :

import scipy.integrate as integ

Fonction odeint.

� �1 import scipy.integrate as integ2 integ.odeint(f,init,t)3 #f fonction telle que y’=f(y,t)4 # t=[a...b], instants t auxquels y(t) est calculee5 #y(a)=init� �

D.Malka Informatique - CN3 MPSI 2018-2019 21 / 27

Page 22: Informatique - CN3 - David Malka MPSI · Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI

Fonction prédéfinies en Python Odeint

Charge d’un condensateur

dUdt

+uτ

=Eτ� �

1 C=1e-62 R=1e33 tau=R*C4 E=65

6 def f(u,t):7 rhs=-u/tau+E/tau8 return rhs9

10 u0=011 t=np.linspace(0,5*tau,1000)12 u=integ.odeint(f,u0,t)� �

D.Malka Informatique - CN3 MPSI 2018-2019 22 / 27

Page 23: Informatique - CN3 - David Malka MPSI · Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI

Fonction prédéfinies en Python Odeint

Charge d’un condensateur

0.000 0.001 0.002 0.003 0.004 0.005t(s)

0

1

2

3

4

5

6

u(V

)

D.Malka Informatique - CN3 MPSI 2018-2019 23 / 27

Page 24: Informatique - CN3 - David Malka MPSI · Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI

Fonction prédéfinies en Python Odeint

Système non linéaire

{x ′ = cos(t)yy ′ = sin(t)x� �

1 def f(sol,t):2 x=sol[0]3 y=sol[1]4

5 rhs_x=np.cos(t)*y6 rhs_y=np.sin(t)*x7 return [rhs_x,rhs_y]8

9 init=[1,1]10

11 t=np.linspace(0,20,1000000)12 sol=integ.odeint(f,init,t)13

14 print(sol)� �D.Malka Informatique - CN3 MPSI 2018-2019 24 / 27

Page 25: Informatique - CN3 - David Malka MPSI · Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI

Fonction prédéfinies en Python Odeint

Système non linéaire

0 5 10 15 20t

2000

1000

0

1000

2000

3000

4000x(t)

y(t)

D.Malka Informatique - CN3 MPSI 2018-2019 25 / 27

Page 26: Informatique - CN3 - David Malka MPSI · Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI

Fonction prédéfinies en Python Odeint

Oscillateur de Van der Pol

x = µ(1− x2)x− x ⇔{

x ′ = xp

x ′p = µ(1− x2)xp− x� �1 def f(sol,t):2 x=sol[0]3 xp=sol[1]4 rhs_x=xp5 rhs_xp=mu*(1-x**2)*xp-x6 return [rhs_x,rhs_xp]7 #RESOLUTION8 init=[0,0.1]9 t=np.linspace(0,100,10000)

10 sol=integ.odeint(f,init,t)11 x=sol[:,0]12 xp=sol[:,1]� �

D.Malka Informatique - CN3 MPSI 2018-2019 26 / 27

Page 27: Informatique - CN3 - David Malka MPSI · Informatique - CN3 Résolution numérique d’une équation différentielle ordinaire D.Malka MPSI 2018-2019 D.Malka Informatique - CN3 MPSI

Fonction prédéfinies en Python Odeint

Oscillateur de Van der Pol

3 2 1 0 1 2 3x

3

2

1

0

1

2

3dx/d

t

Cycle limite de l'oscilllateur de van der Pol

D.Malka Informatique - CN3 MPSI 2018-2019 27 / 27