TP Info Intégration numérique 2018/19
O.KELLER – TSI1 Page 1 sur 2 Lycée Louis Vincent Metz
TP d’informatique Méthode d’Euler
But du TP :
Résoudre une équation différentielle avec Python Effectuer une représentation graphique avec Python
Problématique :
On souhaite résoudre numériquement l’équation différentielle régissant la vitesse v d’une particule soumise à un frottement fluide quadratique (chute libre d’un objet non aérodynamique) :
dv t
( )
dt + k
mv2
( )
t =g (*)où g = 9,81 m/s2 ; m = 2 kg et k = 0,01 USI. On considère de plus v(0) = 0 m/s.
Pour résoudre ce type d’équation, l’informatique utilise une méthode de calcul par propagation, appelée méthode d’Euler.
Rappel de la méthode d’Euler
L’équation différentielle (*) peut se réécrire sous la forme : dv t
( )
dt =− k
mv2
( )
t +g=F(v,t)En partant de la condition initiale, on peut alors construire la fonction v(t) en assimilant la fonction à sa tangente au point n. On passe ainsi du point n au point n+1 par la procédure suivante :
tn+1=tn+Δt vn+1 =vn+F(vn,tn)× Δt
⎧⎨
⎪
où Δt représente l’incrément temporel. Plus Δt sera faible (donc le nombre de point de calcul élevé), plus ⎩⎪
l’approximation sera efficace.
Travail demandé :
1ere étape :Créer un programme python, y importer la bibliothèque matplotlib et y définir les paramètres de calcul : - Valeur de g, m et k.
- Définir un nombre N de points de calcul (50 pour commencer) et une durée maximale pour le calcul de v (10 secondes pour commencer).
- Faire calculer la valeur de l’incrément Δt.
2e étape :
- Créer la fonction F(v,t) comme indiquée au début de l’énoncé.
- Créer une fonction euler(F, cond_init) où cond_init est la condition initiale de v, qui réalise le travail suivant :
TP Info Intégration numérique 2018/19
O.KELLER – TSI1 Page 2 sur 2 Lycée Louis Vincent Metz
o Déterminer et stocker les valeurs de t dans une liste T par incrémentation successive.
o Déterminer et stocker la valeur de v(t) dans une liste V o Retourner les listes sous forme d’un tuple (T,V) 3e étape :
- Créer une fonction courbe(x,y) où x et y sont des listes de nombres de taille identique, qui permet de tracer la courbe y en fonction de x. On utilisera pour cela la fonction plot(,). (cf TP précédents) - Utiliser cette fonction pour tracer la représentation graphique de v(t).
- Observer l’évolution du graphique en fonction du nombre de points de calcul utilisé.
4e étape :
- En réutilisant les méthodes précédentes, écrire une fonction position(v, Ν, Δt, cond_init) script permettant de déterminer la position z(t) de la particule à partir de la liste v en utilisant la méthode des rectangles.
- Représenter le graphique z(t).
5e étape : Utilisation des fonctions prédéfinies de Python : Ouvrez le programme EDordre1 placé sur le réseau.
- Comme précédemment, y définir les valeurs des différents paramètres et un nombre N de point de calcul.
- Définir une fonction F(v,t) comme dans la partie précédente.
- Définir une liste t de N valeur s’étendant de 0 à tmax.
- Définir la condition initiale v0
- Utiliser la fonction odeint pour résoudre. (se référer à l’aide).
- Observer la forme des solutions. Comment récupérer les différentes valeurs de v(t) ? - Tracer le graphique obtenu.
- Modifier le script précédent pour déterminer la position z(t) et tracer son graphique.