TD3 Python
TD3 Python
TD3 Python
Python
Objectif
L'objectif de la séance est d'utiliser le logiciel Python et ses bibliothèques numpy et scipy pour simuler
les solutions du système d'équations diérentielles vu dans les deux premiers TD à l'aide des méthodes
d'intégration numérique étudiées en cours.
Introduction
1. Dans le menu Windows, sélectionnez Anaconda et lancez Spyder. Le programme peut mettre du
temps à se lancer, il est inutile de multiplier les double-clics. Spyder est un environnement de
développement pour Python.
Une fois Spyder ouvert, vous verrez à gauche une grande fenêtre principale, l'éditeur, ainsi que deux
fenêtres à droite, l'aide (en haut) et la console (en bas). Spyder peut être utilisé de deux façons diérentes.
La première consiste à saisir des instructions Python dans la console et à les exécuter grâce à la touche
entrée. Spyder eectue alors l'instruction demandée et ache le résultat dans la console.
2. Dans la fenêtre de commande, tapez les instructions suivantes l'une après l'autre et exécutez-les
avec la touche entrée. Expliquez l'eet de chaque instruction.
a=1
a=a+1
a
l=[10, 20, 30, 40]
l
l[2]
len(l)
for i in range(0,len(l)): l[i]+=1
Quand on souhaite eectuer une suite d'instructions, plutôt que de les taper les unes après les autres
dans la fenêtre de commande, on utilise plus volontiers la seconde méthode : on se sert d'un ou plusieurs
chiers texte dans lesquels on enregistre la suite d'instructions à eectuer, puis on demande à Python
d'eectuer toutes ces instructions. C'est cette méthode que nous allons utiliser.
1
td3.py
1 import numpy as np
2 import matplotlib.pyplot as plt
3
4 # constantes
5 u = 9
6
7 # fonction qui renvoie dx/dt
8 def vitesse(x,t):
9 x1 = x[0]
10 x2 = x[1]
11 dx1_dt = 10 * x1 * ??? # à compléter
12 dx2_dt = u - ??? # à compléter
13 dx_dt = np.array([dx1_dt, dx2_dt])
14 return dx_dt
15
4. Complétez les trous ( ? ? ?) pour que la fonction code les équations diérentielles du TD.
5. Sauvegardez ce chier dans votre espace de stockage personnel (disque N ://) en allant dans Fichier,
puis Enregistrer sous. Nous appellerons ce chier td3.
6. Exécutez ce chier en cliquant sur l'icône Exécuter le chier (triangle vert). Une fenêtre avec des op-
tions apparaît. Assurez-vous que les options Exécuter dans une nouvelle console dédiée et Supprimer
toutes les variables avant l'exécution sont bien cochées.
7. Testez le chier en exécutant dans la console vitesse([9,1],0). Que représente le résultat obtenu ?
Les valeurs sont-elles cohérentes ?
2
44 plt.plot(instants, x1_lin)
45 plt.legend(['Euler', 'linéarisation'])
46 plt.xlabel('t')
47 plt.ylabel('x1')
48
49 plt.subplot(3, 1, 2)
50 plt.plot(instants, x_euler[:,1])
51 plt.plot(instants, x2_lin)
52 plt.legend(['Euler', 'linéarisation'])
53 plt.xlabel('t')
54 plt.ylabel('x2')
55
56 plt.subplot(3, 1, 3)
57 plt.plot(instants, y_euler)
58 plt.plot(instants, y_lin)
59 plt.legend(['Euler', 'linéarisation'])
60 plt.xlabel('t')
61 plt.ylabel('y')
62
63 plt.show()
La bibliothèque scipy de Python dispose en fait déjà de fonctions qui permettent de calculer numéri-
quement les solutions des équations diérentielles.
16. Chargez la fonction odeint de la bibliothèque scipy en ajoutant au début du chier l'instruction
from scipy.integrate import odeint.
17. Ajoutez l'instruction suivante dans votre chier td3 après la boucle de la partie méthode d'Euler.
td3.py (extrait)
# méthode avec odeint
x_sim = odeint(vitesse, x0, instants)
3
18. Rajoutez dans votre code, dans la partie sorties, une ligne pour calculer la sortie correspondante
y_sim.
19. Ajoutez dans votre code, dans la partie affichage, des commandes permettant d'acher les courbes
obtenues avec odeint sur les mêmes graphiques.
20. Sauvegardez votre chier, puis exécutez-le. Comparez les résultats obtenus avec ceux des autres
méthodes.
Nous allons maintenant modier notre chier pour simuler les résultats de la question 7.