i i “mathL3” — 2009/6/17 — 11:37 — page 161 — #180 i i Chapitre 3 R ÉSOLUTION NUM ÉRIQUE DES ÉQUATIONS DIFF ÉRENTIELLES ET DES ÉQUATIONS AUX D ÉRIV ÉES PAR TIELLES es équations différentielles interviennent dans de nombreux domaines comme la mécanique, l’astronomie, la biologie, la médecine, etc. Généralement, on ne peut pas calculer la solution de ces équations de manière exacte. Il est alors nécessaire d’utiliser des méthodes numériques qui donneront des bonnes approximations des solutions pour un coût de calcul qui ne soit pas trop important. La première de ces méthodes est la méthode d’Euler (due au mathématicien suisse Leonhard Euler [1707-1783]) ; mais l’étude de ces méthodes s’est surtout développée à partir des années cinquante avec l’apparition des ordinateurs . L Pour calculer une approximation de la solution d’une équation différentielle avec condition initiale sur un intervalle [t0 , t0 + T ], on subdivise cet intervalle en sous-intervalles d’extrémités t0 < t1 < ... < tN = t0 + T et on cherche une valeur approchée de la solution en ces points tn , n = 0...N. On étudiera dans ce chapitre deux types de méthodes : les méthodes à un pas où la valeur approchée de la solution au temps tn+1 est obtenue à partir de la valeur au temps tn , et les méthodes multipas où le calcul de la valeur approchée en tn+1 fait intervenir plusieurs valeurs approchées antérieures. Cependant, les problèmes issus de la physique font généralement intervenir plusieurs variables d’espace et une variable de temps. On présente dans ce chapitre des exemples simples des trois types d’équations aux dérivées partielles. Les problèmes elliptiques, qui modélisent par exemple l’équation de la chaleur en stationnaire, sont résolus par des méthodes d’éléments finis ; le principe de ces méthodes est de déterminer une solution approchée dans un espace de dimension finie dont les fonctions de base possèdent des propriétés d’orthogonalité et sont faciles à intégrer ou dériver ; le calcul de la solution approchée se ramène alors à la résolution d’un système linéaire dont la matrice est creuse. L’exemple type de problèmes paraboliques est l’équation de la chaleur en évolution, qui fait intervenir cette fois une variable supplémentaire : le temps. Ces problèmes sont semi-discrétisés en espace par une méthode d’éléments finis, ce qui conduit à un système d’équations différentielles, qui est ensuite discrétisé en temps par une méthode adaptée à ce type de problème. Enfin, la propagation d’ondes est envisagée dans le cadre des équations non linéaires du premier ordre en temps et en espace, qui sont des équations de type hyperbolique. La notion de caractéristique est introduite, permettant la résolution explicite de ces équations sous forme d’ondes de choc ou de détente, dans le cadre particulier du problème de Riemann, puis la construction de schémas numériques adaptés à l’approximation de ce type de problème. Leonhard Euler (1707-1783) i i i i i i “mathL3” — 2009/6/17 — 11:37 — page 162 — #181 i i 162 Partie I. Analyse numérique I. La méthode d’Euler I.1. Généralités Soit [t0 , t0 + T ] un intervalle fermé de R, f une fonction continue de [t0 , t0 + T ] × Rp dans Rp , y0 un élément de Rp ; on cherche une fonction y ∈ C1 ([t0 , t0 + T ]; Rp ) qui vérifie ∀t ∈ [t0 , t0 + T ], y (t) = f(t, y(t)) (3.1) y(t0 ) = y0 . (3.2) Ce problème est le problème de Cauchy pour l’équation différentielle (3.1) et la condition (3.2) est une condition de Cauchy. Souvent t représente le temps ; t0 est alors appelé instant initial et y0 condition initiale. La donnée de f est équivalente à la donnée de p fonctions f1 , f2 , . . . , fp continues de [t0 , t0 + T ] × Rp dans R et l’équation différentielle est équivalente au système différentiel : ⎧ ⎪ y (t) = f1 (t, y1 (t), . . . , yp (t)) ⎪ ⎨ 1 .. . . ⎪ ⎪ ⎩ yp (t) = fp (t, y1 (t), . . . , yp (t)) Les équations différentielles précédentes sont du premier ordre car elles ne font intervenir que les dérivées premières de y. On peut plus généralement considérer des équations différentielles d’ordre supérieur, mais elles se ramènent aux équations du premier ordre ; en effet, considérons l’équation différentielle y(q) (t) = f(t, y(t), y (t), . . . , y(q−1) (t)) , (3.3) où f ∈ C([t0 , t0 + T ] × (Rp )q ; Rp ), et cherchons en une solution y ∈ Cq ([t0 , t0 + T ]; Rp ). Si on pose z1 = y, z2 = y , . . . , zq = y(q−1) , le problème (3.3) devient équivalent au système différentiel ⎧ ⎪ z (t) ⎪ ⎨ 1 ⎪ ⎪ ⎩ zq (t) = z2 (t) .. . = f(t, z1 (t), . . . , zq (t)) qui peut s’écrire sous la forme z (t) = F(t, z(t)) où z = t (z1 , . . . , zq ) et F(t, z) = t (z2 , . . . , zq , f(t, z1 , . . . , zq )) , la notation t (·) désignant ici la transposition. La condition de Cauchy pour le problème (3.3) s’écrit alors (q−1) y(t0 ) = y0 , . . . , y(q−1) (t0 ) = y0 , (q−1) (y0 , . . . , y0 ) ∈ (Rp )q . Des résultats d’existence (locale ou globale) ont été vus au chapitre 16 de l’ouvrage Mathématiques L2, Pearson Education, 2007. Rappelons ici le résultat le plus important, à savoir le théorème de Cauchy-Lipschitz, qui assure l’existence d’une solution maximale lorsque f est lipschitzienne par rapport à la deuxième variable y. i i i i i i “mathL3” — 2009/6/17 — 11:37 — page 163 — #182 i i 163 Le théorème de Cauchy-Lipschitz On suppose que la fonction f est continue sur [t0 , t0 + T ] × Rp et vérifie ∀ R > 0, ∃ LR tel que ∀ t ∈ [t0 , t0 + T ], ∀ y, z ∈ B(y0 , R), f(t, y) − f(t, z) LR y − z , où . désigne une norme sur Rp et B(y0 , R) la boule de centre y0 et de rayon R. Alors le problème de Cauchy ((3.1),(3.2)) admet une unique solution maximale. Nous nous placerons toujours dans le cadre de ce théorème lorsque nous définirons les méthodes numériques. I.2. Définition de la méthode d’Euler Il n’est en général pas possible de calculer une solution exacte du problème de Cauchy. On doit alors utiliser des méthodes numériques. Dans toute la suite, pour simplifier les notations, nous nous restreindrons au cas des équations scalaires (p = 1, Rp = R). La plupart des résultats se généralisent de façon immédiate au cas p > 1 en remplaçant les valeurs absolues par des normes. Dans cette section, nous étudions la plus simple des méthodes numériques : la méthode d’Euler explicite (ou Euler progressive). On considère donc le problème de Cauchy y (t) = f(t, y(t)) . (3.4) y(t0 ) = γ donné On se donne une subdivision σ : t0 < t1 < · · · < tn < tn+1 < · · · < tN = t0 + T de l’intervalle [t0 , t0 + T ]. On note pour n = 0, ..., N − 1, hn = tn+1 − tn le pas et h = h(σ) := maxn hn . La solution du problème de Cauchy vérifie tn+1 f(t, y(t))dt . y(tn+1 ) = y(tn ) + tn Si y0 est une approximation de y(t0 ), on calcule l’approximation yn de y(tn ) par yn+1 = yn + hn f(tn , yn ), 0 n N − 1 , (3.5) Chapitre 3. Résolution numérique des équations différentielles et des équations aux dérivées partielles Rappel ce qui revient à remplacer f(t, y(t)) par f(tn , yn ) pour t ∈]tn , tn+1 [. Cette méthode est la méthode d’Euler 1 . Le problème essentiel est l’estimation de l’erreur de discrétisation en := y(tn ) − yn (3.6) en fonction de h. Nous ferons l’hypothèse que f ∈ C([t0 , t0 + T ] × R) (en abrégé C([t0 , t0 + T ])) et vérifie (3.7) ∃ L > 0, ∀ t ∈ [t0 , t0 + T ], ∀ y, z ∈ R, |f(t, y) − f(t, z)| L |y − z| , ce qui implique que le problème admet une solution globale sur [t0 , t0 + T ]. Dans la sous-section suivante, nous donnerons une majoration de l’erreur de discrétisation. Nous étudierons ensuite le comportement asymptotique de cette erreur ; ceci nous permettra d’obtenir une meilleure approximation de y(tn ) en utilisant le procédé d’extrapolation à la limite de Richardson. Enfin, nous décrirons une méthode de contrôle du pas qui permet d’assurer que l’erreur locale reste voisine d’un seuil de tolérance fixé. 1. Elle fut introduite par le mathématicien suisse Leonhard Euler (1707-1783), sans doute dès 1768. i i i i i i “mathL3” — 2009/6/17 — 11:37 — page 164 — #183 i i 164 Partie I. Analyse numérique I.3. Majoration de l’erreur de discrétisation On définit l’erreur de troncature à l’instant tn+1 par n+1 = 1 (y(tn+1 ) − y(tn ) − hn f(tn , y(tn ))) . hn (3.8) Pour estimer cette erreur de troncature, on introduit le module de continuité d’une fonction. Définition 3.1. Soit g ∈ C([t0 , t0 + T ]). Pour tout δ > 0, on définit le module de continuité ω(g; δ) par |g(t1 ) − g(t2 )| . ω(g; δ) = max t1 ,t2 ∈[t0 ,t0 +T ] |t1 −t2 |δ L’erreur de troncature peut se majorer en 1 tn+1 (y (t) − y (tn ))dt ω(y ; h), n = 0, ..., N − 1. |n+1 | = hn tn (3.9) Comme y ∈ C0 ([t0 , t0 +T ]), nous avons lim ω(y ; h) = 0. Si on suppose de plus que f appartient h−→0 à C1 ([t0 , t0 + T ] × R), alors y ∈ C2 ([t0 , t0 + T ]) et y (t) = ∂f ∂f (t, y(t)) + (t, y(t))f(t, y(t)) . ∂t ∂y En utilisant la formule de Taylor, on en déduit 1 tn+1 tn+1 (tn+1 − t)y (t)dt |y (t)|dt . |n+1 | = hn tn tn On déduit de (3.5) et (3.8) la relation en+1 = en + hn (f(tn , y(tn )) − f(tn , yn )) + hn n+1 , (3.10) d’où, en utilisant l’inégalité (3.7), |en+1 | (1 + hn L) |en | + hn |n+1 |. Donnons maintenant un résultat sur la majoration des solutions d’inégalités récurrentes. Lemme 3.2. Soit (θn )n0 et (μn )n0 deux suites de réels positifs ou nuls qui vérifient θn+1 (1 + hn L)θn + μn+1 , n 0 pour une certaine constante positive L. On a alors la majoration θn eL(tn −t0 ) θ0 + n eL(tn −ti ) μi , ∀ n 0. (3.11) i=1 Preuve. On vérifie facilement par récurrence sur n que pour tout n 0, θn (1 + hn−1 L) · · · (1 + h0 L)θ0 + n−1 (1 + hn−1 L) · · · (1 + hi L)μi + μn . i=1 D’autre part, pour x 0, on a l’inégalité (1 + x) ex , d’où l’on déduit θn eL(h0 +···+hn−1 ) θ0 + n−1 eL(hn−1 +···+hi ) μi + μn , ∀ n 0 . i=1 i i i i i i “mathL3” — 2009/6/17 — 11:37 — page 165 — #184 i i 165 Nous pouvons alors énoncer le théorème : Théorème 3.3. Si f est continue sur [t0 , t0 + T ] × R et vérifie l’hypothèse (3.7), alors l’erreur de discrétisation de la méthode d’Euler satisfait |en | eL(tn −t0 ) |y(t0 ) − y0 | + eL(tn − t0 ) − 1 ω(y ; h). L (3.12) Preuve. En appliquant le lemme précédent aux suites (|en |)n0 et (hn |n+1 |)n0 , et en utilisant (3.9), on obtient |en | eL(tn −t0 ) |e0 | + n eL(tn −ti ) hi−1 |i | eL(tn −t0 ) |e0 | + ω(y ; h) i=1 L(tn −t0 ) e |e0 | + ω(y ; h) eL(tn −ti ) i=1 n ti i=1 n ti dt ti−1 eL(tn −t) dt ti−1 eL(tn −t0 ) |y(t0 ) − y0 | + ω(y ; h) eL(tn −t0 ) − 1 . L n Remarque. Si y ∈ C2 ([t0 , t0 + T ]), on obtient de la même façon |en | eL(tn −t0 ) |e0 | + L(tn −t0 ) e n eL(tn −ti ) i=1 tn |e0 | + h ti (ti − t)|y (t)|dt ti−1 eL(tn −t) |y (t)|dt . t0 Si on choisit y0 tel que limh→0 y0 = y(t0 ), on obtient limh→0 |y(tn ) − yn | = 0 et on dit que la méthode d’Euler est convergente ; si on suppose de plus que y ∈ C2 ([t0 , t0 + T ]), on obtient |y(tn ) − yn | = O(h) lorsque e0 = O(h). Chapitre 3. Résolution numérique des équations différentielles et des équations aux dérivées partielles D’après la définition de hn , on a l’égalité hn−1 + · · · + hi = tn − ti et l’inégalité précédente n implique immédiatement la majoration (3.11). Proposition 3.4. Définissons une subdivision σ étant donnée, yh ∈ C([t0 , t0 + T ]) par yh (t) = yn + yn+1 − yn (t − tn ), t ∈ [tn , tn+1 ] , n = 0, ..., N − 1 , hn alors la famille yh converge vers y dans C([t0 , t0 + T ]) lorsque h tend vers 0. Preuve. Si t ∈ [tn , tn+1 ], |yh (t) − y(t)| |yh (t) − yn | + |yn − y(tn )| + |y(tn ) − y(t)|, d’où |yh (t) − y(t)| |yh (t) − yn | + |en | + ω(y; h). De plus, d’après (3.5), |yh (t) − yn | h |f(tn , yn )|. Comme |f(tn , yn )| est bornée indépendamment de h et n, on en déduit que maxn |yh (t) − y(t)| n tend vers 0 lorsque h tend vers 0. i i i i i i “mathL3” — 2009/6/17 — 11:37 — page 166 — #185 i i 166 Partie I. Analyse numérique I.4. Comportement asymptotique de l’erreur La majoration de l’erreur de discrétisation en donne une borne très large, valable pour toute une classe d’équations différentielles. Elle est en général beaucoup trop pessimiste lorsqu’on s’intéresse à une équation différentielle particulière. Il est donc nécessaire d’obtenir des estimations plus réalistes. On fera une hypothèse sur la suite de pas hn , n = 0, ..., N − 1, à savoir qu’il existe une fonction φ continue et lipschitzienne sur [t0 , t0 + T ], telle que ∀ t ∈ [t0 , t0 + T ], 0 < φ(t) 1 et hn = h(φ(tn ) + O(h)). On démontre alors le théorème. Théorème 3.5. Si f ∈ C2 ([t0 , t0 + T ] × R) et y(t0 ) − y0 = αh + O(h2 ) avec α ∈ R, l’erreur de discrétisation peut se mettre sous la forme en = he(tn ) + O(h2 ) , (3.13) où la fonction e est solution du problème e (t) = ∂f 1 (t, y(t))e(t) + φ(t)y (t) ∂y 2 et e(t0 ) = α . (3.14) Preuve. Si f ∈ C2 ([t0 , t0 + T ]), alors y ∈ C3 ([t0 , t0 + T ]) et n+1 = 1 hn h (y(tn+1 ) − y(tn ) − hn f(tn , y(tn ))) = y (tn ) + O(h2n ) = φ(tn )y (tn ) + O(h2 ) . hn 2 2 D’autre part, en utilisant la relation (3.10), on obtient en+1 = en + hn (f(tn , y(tn )) − f(tn , y(tn ) − en )) + hn n+1 ∂f hn h φ(tn )y (tn ) + hn O(h2 ) . = en + hn (tn , y(tn ))en + ∂y 2 De plus, si e est la solution du problème (3.14), e est lipschitzienne et donc e(tn+1 ) = e(tn )+ hn e (tn )+ hn O(h) = e(tn )+ hn hn ∂f (tn , y(tn ))e(tn )+ φ(tn )y (tn )+ hn O(h) . ∂y 2 ∂f (t , y(t ))z + h O(h2 ). La En posant zn = en − he(tn ), on obtient ainsi zn+1 = zn + hn ∂y n n n n fonction f vérifiant l’hypothèse (3.7), on peut en déduire |zn+1 | |zn | (1 + hn L) + Ch2 hn avec C > 0 puis, en utilisant le lemme 3.2, on obtient eL(tn − t0 ) − 1 . L 2 Comme z0 = e0 − he(t0 ) = O(h ), on en déduit la relation (3.13). |zn | eL(tn −t0 ) |z0 | + Ch2 n Application L’extrapolation à la limite de Richardson 1 On suppose que le pas hn est constant, égal à h, donc que φ(t) = 1 ; si on note y(t; h) la valeur approchée de y obtenue en utilisant ce pas h, on a d’après (3.13) l’égalité y(t; h) = y(t) − he(t) + O(h2 ) ; si on refait les calculs avec le nouveau pas rh, on obtient y(t; rh) = y(t) − rhe(t) + O(h2 ), d’où y(t; rh) − ry(t; h) + O(h2 ) . 1−r Cela fournit une approximation de y(t) à O(h2 ) près. y(t) = 1. Lewis Fry Richardson, mathématicien britannique (1881-1953), dont les travaux se sont en particulier orientés vers la météorologie. i i i i i i “mathL3” — 2009/6/17 — 11:37 — page 167 — #186 i i 167 Quand on résout une équation différentielle, on choisit généralement le pas de façon à ce que l’erreur locale soit partout environ égale à « T ol »(tolérance fournie par l’utilisateur). Pour cela, il faut connaître une valeur approchée de l’erreur de troncature. Si y ∈ C2 ([t0 , t0 + T ]), on a, pour n = 0, ..., N − 1, les relations hn 1 y (tn ) + O(h2n ) = (y (tn+1 ) − y (tn )) + O(h2n ) 2 2 1 = (f(tn+1 , y(tn+1 )) − f(tn , y(tn ))) + O(h2n ) 2 n+1 = ˆn+1 := (f(tn+1 , yn+1 )) − f(tn , yn ))/2, ce qui ne et on prend pour approcher n+1 la quantité nécessite pas d’évaluations supplémentaires de la fonction f. Par ailleurs, si on pose f(1) (t, y) = ∂f ∂f (t, y) + ∂y (t, y)f(t, y), on obtient facilement ∂t ˆn+1 = n+1 − hn (1) f (tn , y(tn )) − f(1) (tn , yn ) + O(h2n ) 2 ˆn+1 = O(h2 ) et ˆn+1 = O(h). Le pas optimal et, comme y(tn ) − yn = O(h), on en déduit n+1 − | = hn |ˆ |˜ n+1 | soit proche ĥ à chaque instant est alors choisi de façon que l’erreur locale n+1 n+1 |. On impose également une condition de la forme de « T ol », ce qui donne ĥ ∼ hn T ol/|ˆ hmin hn hmax pour éviter de trop grandes variations du pas. Algorithme 3.1 Sélection automatique du pas 1: données : h0 , t0 , y0 , θ, T ol, T 2: T ∗ ← t0 + T 3: tant que tn+1 < T ∗ , faire ˜n+1 4: calcul de yn+1 et 5: si (1 − θ)T ol |˜ n+1 | (1 + θ)T ol, alors 6: hn+1 = min(hn , T ∗ − tn+1 ) {le pas est accepté} 7: sinon si |˜ n+1 | < (1 − θ)T ol, alors 8: hn+1 = min(max(ĥ, hmax ), T ∗ − tn+1 ) {le pas est augmenté} 9: sinon si (1 + θ)T ol < |˜ n+1 | (1 + 2θ)T ol, alors 10: hn+1 = min(ĥ, T ∗ − tn+1 ) {le pas est diminué} 11: sinon 12: n+1 |, puis calcul de yn avec le nouveau pas {le pas hn est rejeté ĥn = hn 9/10 × T ol/|˜ et on recommence le calcul de yn avec un pas plus petit} 13: fin si 14: fin tant que Test 3.1. Soit le problème de Cauchy : y = y, y(0) = 1, t ∈ [0, 1]. (1) Calculer la solution exacte et la solution approchée obtenue par la méthode d’Euler (on supposera le pas constant et y0 = 1). (2) Calculer e(tn ) (a) en utilisant les expressions obtenues pour y(tn ) et yn , (b) en utilisant la définition (3.14). Test 3.2. On calcule une approximation de la solution y(tn ), avec n pair, du problème étudié au test Chapitre 3. Résolution numérique des équations différentielles et des équations aux dérivées partielles I.5. Contrôle du pas 3.1 avec un pas h, puis avec un pas 2h. Quelle est la valeur approchée ỹn de y(tn ) obtenue en utilisant l’extrapolation à la limite de Richardson ? Calculer directement une majoration de |y(tn ) − ỹn |. Test 3.3. Déterminer analytiquement les valeurs yn obtenues en résolvant le problème de Cauchy y (t) = t − t3 , y(0) = 0 par la méthode d’Euler. Calculer l’erreur en et la comparer à n he(t 1 k = n(n + 1)/2, n n3). On rappelle que 2 1 k = (n(n + 1)/2) . i i i i i i “mathL3” — 2009/6/17 — 11:37 — page 168 — #187 i i 168 Partie I. Analyse numérique II. Les méthodes à un pas II.1. Introduction On s’intéresse toujours à la résolution du problème de Cauchy y (t) = f(t, y(t)), ∀t ∈ [t0 , t0 + T ] y(t0 ) = γ donné , (3.15) où f est une fonction continue de [t0 , t0 + T ] × R dans R, vérifiant (3.7). Pour simplifier les notations, nous nous restreignons comme dans le paragraphe précédent au cas scalaire. De même, nous supposerons le pas de temps constant ; il n’y a aucune difficulté à généraliser le théorème d’estimation d’erreur au cas où le pas est variable. Soit N ∈ N ; on pose h = 1/N et tn = t0 + nh, 0 n N. Nous nous intéressons dans cette partie à la résolution approchée de (3.15) par des méthodes à un pas, c’est-à-dire des méthodes qui permettent de calculer la valeur approchée yn+1 de y(tn+1 ) à partir de tn , h, yn , valeur approchée de y(tn ) uniquement. Ces méthodes s’écrivent sous la forme yn+1 = yn + hΦ(tn , yn ; h) y0 = γh , (3.16) où Φ est une fonction continue de [t0 , t0 +T ]×R×[0, h0 ], (h0 > 0) dans R qui dépend de la fonction f. Par exemple, la méthode d’Euler est une méthode à un pas avec Φ(t, y; h) = f(t, y) ; dans ce cas, la fonction Φ ne dépend pas de h. Nous avons vu, dans la première partie, que l’erreur de discrétisation pour cette méthode (en = yn −y(tn )) est proportionnelle à h (si la fonction f est de classe C2 , voir le théorème 3.5). Nous étudions ici des méthodes à un pas pour lesquelles l’erreur de discrétisation est proportionnelle à hp avec p 1 lorsque f est suffisamment régulière. Nous commencerons par introduire les notions fondamentales de consistance, stabilité, convergence, qui permettent l’étude des méthodes à un pas ; nous présenterons ensuite des exemples de telles méthodes, plus particulièrement les méthodes de Runge-Kutta 1 . II.2. Notions de consistance, stabilité, convergence On définit de manière analogue à celle de la partie précédente l’erreur de troncature. Définition 3.6. L’erreur de troncature à l’instant tn+1 , (n = 0, ...N − 1) est définie par n+1 := 1 (y(tn+1 ) − y(tn )) − Φ(tn , y(tn ); h). h (3.17) Définition 3.7. La méthode (3.16) est consistante avec l’équation différentielle (3.15),si et seulement si lim max |n | = 0 . h−→0 n=1,..,N 1. Carl Runge, mathématicien et physicien allemand (1856-1927) ; Martin Kutta, mathématicien allemand (1867-1944), connu également pour ses travaux en aérodynamique. i i i i i i “mathL3” — 2009/6/17 — 11:37 — page 169 — #188 i i 169 La définition suivante concerne une propriété de continuité uniforme en h de l’application (γh , Φ(., .; h)) → {yn , n = 0...N} qui aux données fait correspondre la solution du schéma. Définition 3.8. Soient {yn , n = 1, . . . , N} et {zn , n = 1...N} les solutions respectives des systèmes yn+1 = yn + hΦ(tn , yn ; h) , n = 0, ..., N − 1, zn+1 = zn + h (Φ(tn , zn ; h) + ηn+1 ) , n = 0, ..., N − 1 , y0 , z0 étant donnés dans R, (η1 , ..., ηN ) désignant une « perturbation ». On dit que la méthode est stable s’il existe deux constantes positives M1 et M2 indépendantes de h telles que max |yn − zn | M1 |y0 − z0 | + M2 n=1,..,N max |ηn | . (3.18) n=1,..,N Cette notion de stabilité signifie qu’une petite perturbation sur les données n’entraîne qu’une petite perturbation sur la solution du schéma, cela indépendamment de h. Définition 3.9. On dit que la méthode à un pas (3.16) est convergente si la propriété suivante est vraie pour tout γ ∈ R : lim γh = γ =⇒ lim h−→0 max |yn − y(tn )| = 0 , h−→0 n=0,..,N où yn est la solution du schéma (3.16) et y(t) la solution du problème de Cauchy (3.15). A partir de ces notions, on démontre le théorème fondamental suivant. Théorème 3.10. Si la méthode à un pas est stable et consistante, elle est convergente. Preuve. De la définition de l’erreur de troncature (3.17), on déduit y(tn+1 ) = y(tn ) + hΦ(tn , y(tn ); h) + hn+1 , n = 0, ..., N − 1 . Comme la méthode est consistante, nous avons lim max |n | = 0. D’après la définition de la h−→0 n=1..N stabilité (3.18), on obtient alors max |yn − y(tn )| M1 |γh − γ| + M2 n=1,..,N Chapitre 3. Résolution numérique des équations différentielles et des équations aux dérivées partielles La quantité n représente, dans un certain sens, l’erreur que l’on fait au pas n en remplaçant l’équation différentielle par le schéma (3.16). max |n | , n=1,..,N ce qui démontre, en combinant avec l’information précédente, la convergence de la méthode. n II.3. Convergence des méthodes à un pas Le théorème 3.10 nous conduit à étudier séparément la consistance et la stabilité des méthodes à un pas. La convergence en résulte immédiatement. Nous donnons dans le lemme suivant une condition nécessaire et suffisante de consistance de la méthode (3.16). Lemme 3.11. Une condition nécessaire et suffisante pour que la méthode (3.16) soit consistante avec l’équation différentielle (3.15) s’écrit ∀t ∈ [t0 , t0 + T ], ∀y ∈ R, Φ(t, y; 0) = f(t, y). (3.19) i i i i i i “mathL3” — 2009/6/17 — 11:37 — page 170 — #189 i i 170 Partie I. Analyse numérique Preuve. On montre d’abord que la condition est nécessaire. Si la méthode est consistante, pour toute solution y de l’équation différentielle, on a lim max |n | = 0, c’est-à-dire h−→0 n=1,...,N tn+1 1 max f(s, y(s))ds − Φ(tn , y(tn ); h) = 0 . lim h−→0 n=0,...,N−1 h t n (3.20) Soit t un point quelconque de [t0 , t0 + T ] ; on peut construire une suite de points (tn )n qui converge vers t quand h tend vers 0. Alors, d’après (3.20) et les propriétés de continuité des fonctions f et Φ, on obtient 1 tn+1 lim f(s, y(s))ds − Φ(tn , y(tn ); h) = f(t, y(t)) − Φ(t, y(t); 0) = 0 . (3.21) h−→0 h t n Par ailleurs, étant donné un couple (t, z) de [t0 , t0 + T ] × R, d’après le théorème de CauchyLipschitz, il existe toujours une solution y ∈ C1 ([t0 , t0 + T ]) de l’équation différentielle qui vérifie y(t) = z. Donc, dans (3.21), y(t) parcourt R lorsque y parcourt l’ensemble des solutions de l’équation différentielle et, finalement, la relation (3.19) est une condition nécessaire de consistance. On montre maintenant que la relation (3.19) est une condition suffisante de consistance. On déduit de cette relation et de la définition de l’erreur de troncature que 1 tn+1 (Φ(s, y(s); 0) − Φ(tn , y(tn ); h)) ds . n+1 = h tn La fonction (t, h) → Φ(t, y(t); h) étant continue sur le compact [t0 , t0 + T ] × [0, h0 ], elle est uniformément continue ; nous avons donc pour tn s tn+1 lim max h−→0 n=0,..,N−1 ce qui implique lim |Φ(s, y(s); 0) − Φ(tn , y(tn ); h)| = 0 , max |n | = 0 et achève de prouver que la relation (3.19) est une condition h−→0 n=1,...,N n suffisante de consistance. Dans le lemme suivant, nous donnons une condition suffisante de stabilité. Lemme 3.12. Si la fonction Φ vérifie une condition de Lipschitz ∀ t ∈ [t0 , t0 + T ], ∀ y, z ∈ R, ∀ h ∈ [0, h0 ], |Φ(t, y; h) − Φ(t, z; h)| Λ |y − z| , (3.22) où Λ est une constante positive indépendante de h, alors la méthode à un pas (3.16) est stable. Soient {yn , n = 0, . . . , N − 1} et {zn , n = 0, . . . , N − 1} deux suites qui vérifient yn+1 = yn + hΦ(tn , yn ; h) (resp. zn+1 = zn + h(Φ(tn , zn ; h) + ηn+1 )) pour n = 0, . . . , N − 1. En utilisant l’inégalité (3.22), on en déduit immédiatement Preuve. |yn+1 − zn+1 | (1 + Λh) |yn − zn | + h |ηn+1 | , n = 0, . . . , N − 1 , d’où, d’après le lemme (3.2), Λ(tn −t0 ) |yn − zn | e |y0 − z0 | + h n Λ(tn −ti ) e i=1 eΛ(tn −t0 ) |y0 − z0 | + eΛ(tn −t0 ) − 1 Λ max |ηi | i=1,...,n max |ηi | i=1,...,n i i i i i i “mathL3” — 2009/6/17 — 11:37 — page 171 — #190 i i 171 max |yn − zn | eΛT |y0 − z0 | + n=0,...,N eΛT − 1 Λ La méthode est donc stable et on a M1 = eΛT et M2 = max |ηn | . n=1,...,N eΛT −1 . Λ n Le théorème suivant se déduit immédiatement de ces deux lemmes ainsi que du théorème 3.10. Théorème 3.13. On suppose que la fonction Φ vérifie ∀ t ∈ [t0 , t0 + T ], ∀ y ∈ R, Φ(t, y; 0) = f(t, y), ainsi que la condition de Lipschitz ∀ t ∈ [t0 , t0 + T ], ∀ y, z ∈ R, ∀ h ∈ [0, h0 ], |Φ(t, y; h) − Φ(t, z; h)| Λ |y − z| , où Λ est une constante positive, indépendante de h. Alors la méthode à un pas (3.16) est convergente. Remarque. Si y est solution du problème (3.15) et yn , n = 0, . . . , N, solution du schéma (3.16), on obtient plus précisément |en | eΛ(tn −t0 ) |γ − γh | + eΛ(tn −t0 ) − 1 Λ max |i | , i=1,...,n où en est l’erreur de discrétisation (3.6) et n l’erreur de troncature. Proposition 3.14. Si on définit, étant donné la subdivision de pas constant h, la fonction yh ∈ C([t0 , t0 + T ]) par yh (t) = yn + yn+1 − yn (t − tn ) , h Chapitre 3. Résolution numérique des équations différentielles et des équations aux dérivées partielles et par conséquent ∀ t ∈ [tn , tn+1 ] , la famille (yh )h converge vers y dans C([t0 , t0 + T ]) lorsque h tend vers 0. Preuve. La démonstration est la même que celle de la proposition (3.4). Test 3.4. y y2 /(1 + Soit le problème de Cauchy = |y|), y(0) = 1 ; on calcule une approximation yn de y(tn ) par yn yn+1 , y0 = 1 . yn+1 = yn + h 1 + |yn | n (1) Montrer que cette approximation est définie de façon unique pour h < 1 ; écrire cette méthode sous la forme habituelle des méthodes à un pas. (2) Montrer la consistance et la stabilité de la méthode et en déduire la convergence. i i i i i i “mathL3” — 2009/6/17 — 11:37 — page 172 — #191 i i 172 Partie I. Analyse numérique II.4. Étude de l’erreur de discrétisation II.4.1. Ordre d’une méthode à un pas Définition 3.15. La méthode à un pas (3.16) est d’ordre p, (p > 0) si l’erreur de troncature est en O(hp ), c’est-à-dire : 1 (y(tn+1 ) − y(tn )) − Φ(tn , y(tn ); h) Khp , max |n | = max n=1,...,N n=0,...,N−1 h où K est une constante positive ne dépendant que de y et de Φ, cela pour toute solution y de l’équation différentielle, telle que y ∈ Cp+1 ([t0 , t0 + T ]). Le théorème suivant se déduit immédiatement du théorème 3.10. Théorème 3.16. Si la méthode à un pas est stable et d’ordre p et si f ∈ Cp ([t0 , t0 + T ] × R), on a l’estimation max |y(tn ) − yn | M1 |γ − γh | + M2 Khp , n=0,...,N où y est la solution du problème de Cauchy (3.15) et yn , n = 0, . . . , N la solution du schéma (3.16). Corollaire 3.17. Si f ∈ Cp ([t0 , t0 + T ] × R), si la méthode est d’ordre p et si la fonction Φ vérifie la condition de Lipschitz ∀ t ∈ [t0 , t0 + T ], ∀ y, z ∈ R, ∀ h ∈ [0, h0 ], |Φ(t, y; h) − Φ(t, z; h)| Λ |y − z| , où Λ est une constante positive indépendante de h, on a l’estimation max |en | eΛT |γ − γh | + K n=0,...,N eΛT − 1 p h . Λ Preuve. Il suffit d’appliquer le théorème 3.13 et la remarque en fin de section II.3. Test 3.5. n est d’ordre 3. Montrer que la méthode à un pas définie par h 1 h Φ(t, y; h) = f(t, y)+ hf(1) (t+ , y+ f(t, y)) 2 3 3 i i i i i i “mathL3” — 2009/6/17 — 11:37 — page 173 — #192 i i 173 Si f ∈ Cp ([t0 , t0 + T ] × R), on peut définir inductivement la fonction f(k) , 0 k p, sur [t0 , t0 + T ] × R par f(0) (t, y) = f(t, y) ∂f ∂f f(1) (t, y) = (t, y) + (t, y)f(t, y) ∂t ∂y .. . ∂f(k−1) ∂f(k−1) f(k) (t, y) = (t, y) + (t, y)f(t, y) . ∂t ∂y On vérifie facilement que si y est solution de l’équation différentielle, on a l’égalité y(k+1) (t) = f(k) (t, y(t)) = dk f(t, y(t)). dtk (3.23) Théorème 3.18. On suppose que f ∈ Cp ([t0 , t0 + T ] × R) et que les fonctions Φ, ∂Φ/∂h, . . . , ∂p Φ/∂hp existent et sont continues dans [t0 , t0 + T ] × R × [0, h0 ]. Une condition nécessaire et suffisante pour que la méthode soit d’ordre p s’écrit ⎧ Φ(t, y; 0) = f(t, y) ⎪ ⎪ ⎪ ⎪ ⎨ ∂Φ (t, y; 0) = 12 f(1) (t, y) ∂h ∀ (t, y) ∈ [t0 , t0 + T ] × R , . (3.24) . .. ⎪ ⎪ ⎪ ⎪ ⎩ ∂p−1 Φ (t, y; 0) = p1 f(p−1) (t, y) ∂hp−1 Preuve. Soit y une solution de l’équation différentielle, y ∈ Cp+1 ([t0 , t0 + T ]). D’après la formule de Taylor, il existe ξn ∈]tn , tn+1 [ tel que y(tn+1 ) − y(tn ) = hy (tn ) + · · · + hp (p) hp+1 (p+1) y (tn ) + y (ξn ) ; p! (p + 1)! en utilisant l’égalité (3.23), on obtient h2 (1) f (tn , y(tn )) + . . . 2 p hp+1 (p) h (p−1) (tn , y(tn )) + ··· + f f (ξn , y(ξn )) . p! (p + 1)! y(tn+1 ) − y(tn ) = hf(tn , y(tn )) + Chapitre 3. Résolution numérique des équations différentielles et des équations aux dérivées partielles II.4.2. Majoration a priori de l’erreur de discrétisation De même, il existe ĥ ∈]0, h0 ] tel que Φ(tn , y(tn ); h) = Φ(tn , y(tn ); 0) + h + On en déduit n+1 ∂Φ hp−1 ∂p−1 Φ (tn , y(tn ); 0) + · · · + (tn , y(tn ); 0) ∂h (p − 1)! ∂hp−1 hp ∂p Φ (tn , y(tn ); ĥ) . p! ∂hp ∂Φ 1 (1) = (f(tn , y(tn )) − Φ(tn , y(tn ); 0)) + h f (tn , y(tn )) − (tn , y(tn ); 0) + · · · 2 ∂h hp−1 ∂p−1 Φ 1 (p−1) + (tn , y(tn )) − (tn , y(tn ); 0) f (p − 1)! p ∂hp−1 1 (p) hp ∂p Φ f (ξn , y(ξn )) − + (t , y(t ); ĥ) n n p! p + 1 ∂hp i i i i i i “mathL3” — 2009/6/17 — 11:37 — page 174 — #193 i i Partie I. Analyse numérique 174 et donc la méthode est d’ordre p, si et seulement si ⎧ ⎪ Φ(tn , y(tn ); 0) = f(tn , y(tn )) ⎪ ⎪ ⎪ ⎪ ∂Φ ⎪ ⎪ = 12 f(1) (tn , y(tn )) (tn , y(tn ); 0) ⎨ ∂h (3.25) .. ⎪ ⎪ . ⎪ ⎪ ⎪ p−1 ⎪ Φ ⎪ ⎩∂ (tn , y(tn ); 0) = p1 f(p−1) (tn , y(tn )) ∂hp−1 pour toute solution y de l’équation différentielle et pour tout n = 1, . . . , N. Si le système (3.24) est vérifié, la méthode est donc d’ordre p. Réciproquement, supposons la méthode d’ordre p ; le système (3.25) est vérifié. Soit t un point quelconque de [t0 , t0 + T ] ; on peut construire une suite de points (tn )n de [t0 , t0 + T ] qui converge vers t. En passant à la limite dans (3.25) quand n tend vers l’infini, on obtient ⎧ ⎪ Φ(t, y(t); 0) = f(t, y(t)) ⎪ ⎪ ⎪ ⎪ ∂Φ ⎪ ⎪ (t, y(t); 0) = 12 f(1) (t, y(t)) ⎨ ∂h .. ⎪ ⎪ . ⎪ ⎪ ⎪ p−1 ⎪ Φ ⎪ ⎩∂ (t, y(t); 0) = p1 f(p−1) (t, y(t)) . ∂hp−1 Mais comme y(t) parcourt R lorsque y décrit l’ensemble des solutions de l’équation différentielle, on en déduit que les relations (3.24) sont vérifiées. n Remarque. Lorsque f et Φ satisfont les hypothèses du théorème précédent, il est possible d’obtenir une estimation de la constante K intervenant dans l’erreur de troncature en fonction des données. Si les relations (3.24) sont vérifiées, l’erreur de troncature s’écrit 1 ∂p Φ 1 (t , y(t ); ĥ) , ξn ∈]tn , tn+1 [ . f(p) (ξn , y(ξn )) − n+1 = hp n n (p + 1)! p! ∂hp Lorsque y est solution du problème de Cauchy, le couple (t, y(t)) reste dans un ensemble compact D. En effet, il est possible d’obtenir t une majoration de y en fonction des données car, d’après (3.15), on a l’égalité y(t) − γ = t0 (f(s, y(s)) − f(t0 , γ)) ds + (t − t0 )f(t0 , γ), t ∈ [t0 , t0 + T ]. La fonction f étant lipschitzienne par rapport à y, on en déduit t |y(s) − γ| ds + (t − t0 ) |f(t0 , γ)| , t ∈ [t0 , t0 + T ] . |y(t) − γ| L (3.26) t0 t Considérons la fonction φ définie sur [t0 , t0 + T ] par φ(t) := e−L(t−t0 ) t0 |y(s) − γ| ds. L’inégalité (3.26) peut s’écrire φ (t) |f(t0 , γ)| (t − t0 )e−L(t−t0 ) pour t ∈ [t0 , t0 + T ] et on en déduit |f(t0 , γ)| 1 − e−L(t−t0 ) − (t − t0 )e−L(t−t0 ) . φ(t) L L En reportant cette majoration dans (3.26), on obtient |y(t) − γ| |f(t0 , γ)| (eL(t−t0 ) − 1)/L pour LT problème tout t ∈ [t0 , t0 + T ] et |y(t)| |γ| + |f(t0 , γ)| (e − 1)/L. Finalement, si y est solution du de Cauchy (3.15), alors (t, y(t)) ∈ D := (t, y) ; t ∈ [t0 , t0 + T ], |y| |γ| + |f(t0 , γ)| (eLT − 1)/L . On en déduit immédiatement max |n | Khp , où n=1,...,N p ∂ Φ 1 1 max f(p) (t, y) + max p (t, y; h) . K= (3.27) (p + 1)! (t,y)∈D p! (t,y)∈D ∂h h∈[0,h0 ] i i i i i i “mathL3” — 2009/6/17 — 11:37 — page 175 — #194 i i 175 Nous avons déjà remarqué dans la partie précédente que les majorations a priori de l’erreur de discrétisation sont beaucoup trop larges en général. Nous allons donc chercher une estimation plus réaliste en étudiant son comportement asymptotique. Théorème 3.19. Soit f ∈ Cp+1 ([t0 , t0 + T ] × R) et Φ ∈ Cp+1 ([t0 , t0 + T ] × R × [0, h0 ]). Si la méthode à un pas est stable, d’ordre p, et si γ − γh = O(hp ), l’erreur de discrétisation vérifie en = hp e1 (tn ) + (γ − γh )e0 (tn ) + O(hp+1 ) , où les fonctions e0 et e1 sont les solutions respectives de ∂f (t, y(t))e (t), t ∈ [t , t + T ] e0 (t) = ∂y 0 0 0 e0 (t0 ) e1 (t) e1 (t0 ) avec φ(t, y) := =1 ∂f (t, y(t))e (t) + φ(t, y(t)), t ∈ [t , t + T ] = ∂y 1 0 0 =0 (3.28) (3.29) (3.30) 1 1 ∂p Φ (t, y; 0) pour tout t ∈ [t , t + T ], pour tout y ∈ R. f(p) (t, y) − p! 0 0 ∂hp (p + 1)! Preuve. Soit y ∈ Cp+2 ([t0 , t0 + T ]) la solution du problème de Cauchy (3.15). Nous avons, en utilisant la formule de Taylor, y(tn+1 ) = y(tn ) + hf(tn , y(tn )) + + h2 (1) hp+1 f (tn , y(tn )) + · · · + f(p) (tn , y(tn )) 2 (p + 1)! hp+2 f(p+1) (ξn , y(ξn )) , (p + 2)! où ξn ∈]tn , tn+1 [ . Nous avons, de même, Φ(tn , y(tn ); h) = Φ(tn , y(tn ); 0) + h + ∂Φ hp ∂p Φ (tn , y(tn ); 0) (tn , y(tn ); 0) + · · · + ∂h p! ∂hp hp+1 ∂p+1 Φ (tn , y(tn ); ĥ) , (p + 1)! ∂hp+1 Chapitre 3. Résolution numérique des équations différentielles et des équations aux dérivées partielles II.4.3. Étude asymptotique de l’erreur de discrétisation où ĥ ∈]0, h0 [. Comme la méthode est d’ordre p, on obtient d’après (3.24), pour n = 0, ..., N − 1, y(tn+1 ) = y(tn ) + hΦ(tn , y(tn ); h) + hp+1 φ(tn , y(tn )) + O(hp+2 ) . (3.31) D’autre part, si yn , n = 0, . . . , N est la solution du schéma (3.16), on a l’égalité Φ(tn , yn ; h) − Φ(tn , y(tn ); h) = Φ(tn , y(tn ) − en ; h) − Φ(tn , y(tn ); h) = −en 1 ∂2 Φ ∂Φ (tn , y(tn ); h) + e2n 2 (tn , ŷn ; h) ∂y 2 ∂y avec ŷn compris entre y(tn ) et yn , d’où Φ(tn , yn ; h) = Φ(tn , y(tn ); h) − en ∂Φ ∂2 Φ (tn , y(tn ); 0) − hen (tn , y(tn ); h̃) ∂y ∂y∂h 1 ∂2 Φ + e2n 2 (tn , ŷn ; h) , h̃ ∈]0, h[ . 2 ∂y i i i i i i “mathL3” — 2009/6/17 — 11:37 — page 176 — #195 i i 176 Partie I. Analyse numérique En remarquant que ∂Φ/∂y(t, y; 0) = ∂f/∂y(t, y) car la méthode est consistante et en utilisant le fait que en = O(hp ), on obtient yn+1 = yn + hΦ(tn , y(tn ); h) − hen ∂f (tn , y(tn )) + O(hp+2 ) . ∂y (3.32) On déduit de (3.31) et (3.32) en+1 = en + hen (∂f/∂y)(tn , y(tn )) + hp+1 φ(tn , y(tn )) + O(hp+2 ). Introduisons maintenant, pour n 0, zn := en − hp e1 (tn ) − (γ − γh )e0 (tn ), n 0. D’après la formule de Taylor, on a les égalités ∂f (tn , y(tn ))e0 (tn ) + O(h2 ), ∂y ∂f e1 (tn+1 ) = e1 (tn ) + h (tn , y(tn ))e1 (tn ) + hφ(tn , y(tn )) + O(h2 ) , ∂y e0 (tn+1 ) = e0 (tn ) + h d’où zn+1 = zn +h(∂f/∂y)(tn , y(tn )) zn +O(hp+2 ). La fonction f étant lipschitzienne par rapport à la variable y, on a la majoration |∂f/∂y(t, y)| L pour tout t ∈ [t0 , t0 + T ], pour tout y ∈ R. On en déduit |zn+1 | (1 + hL) |zn | + Chp+2 , où C est une constante positive et donc, d’après le n lemme 3.2, |zn | Chp+1 (eLT − 1)/L car z0 = 0, ce qui démontre le théorème. Application 1 Extrapolation à la limite de Richardson On note, comme dans l’application proposée dans la section I.4, y(t; h) l’approximation de y au temps t calculée avec le pas h et y(t, rh) l’approximation calculée avec le pas rh. D’après le théorème 3.19, on a les égalités y(t; h) = y(t) − hp e1 (t) − (γ − γh )e0 (t) + O(hp+1 ), y(t; rh) = y(t) − (rh)p e1 (t) − (γ − γh )e0 (t) + O(hp+1 ) . On en déduit (y(t; rh) − rp y(t; h))/(1 − rp ) = y(t) − (γ − γh )e0 (t) + O(hp+1 ) et si γ − γh = O(hp+1 ), on obtient ainsi une approximation de y en O(hp+1 ). Application 2 Approximation de l’erreur de discrétisation On cherche une approximation de l’erreur de discrétisation en en calculant des valeurs approchées de e1 (tn ), e0 (tn ) et en négligeant le terme d’ordre p + 1 dans (3.28). Pour cela, il paraît nécessaire de connaître : 1) la solution exacte y(t) du problème de Cauchy ; 2) la fonction ∂f/∂y ; 3) la fonction φ. La première condition peut être levée en remarquant qu’on peut remplacer y(tn ) par yn , ce qui entraîne sur e1 (tn ) et e0 (tn ) une erreur d’ordre p et donc pour en une erreur d’ordre p + 1 qui peut être négligée, étant donné qu’on a déjà négligé des termes de cet ordre. On suppose que la dérivée ∂f/∂y se calcule facilement. Il reste alors à obtenir une approximation de φ, ce que nous nous proposons de faire. Soient (t, y) ∈ [t0 , t0 + T ] × R et z la solution du problème de Cauchy z (s) = f(s, z(s)) , z(t) = y. D’après (3.31), on a l’égalité z(t + h) = y + hΦ(t, y; h) + hp+1 φ(t, y) + O(hp+2 ) . (3.33) On peut aussi exprimer z(t + h) en fonction de y en utilisant deux fois le pas h/2 : p+1 h φ(t, y) + O(hp+2 ), 2 p+1 h h h h h h h h z(t + h) = z(t + ) + Φ(t + , z(t + ); ) + φ(t + , z(t + )) + O(hp+2 ) . 2 2 2 2 2 2 2 2 h h h z(t + ) = y + Φ(t, y; ) + 2 2 2 i i i i i i “mathL3” — 2009/6/17 — 11:37 — page 177 — #196 i i Si on élimine z(t + h2 ) entre ces deux équations, on obtient p+1 h h h h h h h φ(t, y) + O(hp+2 ) . Φ(t, y; ) + Φ(t + , y + Φ(t, y; ); ) + 2 z(t + h) = y + 2 2 2 2 2 2 2 (3.34) Les relations (3.33) et (3.34) permettent d’obtenir une approximation de φ : h 1 h h h h h−p 1 Φ(t, y; ) + Φ(t + , y + Φ(t, y; ); ) − Φ(t, y; h) + O(h) . φ(t, y) = 1 − 2−p 2 2 2 2 2 2 2 L’équation (3.30) peut alors s’intégrer en utilisant le schéma = ẽn ẽn+1 1 1 +h ∂f 0 (tn , yn )ẽn 1 + hφ̃(tn , yn ) , ẽ1 = 0 , ∂y où h−p φ̃(tn , yn ) = 1 − 2−p 1 h h h h h h h 1 Φ(tn , yn ; ) + Φ(tn + , yn + Φ(tn + , yn + Φ(tn , yn ; ); ) − Φ(tn , yn ; h) . × 2 2 2 2 2 2 2 2 2 De la même façon, la solution approchée de l’équation (3.29) est donnée par le schéma ∂f n = ẽn ẽn+1 0 0 + h ∂y (tn , yn )ẽ0 ẽ00 On obtient alors e1 (tn ) = ẽn 1 = 1. + O(h), e0 (tn ) = ẽn 0 + O(h) et finalement n p+1 en = hp ẽn ). 1 + (γ − γh )ẽ0 + O(h II.5. Exemples de méthodes à un pas II.5.1. Méthode du développement de Taylor L’idée la plus simple pour construire une méthode à un pas consiste à utiliser directement le développement de Taylor de la solution y(t) en chaque point tn . Si f ∈ Cp ([t0 , t0 + T ] × R), on peut poser h hp−1 (p−1) f Φ(t, y; h) = f(t, y) + f(1) (t, y) + · · · + (t, y) . 2 p! La méthode est évidemment d’ordre p et, si p = 1, on retrouve la méthode d’Euler. Calculons la constante K qui intervient dans l’erreur de troncature. Nous avons, d’après (3.27), ∂p Φ 1 1 K= max |f(p) (t, y)| + max p (t, y; h) . (p + 1)! (t,y)∈D p! (t,y)∈D ∂h Chapitre 3. Résolution numérique des équations différentielles et des équations aux dérivées partielles 177 h∈[0,h0 ] Comme ∂ Φ/∂h (t, y; h) = 0, il reste donc p p K= 1 max |f(p) (t, y)| . (p + 1)! (t,y)∈D Étudions maintenant la stabilité de la méthode. D’après le lemme 3.12, une condition suffisante de stabilité est que la fonction Φ vérifie une condition de Lipschitz en y. Nous supposons que chaque fonction f(k) , (0 k p − 1) satisfait une condition de la forme (k) f (t, y) − f(k) (t, z) Lk |y − z| , ∀ t ∈ [t0 , t0 + T ], ∀y, z ∈ R , L0 = L . i i i i i i “mathL3” — 2009/6/17 — 11:37 — page 178 — #197 i i 178 Partie I. Analyse numérique Sous ces hypothèses, la fonction Φ vérifie hp−1 h0 |φ(t, y; h) − Φ(t, z; h)| L + L1 + · · · + 0 Lp−1 |y − z| , ∀ h ∈ [0, h0 ], 2 p! et la constante de Lipschitz Λ est alors donnée par Λ= L+ hp−1 h0 0 L1 + · · · + Lp−1 . 2 (p − 1)! La méthode du développement de Taylor satisfait les hypothèses du corollaire 3.17 et est donc convergente. Malheureusement, il est clair qu’elle présente de graves inconvénients du point de vue pratique. Elle nécessite l’évaluation de p fonctions f, . . . , f(p−1) et, par ailleurs, lorsque p croît, la complexité des expressions analytiques de ces fonctions augmente très vite. Cette méthode est donc en général à éviter, sauf dans des cas très simples. II.5.2. Méthodes de Runge-Kutta On cherche maintenant à déterminer une méthode d’ordre p, ne nécessitant pas le calcul de tn+1 f(t, y(t))dt. f(1) , . . . , f(p−1) . La solution du problème de Cauchy vérifie y(tn+1 ) = y(tn ) + tn La méthode d’Euler explicite est obtenue en utilisant la formule d’intégration des rectangles à gauche pour le calcul de l’intégrale. L’idée, pour construire d’autres méthodes, est d’utiliser d’autres formules de quadrature pour le calcul de cette intégrale. 1) Si on utilise la méthode des rectangles à droite, on obtient la méthode d’Euler implicite (ou rétrograde) (3.35) yn+1 = yn + hf(tn+1 , yn+1 ) . Cette méthode est implicite car le calcul de yn+1 nécessite la résolution d’une équation non linéaire. On montrera plus loin que si f satisfait une condition de Lipschitz en y, l’équation (3.35) admet une solution unique si h est assez petit. L’erreur de troncature s’écrit 1 h n+1 = (y(tn+1 ) − y(tn )) − f(tn+1 , y(tn+1 )) = − y (ξn ), h 2 avec ξn ∈]tn , tn+1 [. Le schéma est donc d’ordre 1. 2) Si on utilise la méthode des trapèzes pour le calcul de l’intégrale, on obtient la méthode de Crank-Nicolson 1 , à savoir yn+1 = yn + h (f(tn , yn ) + f(tn+1 , yn+1 )) . 2 C’est encore une méthode implicite, admettant une solution unique pour h assez petit. L’erreur de troncature est donnée par n+1 = 1 1 (y(tn+1 ) − y(tn )) − (f(tn , y(tn )) + f(tn+1 , y(tn+1 ))) h 2 et, en utilisant la formule de Taylor, on vérifie facilement que cette méthode est d’ordre 2. 1. Méthode introduite vers 1947 pour la résolution de l’équation de la chaleur, par la mathématicienne britannique Phillis Nicolson (1917-1968), et son compatriote, le physicien John Crank (1916-2006). i i i i i i “mathL3” — 2009/6/17 — 11:37 — page 179 — #198 i i 179 tn+1 f(t, y(t))dt ∼ h f(tn + tn h h , y(tn + )) 2 2 et on remplace la valeur inconnue y(tn + h2 ) par son approximation obtenue par la méthode d’Euler. On obtient ainsi une méthode explicite, la méthode d’Euler modifiée : yn+1 = yn + hf(tn + h h , yn + f(tn , yn )). 2 2 On vérifie que cette méthode est d’ordre 2. 4) Dans la formule des trapèzes, pour obtenir un schéma explicite, on remplace y(tn+1 ) par l’approximation obtenue par la méthode d’Euler explicite. On obtient la méthode de Heun : h (f(tn , yn ) + f(tn + h, yn + hf(tn , yn ))) . 2 On vérifie encore que cette méthode est d’ordre 2. yn+1 = yn + On peut étendre ces résultats en utilisant des formules de quadrature plus générales. On se donne q réels c1 , ...cq (distincts ou non) et on définit les formules de quadrature ⎧ c q i ⎪ ⎪ ⎪ φ(s)ds ∼ aij φ(cj ), 1 i q ⎪ ⎨ 0 j=1 . (3.36) 1 q ⎪ ⎪ ⎪ φ(s)ds ∼ b φ(c ) ⎪ j j ⎩ 0 j=1 On pose alors tn,i = tn + ci h et l’intégrale h p tn+1 tn f(t, y(t))dt est approchée par bj f(tn,j , y(tn,j )) ; j=1 les valeurs inconnues y(tn,j ) sont remplacées par leurs approximations yn,j , obtenues en utilisant les formules d’intégration (3.36). La méthode de Runge-Kutta est ainsi définie par ⎧ q ⎪ ⎪ ⎪ y = y aij f(tn,j , yn,j ), 1 i q n,i n +h ⎪ ⎨ j=1 . (3.37) q ⎪ ⎪ ⎪ bj f(tn,j , yn,j ) ⎪ ⎩yn+1 = yn + h Chapitre 3. Résolution numérique des équations différentielles et des équations aux dérivées partielles 3) L’intégrale peut être approchée en utilisant la règle du point milieu j=1 Si on connaît yn , les valeurs yn,i , 1 i q, sont solutions d’un système de q équations à q inconnues qui peut être implicite. Nous démontrerons plus loin que ce système admet une solution unique pour h assez petit, lorsque f vérifie une condition de Lipschitz en y. Ce schéma peut encore s’écrire sous la forme générale yn+1 = yn + hΦ(tn , yn ; h), où la fonction Φ(t, y; h) est définie par les équations yi = y + h q aij f(t + cj h, yj ) , 1 i q, (3.38) j=1 Φ(t, y; h) = q bj f(t + cj h, yj ) . (3.39) j=1 i i i i i i “mathL3” — 2009/6/17 — 11:37 — page 180 — #199 i i 180 Partie I. Analyse numérique Une méthode de Runge-Kutta est donc complètement définie si on connaît les coefficients ci , aij , bj , (1 i, j q). On la représente à l’aide du tableau : c1 c2 ... cq ... ... ... ... ... a11 a21 ... aq1 b1 ... ... ... ... ... ... ... ... ... ... a1q a2q ... aqq bq Remarque. La méthode de Runge-Kutta peut également s’écrire sous la forme suivante : kn,i = f(tn,i , yn + h q aij kn,j ), 1 i q, (3.40) j=1 yn+1 = yn + h q bj kn,j . (3.41) j=1 On résout alors le système (3.40) de q équations à q inconnues kn,i , 1 i q. L’équation (3.41) permet ensuite de calculer yn+1 . Exemple 3.20. La θ−méthode est représentée dans le tableau suivant : 0 1−θ 1−θ 0 1 0 θ θ Pour θ = 0, c’est la méthode d’Euler explicite, pour θ = 1, la méthode d’Euler implicite et 1 pour θ = , on retrouve la méthode de Crank-Nicolson. 2 Exemple 3.21. La méthode de Runge-Kutta classique est représentée par le tableau suivant : 0 0 1 2 1 2 1 2 0 0 0 0 1 6 1 0 0 0 0 1 0 0 0 0 1 3 1 3 1 6 1 2 En utilisant la forme ((3.40)-(3.41)), elle s’écrit donc kn,3 = f(tn + h h , yn + kn,1 ), 2 2 kn,1 = f(tn , yn ), kn,2 = f(tn + h h , yn + kn,2 ), 2 2 kn,4 = f(tn + h, yn + hkn,3 ), yn+1 = yn + h (kn,1 + 2kn,2 + 2kn,3 + kn,4 ) . 6 Test 3.6. Test 3.7. Montrer que le problème de Cauchy y (t) = −2t, y(0) = 0 est résolu exactement par la méthode d’Euler modifiée. 1) Calculer la solution exacte du problème de Cauchy y (t) = −2ty(t), y(−1) = e−1 . i i i i i i “mathL3” — 2009/6/17 — 11:37 — page 181 — #200 i i 2) Écrire la méthode de Heun pour ce problème (y0 = e−1 ) et calculer e1 (t). Test 3.8. On considère le problème de Cauchy y = √ y, y(0) = 1. Calculer la solution exacte et la solution approchée obtenue avec la méthode de Crank-Nicolson. Conclusion ? Test 3.9. On considère le problème de Cauchy y (t) = My(t), y(0) = y0 donné, y ∈ Rp , M ∈ Rp,p . Écrire les méthodes d’Euler, Euler modifiée et Heun pour ce problème. Montrer que dans chacun des cas, la solution numérique est donnée par yn+1 = R(hM)yn et déterminer R. Test 3.10. Mettre l’équation différentielle y (t) + y(t) = 0, y(0) = 1, y (0) = 1 sous la forme décrite dans le test 3.9. Calculer la solution exacte et la solution approchée par la méthode de Heun sur [0, 1] avec le pas h = 12 et le pas h = 13 . II.6. Étude des méthodes de Runge-Kutta II.6.1. Existence de la solution et stabilité des méthodes de Runge-Kutta Nous allons maintenant étudier l’existence d’une solution du système (3.37), puis la stabilité des méthodes de Runge-Kutta. Introduisons les matrices A et C ∈ Rq,q et les vecteurs b et e ∈ Rq : A = (aij )1i,jq , C = diag(ci )1iq , b = (bi )1iq et e = (1, . . . , 1) , les aij , les bi et les ci étant ceux dont dépend le schéma (3.37). Si la matrice A est triangulaire inférieure strictement (i.e. i j =⇒ aij = 0), la méthode de Runge-Kutta est explicite et le système (3.37) admet évidemment une solution. Si A est triangulaire inférieure (i.e. i < j =⇒ aij = 0), la méthode est semi-implicite et l’on résout l’une après l’autre q équations scalaires. Sinon, la méthode de Runge-Kutta est implicite. Le théorème suivant donne une condition sur h pour que la solution du système (3.37) existe. Notons |A| la matrice de Rq,q définie par |A| := (|aij |)1i,jq et ρ(|A|) son rayon spectral. Théorème 3.22. On suppose que f satisfait la condition de Lipschitz (3.7). Si h vérifie hLρ(|A|) < 1, la méthode de Runge-Kutta admet une solution unique. Chapitre 3. Résolution numérique des équations différentielles et des équations aux dérivées partielles 181 Pour démontrer ce résultat, nous utiliserons un théorème du point fixe que nous rappelons ici (voir le chapitre 6, section III, de Mathématiques L2, Pearson Education, 2007). Rappel Le théorème du point fixe Soit E un espace de Banach, φ une application continue de E dans E. On suppose qu’il existe k ∈ [0, 1[, tel que ∀ u, v ∈ E, φ(u) − φ(v) k u − v , alors l’application φ admet un point fixe unique. Nous utiliserons également le lemme suivant. i i i i i i “mathL3” — 2009/6/17 — 11:37 — page 182 — #201 i i Partie I. Analyse numérique 182 Lemme 3.23. Soient E un espace de Banach et φ une application continue de E dans E telle que l’une des itérées φm soit contractante. Alors l’application φ admet un point fixe unique. Preuve. Si φm est contractante, elle admet un point fixe unique. Si a est un point fixe de φ, il est aussi un point fixe de φm et il est donc unique. Si a est le point fixe de φm , on a l’égalité φm+1 (a) = φ(φm (a)) = φ(a) = φm (φ(a)), ce qui prouve que φ(a) est un point fixe de φm , n donc φ(a) = a et φ admet un point fixe unique. (du théorème 3.22). Notons Y le vecteur de Rq de composantes Y = (yi )1iq . Si q (yi )1iq est solution du système (3.38), on a l’égalité Y = Ψ(Y), q où Ψ est l’application de R q dans R définie par Ψ(Y) = (ψi (Y))1iq , avec ψi (Y) = y + h j=1 aij f(t + ci h, yi ), i = 1, . . . , q. La méthode de Runge-Kutta admet une solution unique si Ψ admet un point fixe unique. Soient Y et Z ∈ Rq . Comme la fonction f satisfait (3.7), on obtient Preuve. |ψi (Y) − ψi (Z)| hL q |aij | |yj − zj | . j=1 Si on munit Rq de la norme Y∞ := max |yi |, et que l’on note i=1,..,q A∞ := max Y=0 AY∞ Y∞ la norme matricielle associée, on en déduit Ψ(Y) − Ψ(Z)∞ hL |A|∞ Y − Z∞ . Pour tout > 0, on peut trouver une matrice inversible H, telle que hL |A| = HBH−1 , où ⎛ ζ1 ⎜0 ⎜ ⎜ .. ⎜. B=⎜ ⎜. ⎜ .. ⎜ ⎝0 1 ζ2 .. . .. . 0 0 ··· 0 2 .. . .. . ··· ··· ⎞ ··· ··· · 0 ··· · ⎟ ⎟ .. ⎟ .. . ⎟ . 0 ⎟, ⎟ .. .. . . 0 ⎟ ⎟ · ζq−1 q−1 ⎠ ··· 0 ζq les (ζi ), 1 i q étant les valeurs propres de hL |A| et i = 0 ou . Ces valeurs propres sont par hypothèse de module strictement inférieur à 1. On peut donc choisir > 0 tel que −1 ∞ , et il existe n ∈ N tel que (hL |A|)n ∞ < 1. B∞ < 1, d’où (hL |A|)n ∞ H∞ Bn ∞ H L’application Ψn est alors contractante et Ψ admet un point fixe unique d’après le lemme 3.23. n La méthode de Runge-Kutta admet donc une solution unique si hLρ(|A|) < 1. Théorème 3.24. Si f satisfait (3.7) et si h0 Lρ(|A|) < 1, la méthode de Runge-Kutta est stable pour h ∈ [0, h0 ]. Preuve. Pour démontrer la stabilité de la méthode de Runge-Kutta, il suffit de montrer que Φ vérifie une condition de Lipschitz en y. Si y, z ∈ R, t ∈ [t0 , t0 + T ], h ∈ [0, h0 ], on a l’égalité Φ(t, y; h) − Φ(t, z; h) = q bj (f(t + cj h, yj ) − f(t + cj h, zj )) . j=1 i i i i i i “mathL3” — 2009/6/17 — 11:37 — page 183 — #202 i i On en déduit |Φ(t, y; h) − Φ(t, z; h)| L q |bj | |yj − zj | . (3.42) j=1 Il suffit donc de majorer |yj − zj | , 1 j q en fonction de |y − z|. D’après (3.38), on a la majoration q |aij | |yj − zj |, 1 i q . |yi − zi | |y − z| + hL j=1 Si Y et Z sont les vecteurs de R définis par Y = (yi )1iq et Z = (zi )1iq et que l’on note |Y − Z| le vecteur (|yi − zi |)1iq , l’inégalité précédente s’écrit vectoriellement |Y − Z| |y − z| e + h0 L |A| |Y − Z|. On en déduit par récurrence que pour tout n 0 q n n n+1 n+1 |A|n+1 |Y − Z| . |Y − Z| |y − z| (I + h0 L |A| + · · · + hn L 0 L |A| )e + h0 Comme ρ(h0 L |A|) < 1, par passage à la limite lorsque n−→ + ∞, on obtient |Y − Z| |y − z| (I − h0 L |A|)−1 e et donc Y − Z∞ |y − z| (I − h0 L|A|)−1 ∞ . On déduit de cette inégalité et de (3.42) que |Φ(t, y; h) − Φ(t, z; h)| Λ |y − z| avec Λ := L(I − h0 L|A|)−1 ∞ qj=1 |bj |. n Remarque. Si la méthode de Runge-Kutta est explicite, ρ(|A|) = 0 et donc la méthode est stable. II.6.2. Ordre d’une méthode de Runge-Kutta Les théorèmes suivants sont consacrés à l’étude de l’ordre d’une méthode de Runge-Kutta. Théorème 3.25. Une condition nécessaire et suffisante pour qu’une méthode de RungeKutta soit consistante est que t be = 1. Une condition nécessaire et suffisante pour qu’une méthode de Runge-Kutta soit d’ordre 2 s’écrit t be = 1 et t bCe = t bAe = 1 . 2 Chapitre 3. Résolution numérique des équations différentielles et des équations aux dérivées partielles 183 Preuve. D’après le lemme 3.11, une condition nécessaire et suffisante pour que la méthode de + T ], y ∈ R. Or, Φ(t, y; 0) = Runge-Kutta soit consistante est que Φ(t, y; 0) = f(t, y), t ∈ [t0 , t0 q q j=1 bj f(t, y). La méthode est donc consistante si et seulement si j=1 bj = 1. La méthode de Runge-Kutta est d’ordre 2 si on a, de plus, 1 ∂Φ (t, y; 0) = f(1) (t, y) . ∂h 2 (3.43) Par dérivation des relations (3.38) et (3.39), on obtient q q ∂yi ∂f ∂yj ∂f (t, y; h) = (t + cj h, yj ) aij f(t + cj h, yj ) + h aij cj (t + cj h, yj ) + ∂h ∂t ∂y ∂h j=1 j=1 et q ∂f ∂yi ∂f ∂Φ , bi ci (t + ci h, yi ) + (t, y; h) = (t + ci h, yi ) ∂h ∂t ∂y ∂h i=1 i i i i i i “mathL3” — 2009/6/17 — 11:37 — page 184 — #203 i i 184 d’où q ∂f ∂f aij f(t, y) . ci (t, y) + (t, y) ∂t ∂y j=1 ∂Φ bi (t, y; 0) = ∂h i=1 Partie I. Analyse numérique q La relation (3.43) sera donc vérifiée pour toute fonction f de classe C1 si et seulement si t bCe = 12 et t bAe = 12 . n Pour déterminer des conditions nécessaires et suffisantes pour qu’une méthode de Runge-Kutta soit d’ordre 3 ou 4, on suppose que les formules de quadrature (3.36) sont exactes pour les fonctions constantes, c’est-à-dire ci = qj=1 aij ou encore Ae = Ce. Théorème 3.26. Supposons que Ae = Ce. Une condition nécessaire et suffisante pour qu’une méthode de Runge-Kutta soit d’ordre 3 s’écrit t be = 1, t bCe = 1 t 2 1 1 , bC e = , t bACe = . 2 3 6 (3.44) Elle sera d’ordre 4 si et seulement si les conditions supplémentaires suivantes sont satisfaites : t bC3 e = 1 t 1 t 2 1 t 1 , bAC2 e = , bA Ce = , bCACe = . 4 12 24 8 (3.45) Preuve. La méthode est d’ordre 3 (resp. 4) si l’erreur de troncature n+1 = 1 (y(tn+1 ) − y(tn )) − Φ(tn , y(tn ); h) h vérifie n+1 = O(h3 ) (resp. O(h4 )). Nous développons la démonstration pour ql’ordre 4, l’ordre 3 s’en déduisant immédiatement. D’après (3.39), on a Φ(t i=1 bi f(tn,i , zn,i ), nq, y(tn ); h) = où (zn,i )1iq sont solutions du système zn,i = y(tn ) + h j=1 aij f(tn,j , zn,j ), i = 1, . . . , q (ce système admet une solution unique pour hLρ(|A|) < 1). L’erreur de troncature peut alors s’écrire n+1 = 1,n+1 + 2,n+1 , où 1,n+1 1 := h 2,n+1 := q y(tn+1 ) − y(tn ) − h q bi y (tn,i ) , i=1 bi (f(tn,i , y(tn,i )) − f(tn,i , zn,i )) . i=1 En utilisant la formule de Taylor, on obtient 1,n+1 = 1− q bi y (tn ) + h i=1 +h 3 1 1 bi c3i − 24 6 i=1 q 1 bi ci − 2 i=1 q y (tn ) + h 2 q 1 1 bi c2i − 6 2 i=1 y(3) (tn ) y(4) (tn ) + O(h4 ) . Si on choisit f(t, y) = ktk−1 , k = 1, 2, 3, 4 , alors y(t) = tk et 2,n+1 = 0 car f ne dépend pas de y. Une condition nécessaire pour que la méthode soit d’ordre 4 s’écrit t be = 1, t bCe = 1/2, t bC2 e = 1/3, t bC3 e = 1/4. Lorsque l’on suppose ces relations vérifiées, on obtient n+1 = 2,n+1 + O(h4 ). i i i i i i “mathL3” — 2009/6/17 — 11:37 — page 185 — #204 i i Estimons maintenant la quantité y(tn,i ) − zn,i (1 i q). D’après la formule de Taylor, en utilisant la relation Ae = Ce, on a q q 1 2 2 aij y (tn,j ) = h aij cj y (tn ) y(tn,i ) − y(tn ) − h ci − 2 j=1 j=1 q 1 3 1 +h3 aij c2j y(3) (tn ) + O(h4 ) . ci − 6 2 j=1 On en déduit y(tn,i ) − zn,i = h q aij (f(tn,j , y(tn,j )) − f(tn,j , zn,j )) + h 2 j=1 +h 3 q 1 3 1 aij c2j ci − 6 2 j=1 1 2 aij cj c − 2 i j=1 q y (tn ) y(3) (tn ) + O(h4 ) (3.46) et, comme la fonction f est lipschitzienne par rapport à y, on obtient q 1 2 2 y(tn,i ) − zn,i = h aij cj y (tn ) + O(h3 ) . c − 2 i j=1 En notant ψ la fonction définie par ψ(t) = ∂f/∂y(t, y(t)), on a alors f(tn,i , y(tn,i )) − f(tn,i , zn,i ) = (y(tn,i ) − zn,i ) ψ(tn ) + O(h3 ) q 1 2 2 aij cj y (tn )ψ(tn ) + O(h3 ) . =h c − 2 i j=1 En reportant cette expression dans (3.46), on obtient q q 1 2 1 3 1 aij cj y (tn ) + h3 aij c2j y(3) (tn ) ci − ci − y(tn,i ) − zn,i = h2 2 6 2 j=1 j=1 q q 1 +h3 ajk ck y (tn )ψ(tn ) + O(h4 ) . aij c2j − aij 2 j=1 k=1 Chapitre 3. Résolution numérique des équations différentielles et des équations aux dérivées partielles 185 On en déduit n+1 = q bi (y(tn,i ) − zn,i )ψ(tn,i ) + O(h4 ) i=1 = ψ(tn ) q bi (y(tn,i ) − zn,i ) + hψ (tn ) i=1 bi ci (y(tn,i ) − zn,i ) + O(h4 ) i=1 q q q 1 2 1 3 1 3 (3) 2 bi aij cj + h ψ(tn )y (tn ) bi aij cj = h ψ(tn )y (tn ) c − c − 2 i j=1 6 i 2 j=1 i=1 i=1 q q q q 1 3 2 2 aij cj − bi aij ajk ck +h ψ (tn )y (tn ) 2 i=1 j=1 j=1 k=1 q q 1 2 ci − bi ci aij cj + O(h4 ). +h3 ψ (tn )y (tn ) 2 i=1 j=1 2 q q i i i i i i “mathL3” — 2009/6/17 — 11:37 — page 186 — #205 i i 186 Partie I. Analyse numérique Une condition suffisante pour que la méthode soit d’ordre 4 est donc 1t 2 1 bC e = , 2 6 1 1 t bA2 Ce = t bAC2 e = , 2 24 t bACe = 1t 3 1 bC e = , 3 12 1 1 t bCACe = t bC3 e = . 2 8 t bAC2 e = Il reste à montrer que cette condition est nécessaire. Si on prend − t2 , alors f(t, y)2 = yt + 2t 2 2 1t 2 t 3 1t 2 ψ(t) = 1 et y(t) = t , d’où n+1 = 2h 2 bC e − bACe + 2h 2 bAC e − bA Ce + O(h4 ) et, pour que la méthode soit d’ordre 4, il faut t bC2 e/2 = t bACe et t bAC2 e/2 = t bA2 Ce. Si on prend maintenant f(t, y) = y + 3t2 − t3 , alors y(t) = t3 et on a encore ψ(t) = 1, d’où n+1 = h3 (t bC3 e − 3t bAC2 e) + O(h4 ). Pour que la méthode soit d’ordre 4, il faut donc que l’on ait t bC3 e/3 = t bAC2 e. En choisissant maintenant f(t, y) = ty − t3 + 2t, on obtient ψ (t) = 1 et y(t) = t2 , d’où n+1 = h3 (t bC3 e − 2t bCACe) + O(h4 ). Les conditions (3.44) et (3.45) sont n donc nécessaires pour que la méthode soit d’ordre 4. On en déduit le théorème. Exemple 3.27. La méthode de l’exemple 3.21 est d’ordre 4. Test 3.11. On considère la méthode de Runge-Kutta semiimplicite définie par θ 1−θ θ 1 − 2θ 1/2 0 θ 1/2 Déterminer θ pour que la méthode soit d’ordre 3. Test 3.12. Montrer que si la méthode de Runge-Kutta est 1 d’ordre 4, la formule d’intégration 0 ψ(t)dt ∼ q j=1 bj ψ(tj ) est exacte pour les polynômes de degré inférieur ou égal à 3. II.6.3. Contrôle du pas Comme pour la méthode d’Euler, le contrôle du pas nécessite une approximation de l’erreur de troncature. On considère pour cela une autre méthode de Runge-Kutta d’ordre p + 1, définie * et on note ˆn+1 son erreur de troncature ˆn+1 = 1 (y(tn+1 ) − y(tn )) − par la fonction Φ, h * Φ(tn , y(tn ); h). On a donc * n , y(tn ); h) ˆn+1 = Φ(tn , y(tn ); h) − Φ(t n+1 − * n , yn ; h) + (y(tn ) − yn ) = Φ(tn , yn ; h) − Φ(t * ∂Φ ∂Φ (tn , ξn ; h) − (tn , ξn ; h) , ∂y ∂y où ξn est compris entre yn et y(tn ). Or y(tn ) − yn = O(hp ). On en déduit * n , yn ; h) ˆn+1 = Φ(tn , yn ; h) − Φ(t n+1 − * ∂Φ ∂Φ +(y(tn ) − yn ) (tn , ξn ; 0) − (tn , ξn ; 0) + O(hp+1 ) . ∂y ∂y * Mais les méthodes étant consistantes, on a (∂Φ/∂y)(t, y; 0) = (∂Φ/∂y)(t, y; 0) = (∂f/∂y)(t, y). p+1 * n , yn ; h) + O(hp+1 ). La quantité ˆn+1 = O(h De plus , ) et donc n+1 = Φ(tn , yn ; h) − Φ(t * ˜n+1 = Φ(tn , yn ; h) − Φ(tn , yn ; h) est donc une bonne approximation de n+1 . On utilise alors la même technique de changement de pas que dans le cas de la méthode d’Euler. i i i i i i “mathL3” — 2009/6/17 — 11:37 — page 187 — #206 i i * ne demande pas trop Pour que le coût de calcul ne soit pas trop important, il faut que Φ d’évaluations supplémentaires de la fonction f. On utilise pour cela des méthodes de RungeKutta emboîtées RKpp . Supposons que l’on ait une méthode de Runge-Kutta d’ordre p : On utilise pour yn+1 = yn + h qi=1 bi f(tn,i , yn,i ), où les yn,i sont solutions du système (3.37). ˜n+1 une méthode d’ordre p > p, telle que ŷn+1 = yn + h qi=1 b̂i f(tn,i , yn,i ) + le calcul de b̂q+1 f(tn+1 , yn+1 ) . Cette méthode ne nécessite donc pas d’évaluations supplémentaires de f. Ces méthodes peuvent être représentées par le tableau suivant : c1 .. . .. . cq 1 a11 .. . .. . aq1 b1 b̂1 . ... . . ... . . . . . ... ... ... ... . . . . a1q .. . .. . aqq bq b̂q 0 .. . .. . 0 0 b̂q+1 Exemple 3.28. Méthode RK12 : la méthode d’ordre 1 est la méthode d’Euler. La méthode d’ordre 2 est la méthode de Heun. 0 1 0 1 1/2 0 0 1/2 Exemple 3.29. Méthode RK24 : la méthode d’ordre 4 est la méthode de Runge-Kutta classique. 0 0 0 0 0 0 0 0 1/2 1/2 0 1/2 0 0 1/2 1 0 0 1 0 1/6 1/3 1/3 1/6 Chapitre 3. Résolution numérique des équations différentielles et des équations aux dérivées partielles 187 III. Les méthodes multipas Comme dans les paragraphes précédents, nous nous intéressons à la résolution numérique du problème de Cauchy ((3.1),(3.2)). Si N ∈ N, on pose, comme précédemment, h = T/N, tn = t0 + nh, 0 n N. Dans le cas des méthodes à un pas, la valeur approchée yn+1 de y(tn+1 ) était obtenue à partir de la valeur approchée yn de y(tn ). Les méthodes multipas (ou méthodes à pas multiples) utilisent, elles, plusieurs valeurs approchées antérieures yn , yn−1 , . . . Plus précisément, une méthode à q pas utilise les valeurs approchées yn , . . . , yn−q+1 de la solution aux temps tn , . . . , tn−q+1 . i i i i