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
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
É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
É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
É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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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