Livre_silo 30 août 2013 16:32 Page 242
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
242
Informatique pour tous
Exercice 9.12 avec corrigé * Méthode balistique. Déterminer (avec 5 décimales significatives), une
valeur de α telle que la solution de l’équation y ′′ = 1 + y 3 avec les conditions initiales y(0) = 1 et
y ′ (0) = α vérifie y(1) = 1.
On pourra travailler par dichotomie et même appeler une fonction programmée dans le chapitre précédent ! α = −0.83016 est une solution.
Exercice 9.13 Le schéma d’Euler implicite consiste à remplacer la relation :
y k+1 = y k + hF (t k , y k )
par :
y k+1 = y k + hF (t k+1 , y k+1 ).
Bien entendu, cette relation ne donne pas explicitement y k+1 en fonction de y k (d’où son nom) et nécessite donc à chaque étape une résolution d’équation de la forme Φ(y k+1 ) = 0. Puisque y k+1 est censé
être proche de y k , on dispose d’une bonne première approximation.
1 Programmer la méthode d’Euler implicite.
2 Tester cette méthode sur l’équation y ′ = −3y sur [0, 10], avec la condition initiale y(0) = 1. Tester des
pas entre 0.1 et 2.
3 Comparer sur ce même exemple avec la méthode d’Euler usuelle (explicite).
Il suffit par exemple de changer y = y + h * F(t, y) en y = fsolve(lambda z : z - y - F(t+h,z),y),
après avoir chargé la fonction fsolve via from scipy.optimize import fsolve.
On peut voir figure 9.18 que cette méthode est plus stable que la méthode explicite (figure 9.19). Elle
reste cependant d’ordre 1.
exp-implicite.pdf
Figure 9.18
Euler implicite. Pour h de l’ordre de 1, l’erreur est assez importante.
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
242
Informatique pour tous
Exercice 9.12 avec corrigé * Méthode balistique. Déterminer (avec 5 décimales significatives), une
valeur de α telle que la solution de l’équation y ′′ = 1 + y 3 avec les conditions initiales y(0) = 1 et
y ′ (0) = α vérifie y(1) = 1.
On pourra travailler par dichotomie et même appeler une fonction programmée dans le chapitre précédent ! α = −0.83016 est une solution.
Exercice 9.13 Le schéma d’Euler implicite consiste à remplacer la relation :
y k+1 = y k + hF (t k , y k )
par :
y k+1 = y k + hF (t k+1 , y k+1 ).
Bien entendu, cette relation ne donne pas explicitement y k+1 en fonction de y k (d’où son nom) et nécessite donc à chaque étape une résolution d’équation de la forme Φ(y k+1 ) = 0. Puisque y k+1 est censé
être proche de y k , on dispose d’une bonne première approximation.
1 Programmer la méthode d’Euler implicite.
2 Tester cette méthode sur l’équation y ′ = −3y sur [0, 10], avec la condition initiale y(0) = 1. Tester des
pas entre 0.1 et 2.
3 Comparer sur ce même exemple avec la méthode d’Euler usuelle (explicite).
Il suffit par exemple de changer y = y + h * F(t, y) en y = fsolve(lambda z : z - y - F(t+h,z),y),
après avoir chargé la fonction fsolve via from scipy.optimize import fsolve.
On peut voir figure 9.18 que cette méthode est plus stable que la méthode explicite (figure 9.19). Elle
reste cependant d’ordre 1.
exp-implicite.pdf
Figure 9.18
Euler implicite. Pour h de l’ordre de 1, l’erreur est assez importante.
