:
Nous présentons à la page suivante un exemple de script écrit en python3 pour résoudre l'équation
par la méthode d'Euler. Un script est un fichier qui contient les instructions qui seront exécutées par python3 (le nom du fichier est toujours de la forme nom.py de façon à être reconnu par python3). Il est commode d'utiliser l'éditeur IDLE pour écrire un script et pour l'exécuter (il suffit d'utiliser la touche F5).
Le coeur du programme est la traduction de l'algorithme
en la boucle : for i in range(0,N) :
y = y +h*f(t,y) t = t + h
Les données de Cauchy sont entrées par :
t, y = eval(input("Instant initial, valeur initiale :")) et le champ de vecteur f est défini par :
def f(t,x) :
return t - t*x
Les commandes T = [t] et Y = [y] créent des listes (suites finies) de longueur variable, qui correspondent respectivement à (t , t , ... , t ) et (y , y , ..., y ). Au stade où ces listes sont crées (T = [t] et Y = [y]), chacune d'entre d'elles ne comporte qu'un seul élément (respectivement t et y), qui sont les valeurs entrées initialement (autrement ces listes correspondent alors au données de Cauchy).
Ces listes sont allongées à chaque itération de la boucle lorsque les commandes Y.append(y) et T.append(t) sont exécutées : ces commandes ont pour effet d'ajouter les valeurs courantes de de t et y à la fin de, respectivement, T et Y.
Dernière étape de l'algorithme : après avoir importé la totalité des commandes du
"module" "matplotlib.pyplot", on crée la figure avec les valeurs de T en abscisse et les valeurs de Y en ordonnée par la commande plot(T,Y,'k-')
# Discrétisation d'une équation différentielle par la méthode d'Euler def f(t,x) :
return t - t*x
t,y = eval(input("Instant initial, valeur initiale : "))
# y = eval(input("valeur initiale : "))
L = eval(input("longueur de l'intervalle de temps : ")) N = eval(input("nombre d'itérations : "))
T = [t]
Y = [y]
h = L/N
for i in range(0, N):
y = y + h*f(t,y) t = t + h Y.append(y) T.append(t)
# Impression
from matplotlib.pyplot import * plot(T,Y,'k-')
xlabel('t') ylabel('y(t)')
# axis('equal') # pour forcer la base à être orthonormée show()
Mardi 18 mai : examen, 9 h - 12 h Encore un cours le 4 ou le 11 mai, à préciser