1 Méthode d`Euler - Site Personnel de Arnaud de Saint Julien

publicité
©Arnaud de Saint Julien -Informatique- MPSI Lycée La Merci 2015-2016
1
TP : Résolution d’équations différentielles : méthode d’Euler
Objectifs du TP
Découvrir la méthode d’Euler qui permet de résoudre de manière approchée une équation différentielle.
1
Méthode d’Euler
Le théorème de Cauchy-Lipschitz assure que sous des conditions raisonnables, il existe une unique application y
de classe C 1 sur [a, b] dont la valeur est imposée en a (condition initiale) et qui vérifie une équation différentielle
de la forme y ′ (t) = F (t, y(t)) pour t ∈ [a, b]. L’objet des schémas numériques est d’obtenir des approximations
de ces solutions dont la théorie donne l’existence mais ne dit pas comment les obtenir. En pratique, on tente en
général d’approcher y en un certain nombre de points répartis sur [a, b].
1.1
Le principe de la méthode d’Euler
L’idée principale est que «localement la courbe ressemble à sa tangente». Ainsi si h est proche de 0, on a
y(a + h) ∼ y(a) + hy ′ (a) = y(a) + hF (a, y(a)).
On peut donc approcher y(a + h) par la quantité y(a) + hF (a, y(a)).
On découpe ainsi l’intervalle [a, b] en n segments de même longueur h = b−a
n (on dit que h est le pas). On
dispose ainsi de n + 1 abcisses tk = a + kh pour k ∈ {0, . . . , n}. On va alors approximer l’ordonnée y(tk ) par le
nombre yk défini par la relation de récurrence :
yk+1 = yk + hF (tk , yk ).
On initialise enfin avec la condition initiale y0 = y(a).
Exercice 1 (Un exemple à la main) On considère l’équation différentielle
y ′ (t) − y(t) = t2
et y(0) = 1.
On a donc F (t, y) = t2 + y.
1. On prend ici [a, b] = [0, 4] et n = 4 donc un pas de 1. Calculer y1 , y2 , y3 , y4 .
2. Tracer la ligne brisée passant par les points (t0 , y0 ), (t1 , y1 ), . . . , (t4 , y4 ).
3. On peut prouver que l’unique solution de cette équation est la fonction définie par f (t) = 3et −(t2 +2t+2).
Tracer la courbe de f sur le même graphique que précédemment.
Exercice 2 Écrire une fonction euler calculant les valeurs approchées d’une solution d’une équation différentielle selon la méthode d’Euler :
def euler(F, t0,tf,y0, n):
"""Données:
F(t,y) une fonction
t0,tf deux réels avec t0 < tf
y0 un réel
n>0 un entier
Résultat: la liste des temps [t0,...,tn] et la liste des approximations de y: [y_0, ...y_n]
"""
return T,Y
©Arnaud de Saint Julien -Informatique- MPSI Lycée La Merci 2015-2016
2
La fonction devra renvoyer le tuple formé par la liste des temps tk , suivi de la liste des yk , approximations de
f (tk ).
Exercice 3 Utiliser cette fonction euler pour retouver les valeurs calculées de l’exercice 1.
Exercice 4 Tester votre fonction précédente euler avec l’équation y ′ = y définie sur [0, 1] avec y(0) = 1.
1. Choisir n = 5 puis n = 10 et n = 100 et tracer sur un même graphique les trois courbes obtenues.
2. Comparer avec la solution théorique. Quel nombre doit approximer yn ?
Exercice 5 (Une non linéaire : chute libre avec frottements proportionnels au carré de la vitesse)
On considère la chute libre d’un objet. On émet l’hypothèse qu’il est soumis à son poids et à une force de frottement de l’aire proportionnelle au carré de la vitesse. À l’aide du principe fondamental de la dynamique, on
obtient que
k
dv
+ v 2 = g.
dt
m
On observe que l’objet d’une masse de 80 kg, atteint une vitesse limite de 69.5 mètres par secondes. En utilisant
k 2
k
k
l’équation différentielle, cette vitesse limite vl doit vérifier m
v = g et donc m
= vg2 . Ceci permet de calculer m
k
9.8
−3
et k. On trouve m = 69.52 = 2 × 10 SI, puis k = 0.16.
Représenter à l’aide de la méthode d’Euler la courbe de la vitesse pendant les 10 premières secondes. On prendra
pour vitesse initiale zéro puis 4 m.s−1 . On pourra aussi changer la masse.
1.2
Généralisation à des systèmes différentiels ou des ED d’ordre supérieur
Exercice 6 Écrire une fonction euler2 qui permet de résoudre un système différentiel du type
′
x (t) = F (t, x(t), y(t))
y ′ (t) = G(t, x(t), y(t))
avec pour conditions initiales x(t0 ) = x0 et y(t0 ) = y0 . Cette fonction renverra trois listes, celles des temps
t0, . . . , tn , celle des approximations des valeurs de x en ces temps, et celle des approximations des valeurs de y
en ces temps. On pourra démarrer ainsi :
def euler_systeme(F,G,t0,tf,x0,y0,n):
t =
x =
y =
return(temps, X, Y)
Exercice 7 (Modèle proie-prédateur) Citons Wikipedia : en mathématiques, les équations de Lotka-Volterra,
que l’on désigne aussi sous le terme de «modèle proie-prédateur», sont un couple d’équations différentielles nonlinéaires du premier ordre, et sont couramment utilisées pour décrire la dynamique de systèmes biologiques dans
lesquels un prédateur et sa proie interagissent. Elles ont été proposées indépendamment par Alfred James Lotka
en 1925 et Vito Volterra en 1926, notamment comme modèle pour la dynamique du lynx et du lièvre des neiges.
Nous proposons le modèle suivant :
x′ (t)
y ′ (t)
= x(t)(3 − 2y(t))
= −y(t)(4 − x(t))
avec les conditions initiales x0 = 6 et y0 = 4 et une étude sur une durée de 10 ans.
1. Tracer sur un même graphique les courbes décrivant l’évolution de lynx et de lièvres au cours du temps.
On observera en particulier que la solution obtenue est périodique.
©Arnaud de Saint Julien -Informatique- MPSI Lycée La Merci 2015-2016
3
2. Tracer le portrait de phase de ce système, c’est-à-dire l’ensemble des points (x(t), y(t)) pour t ∈ [0, 10] où
x(t) et y(t) représentent respectivement le nombre de lynx et de lièvres à l’instant t. Quelle caractéristique
de la courbe confirme la périodicité de la solution ?
Exercice 8 (Pendule non amorti) L’étude du «pendule simple non amorti» conduit à une équation différentielle d’ordre deux de la forme :
θ′′ (t) + sin(θ(t)) = 0
En posant x(t) = θ(t) et y(t) = θ′ (t), cette équation peut s’écrire à l’aide d’un système différentiel d’ordre 1 :
x′ (t)
y ′ (t)
=
x(t)
= − sin(x(t))
1. Le résoudre sur [0, 6π] avec les conditions initiales θ(0) = 0 et θ′ (0) = 1.
2. Tracer l’évolution de y(t) au cours du temps. Que dire de la solution ?
3. Tracer le portrait de phase, c’est-à-dire l’ensemble des points de coordonnées (y(t), y ′ (t)) pour t ∈ [0, 4π].
4. Tracer sur un même graphique les 5 portraits de phase correspondant aux 5 conditions initiales suivantes :
θ(0) = 0 et θ′ (0) ∈ {0.5, 1, 2, 2.05, 2.4}. Commenter.
2
Compléments
2.1
La fonction scipy.integrate.odeint de Python
2.2
Implémenter des méthodes plus performantes, comme Heun ou RK4
2.3
Le point de vue vectoriel
Un système différentiel linéaire d’ordre 1, peut se voir comme une équation différentielle linéaire d’ordre 1,
vérifiée par un vecteur X(t). On peut alors utiliser les tableaux numpy pour rendre la première fonction euler
utilisable aussi pour les ED vectorielles.
Téléchargement