Livre_silo 30 août 2013 16:32 Page 226
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
226
Informatique pour tous
POUR ALLER PLUS LOIN Pas adaptatif et méthodes multipas
Les programmes chargés d’intégrer numériquement des équations différentielles (tels que
odeint) adaptent en général leur pas à la fonction F : si F (t k , y k ) est faible, alors y varie peu,
donc on peut faire de plus grands pas. On parle de méthodes à pas adaptatif, ou variable.
Il existe également des méthodes dites à pas multiples, ou multipas : on calcule y k à l’aide
de y k−1 , y k−2 , ... y k−p . La méthode d’Adams est la plus classique de ces méthodes.
9.2 Mise en œuvre
On met ici en place la méthode d’Euler, mais la démarche est très proche pour d’autres
méthodes à un pas. On pourra consulter les exercices 9.7 et 9.8 à ce sujet.
9.2.1 Équations scalaires d’ordre 1
La fonction euler va prendre en entrée une fonction F , les bornes a et b de l’intervalle
d’étude, la condition initiale y 0 et le pas h. Plus précisément : avec ces données, la fonction
va déterminer les approximations de la solution de y
′ (t) = F (t, y(t)) avec la condition
initiale y(a) = y 0 , en rendant un tableau de temps et un tableau de valeurs approchées
par la méthode d’Euler. Les temps sont les a + kh majorés par b.
Ces tableaux sont construits à l’aide de listes auxquelles on adjoint les nouveaux termes
calculés. Cette façon de procéder est économe (on ne crée pas le tableau dès le début) et
présente une bonne complexité (voir le chapitre 12).
PROGRAMME 7 Méthode d’Euler
def euler(F, a, b, y0, h):
y = y0
t = a
les_y = [y0] # la liste des valeurs renvoyées
les_t = [a]
while t+h <= b:
y += h * F(t, y)
les_y.append(y)
t += h
les_t.append(t)
return les_t, les_y
Un premier essai pour l’équation y
′ = y avec la condition initiale y(0) = 1 et le pas h =
1
3
donne ce qui suit.
Précédent

- 239/402

Suivant