avec \(y_0\) une valeur donnée et supposons que l’on ait montré l’existence et l’unicité d’une solution \(y\) pour \(t\in I\).
Pour \(h>0\) soit \(t_n\equiv t_0+nh\) avec \(n=0,1,2,\dots,N\) une suite de \(N+1\) nœuds de \(I\) induisant une discrétisation de \(I\) en \(N\) sous-intervalles \(I_n=[t_n;t_{n+1}]\) chacun de longueur \(h=\frac{T-t_0}{N}>0\) (appelé le pas de discrétisation).
Pour chaque nœud \(t_n\), on cherche la valeur inconnue \(u_n\) qui approche la valeur exacte \(y_n\equiv y(t_n)\).
L’ensemble de \(N+1\) valeurs \(\{t_0, t_1=t_0+h,\dots , t_{N}=T \}\) représente les points de la discrétisation.
L’ensemble de \(N+1\) valeurs \(\{y_0, y_1,\dots , y_{N} \}\) représente la solution exacte discrète.
L’ensemble de \(N+1\) valeurs \(\{u_0 = y_0, u_1,\dots , u_{N} \}\) représente la solution numérique obtenue en construisant une suite récurrente.
Les schémas que l’on va construire permettent de calculer (explicitement ou implicitement) \(u_{n+1}\) à partir de \(u_n, u_{n-1}, ..., u_{n-p}\) et il est donc possible de calculer successivement \(u_1\), \(u_2\),…, en partant de \(u_0\) par une formule de récurrence de la forme
où les \(\{a_j\}\) et \(\{b_j\}\) sont des coefficients donnés et \(p\ge0\) un entier.
Méthodes explicites et méthodes implicites
Une méthode est dite explicite si la valeur \(u_{n+1}\) peut être calculée directement à l’aide des valeurs précédentes \(u_j\), \(j\le n\) (ou d’une partie d’entre elles). Pour un schéma linéaire cela équivaut à \(b_{-1}=0\). Une méthode est dite implicite si \(u_{n+1}\) n’est défini que par une relation implicite faisant intervenir la fonction \(\varphi\). Pour un schéma linéaire cela équivaut à \(b_{-1}\neq0\).
Méthodes à un pas et méthodes multi-pas
Une méthode numérique pour l’approximation du problème de Cauchy est dite à un pas si pour tout \(n\in\mathbb{N}\), \(u_{n+1}\) ne dépend que de \(u_n\) et éventuellement de lui-même.
Autrement, on dit que le schéma est une méthode multi-pas (ou à pas multiples).
Exemples Les schémas d’Euler explicite, d’Euler implicite et de Crank-Nicolson sont des schémas à \(q=1\) pas (\(p=0\)) linéaires
range(5) produit 0,1,2,3,4 range(1,5) produit 1,2,3,4
\(\{t_0, t_1,\dots , t_{N} \}\)\(N+1\) points de discrétisation \(\{u_0, u_1,\dots , u_{N} \}\)\(N+1\) valeurs à calculer.
len(tt)\(=N+1\)
Pour un schéma à un pas, \(u_{n+1}=F(u_n)\) donc on initialise \(u_0\) et on calcule \(u_{n+1}\) pour \(n\) de \(0\) jusqu’à \(N-1\), autrement dit n in range(N) soit encore n in range(len(tt)-1)
Pour un schéma à deux pas, \(u_{n+1}=F(u_n,u_{n-1})\) donc on initialise \(u_0\) et \(u_1\) et on calcule \(u_{n+1}\) pour \(n\) de \(1\) jusqu’à \(N-1\), autrement dit n in range(1,N) soit encore n in range(1,len(tt)-1)
Pour un schéma à trois pas, \(u_{n+1}=F(u_n,u_{n-1},u_{n-2})\) donc on initialise \(u_0\), \(u_1\) et \(u_2\) et on calcule \(u_{n+1}\) pour \(n\) de \(2\) jusqu’à \(N-1\), autrement dit n in range(2,N) soit encore n in range(2,len(tt)-1)
…
Pour un schéma à \(q\) pas, \(u_{n+1}=F(u_n,u_{n-1},u_{n-2},\dots,u_{n-q+1})\) donc on initialise \(u_0\), \(u_1\) et \(u_{q-1}\) et on calcule \(u_{n+1}\) pour \(n\) de \(q-1\) jusqu’à \(N-1\), autrement dit n in range(q-1,N) soit encore n in range(q-1,len(tt)-1)
Dans la suite nous allons écrire explicitement ces schémas. Pour vérifier nos calculs d’interpolation puis intégration, nous allons utiliser le package de calcul formel SymPy.
Code
from IPython.display import display, Math, Markdown, Lateximport sympy as symb# symb.init_printing()symb.init_printing(use_latex='mathjax', use_unicode=True)symb.var('h,t,t_n')t_np1 = t_n + ht_nm1 = t_n - ht_nm2 = t_n -2* ht_nm3 = t_n -3* ht_nm4 = t_n -4* ht_nm5 = t_n -5* h#y_np1=symb.Symbol('y_{n+1}')y_n =symb.Symbol('y_{n}')y_nm1=symb.Symbol('y_{n-1}')y_nm2=symb.Symbol('y_{n-2}')y_nm3=symb.Symbol('y_{n-3}')y_nm4=symb.Symbol('y_{n-4}')y_nm5=symb.Symbol('y_{n-5}')y_np1=symb.Symbol('y_{n+1}')# Pour Adam et N-MSphi_np1=symb.Symbol(r'\phi_{n+1}')phi_n =symb.Symbol(r'\phi_{n}')phi_nm1=symb.Symbol(r'\phi_{n-1}')phi_nm2=symb.Symbol(r'\phi_{n-2}')phi_nm3=symb.Symbol(r'\phi_{n-3}')phi_nm4=symb.Symbol(r'\phi_{n-4}')phi_nm5=symb.Symbol(r'\phi_{n-5}')# Pour BDFp = symb.Function('p')u_np1=symb.Symbol('u_{n+1}')u_n =symb.Symbol('u_{n}')u_nm1=symb.Symbol('u_{n-1}')u_nm2=symb.Symbol('u_{n-2}')u_nm3=symb.Symbol('u_{n-3}')u_nm4=symb.Symbol('u_{n-4}')u_nm5=symb.Symbol('u_{n-5}')
1 Schémas de Adam
Si nous intégrons l’EDO \(y'(t)=\varphi(t,y(t))\) entre \(t_n\) et \(t_{n+1}\) nous obtenons \(
y_{n+1}-y_n=\int_{t_n}^{t_{n+1}} \varphi(t,y(t))dt.
\) Différents schémas peuvent être construits en utilisant des formules de quadrature pour approcher le membre de droite. Cette solution approchée sera obtenue en construisant une suite récurrente comme suit:
Les schémas d’Adam choisissent \(\tilde f(t)\) comme un polynôme \(p\)interpolant \(\varphi\) en des points donnés qui peuvent être à l’extérieur de l’intervalle d’intégration\([t_{n};t_{n+1}]\).
Différents schémas peuvent être construits en choisissant différents points d’interpolation.
Ces schémas peuvent généralement être exprimés sous la forme suivante :
les schémas d’Adam-Bashforth à \(q\) pas (AB-\(q\)) sont
explicites,
approchent l’intégrale \(\int_{t_n}^{t_{n+1}} \varphi(t,y(t))\mathrm{d}t\) par l’intégrale \(\int_{t_n}^{t_{n+1}} p(t) \mathrm{d}t\) où \(p\) est le polynôme interpolant \(\varphi\) en \(
\{t_n,t_{n-1},\dots,t_{n-q+1}\} \text{ avec } q\ge1;
\)
les schémas d’Adam-Moulton à \(q\) pas (AM-\(q\)) sont
implicites,
approchent l’intégrale \(\int_{t_n}^{t_{n+1}} \varphi(t,y(t))\mathrm{d}t\) par l’intégrale \(\int_{t_n}^{t_{n+1}} p(t) \mathrm{d}t\) où \(p\) est le polynôme interpolant \(\varphi\) en \(
\{t_{n+1},t_n,t_{n-1},\dots,t_{n-q+1}\} \text{ avec } q\ge0.
\)
Remarques
La notation AM-\(k\) peut varier selon les auteurs. Par exemple, dans les livres de Quarteroni et al., le symbole \(k\) indique l’ordre de la méthode et non le nombre de pas. Les deux notations coincident pour les méthodes AB mais diffèrent pour les méthodes AM.
Noter que, pour calculer successivement \(u_{q}\), \(u_{q+1}\), …, il est nécessaire d’initialiser d’abord \(u_0, u_1, \dots, u_{q-1}\). Cette initialisation doit être effectuée par des approximations appropriées qui ne dégradent pas l’ordre de la méthode.
Nous verrons ultérieurement que :
la condition de zéro-stabilité est toujours satisfaite;
la condition de A-stabilité devient de plus en plus contraignante avec l’augmentation de l’ordre. En particulier, une méthode explicitement A-stable est d’ordre au plus 2 (seconde barrière de Dahlquist).
où \(u_{1}\) est une approximation de \(y(t_1)\) obtenue en utilisant une prédiction \(\text{AB}_1\) et \(u_{2}\) est une approximation de \(y(t_2)\) obtenue en utilisant la méthode \(\text{AB}_2\).
où \(u_{1}\) est une approximation de \(y(t_1)\) obtenue en utilisant une prédiction \(\text{AB}_1\), \(u_{2}\) est une approximation de \(y(t_2)\) obtenue en utilisant la méthode \(\text{AB}_2\) etc.
Les méthodes d’Adam peuvent être facilement généralisées en intégrant l’EDO \(y'(t)=\varphi(t,y(t))\) entre \(t_{n-r}\) et \(t_{n+1}\) avec \(r\ge1\).
Avec \(r=1\), si nous intégrons l’EDO \(y'(t)=\varphi(t,y(t))\) entre \(t_{n-1}\) et \(t_{n+1}\) nous obtenons \(
y_{n+1}-y_{n-1}=\int_{t_{n-1}}^{t_{n+1}} \varphi(t,y(t))dt.
\) On peut construire différents schémas selon la formule de quadrature utilisée pour approcher le membre de droite.
Cette solution approchée sera obtenue en construisant une suite récurrente comme suit:
Ces schémas approchent l’intégrale \(\int_{t_{n-1}}^{t_{n+1}} \varphi(t,y(t))\mathrm{d}t\) par l’intégrale d’un polynôme \(p\)interpolant \(\varphi\) en des points donnés qui peuvent être à l’extérieur de l’intervalle d’intégration\([t_{n-1};t_{n+1}]\).
On peut construire différents schémas selon les points d’interpolation choisis. Toutes ces méthodes peuvent s’écrire à nouveau sous la forme
approchent l’intégrale \(\int_{t_{n-1}}^{t_{n+1}} \varphi(t,y(t))\mathrm{d}t\) par l’intégrale \(\int_{t_{n-1}}^{t_{n+1}} p(t) \mathrm{d}t\) où \(p\) est le polynôme interpolant \(\varphi\) en \(
\{t_n,t_{n-1},\dots,t_{n-p}\} \text{ avec } p\ge0.
\)
les schémas de Milne-Simpson à \(q\) pas (MS-\(q\)) sont
implicites,
approchent l’intégrale \(\int_{t_{n-1}}^{t_{n+1}} \varphi(t,y(t))\mathrm{d}t\) par l’intégrale \(\int_{t_{n-1}}^{t_{n+1}} p(t) \mathrm{d}t\) où \(p\) est le polynôme interpolant \(\varphi\) en \(
\{t_{n+1},t_n,t_{n-1},\dots,t_{n-p}\} \text{ avec } p\ge-1.
\)
\(
\text{(N$_1$)}\quad
\begin{cases}
u_0=y(t_0)=y_0,\\
u_1=u_0+h\varphi(t_{0},u_{0})\approx y(t_1)\\
u_{n+1}=u_{n-1}+2h \varphi(t_{n},u_{n})& n=1,2,\dots N-1
\end{cases}\) où \(u_{1}\) est une approximation de \(y(t_1)\) obtenue en utilisant une prédiction d’Euler explicite.
La méthode N\(_1\) coïncide avec la méthode du point milieu (appelée aussi Saute-mouton ou Leapfrog).
Remarque: on l’appelle N\(_1\) mais il est à 2 pas car il dépend de \(u_{n-1}\).
\(
\text{(N$_2$)}\quad
\begin{cases}
u_0=y(t_0)=y_0,\\
u_1=u_0+h\varphi(t_{0},u_{0})\approx y(t_1)\\
u_{n+1}=u_{n-1}+2h \varphi(t_{n},u_{n})& n=1,2,\dots N-1
\end{cases}\) où \(u_{1}\) est une approximation de \(y(t_1)\) obtenue en utilisant une prédiction d’Euler explicite.
\(
\text{(N$_3$)}\quad
\begin{cases}
u_0 = y(t_0) = y_0,\\
u_1 = u_0 + h\varphi(t_{0},u_{0})\approx y(t_1)\\
u_2 = u_{0} + 2h\varphi(t_{1},u_{1})\approx y(t_2)\\
u_{n+1} = u_{n-1} + \dfrac{h}{3}\big(7\varphi(t_n,u_n)-2\varphi(t_{n-1},u_{n-1})+\varphi(t_{n-2},u_{n-2})\big) & n=2,3,\dots N-1
\end{cases}\) où \(u_{1}\) est une approximation de \(y(t_1)\) obtenue en utilisant une prédiction d’Euler explicite et \(u_{2}\) est une approximation de \(y(t_2)\) obtenue en utilisant la méthode N\(_2\).
\(
\text{(MS$_0$)}\quad
\begin{cases}
u_0=y(t_0)=y_0,\\
u_1=u_0+h\varphi(t_{1},u_{1})\approx y(t_1)\\
u_{n+1}=u_{n-1}+2h \varphi(t_{n+1},u_{n+1})& n=1,2,\dots N-1
\end{cases}\) où \(u_{1}\) est une approximation de \(y(t_1)\) obtenue en utilisant une prédiction d’Euler implicite.
Remarque: on l’appelle MS\(_0\) mais il est à 2 pas car il dépend de \(u_{n-1}\).
\(
\text{(MS$_1$)}\quad
\begin{cases}
u_0=y(t_0)=y_0,\\
u_1=u_0+h\varphi(t_{1},u_{1})\approx y(t_1)\\
u_{n+1}=u_{n-1}+2h \varphi(t_{n},u_{n})& n=1,2,\dots N-1
\end{cases}\) où \(u_{1}\) est une approximation de \(y(t_1)\) obtenue en utilisant une prédiction d’Euler implicite.
On retrouve la méthode N\(_1\): le schéma est devenu explicite.
Remarque: on l’appelle MS\(_1\) mais il est à 2 pas car il dépend de \(u_{n-1}\).
\(
\text{(MS$_2$)}\quad
\begin{cases}
u_0=y(t_0)=y_0,\\
u_1=u_{0}+ \dfrac{h}{2} \big(\varphi(t_{1},u_{1})+\varphi(t_{0},u_{0})\big)\\
u_{n+1}=u_{n-1}+\dfrac{h}{3}\big( \varphi(t_{n+1},u_{n+1})+4\varphi(t_n,u_n)+\varphi(t_{n-1},u_{n-1}\big) & n=1,2,\dots N-1
\end{cases}\) où \(u_{1}\) est une approximation de \(y(t_1)\) obtenue en utilisant une prédiction \(\text{AM}_1\) (=Crank-Nicolson).
Soit \(p\) le polynôme qui interpole la fonction inconnue \(t\mapsto y(t)\) en les points \(
\{t_{n+1},t_n,\dots, t_{n-q+1}\}\text{ avec } q\ge 1.
\)
Au lieu d’évaluer l’EDO \(\varphi(t,y) = y'(t)\) en \(t_{n+1}\), nous évaluons l’EDO approchée \(\varphi(t,y) = p'(t)\) en \(t_{n+1}\) ce qui donne la relation \(
\varphi(t_{n+1},y_{n+1}) \simeq p'(t_{n+1}).
\)
On peut construire différents schémas implicites selon les points d’interpolation utilisés pour approcher la fonction inconnue \(t\mapsto y(t)\). Cette solution approchée sera obtenue en construisant une suite récurrente comme suit:
\(
\begin{cases}
u_0=y_0,\\
u_{n+1} \text{ solution de l'équation }\varphi(t_{n+1},u_{n+1}) = p'(t_{n+1})
\quad \text{où $p(t)$ est un polynôme interpolant }y(t).
\end{cases}
\)
Toutes ces méthodes peuvent s’écrire sous la forme
et on obtient le schéma \(\begin{cases}
u_0=y(t_0)=y_0,\\
u_{n+1} \text{ solution de l'équation }\varphi(t_{n+1},u_{n+1}) = \frac{u_{n+1}-u_{n}}{h} & n=1,2,\dots N-1
\end{cases}\) c’est-à-dire le schéma
et on obtient le schéma \(\begin{cases}
u_0=y(t_0)=y_0,\\
u_{n+1} \text{ solution de l'équation }\varphi(t_{n+1},u_{n+1}) = \frac{3}{2h}u_{n+1}-\frac{2}{h}u_{n}+\frac{1}{2h}u_{n-1} & n=2,3,\dots N-1
\end{cases}\) c’est-à-dire le schéma
Lorsqu’on utilise une méthode implicite, pour calculer \(u_{n+1}\) on doit résoudre une équation (en générale non-linéaire), par exemple avec une méthode de point fixe.
Une approche différente qui permet de s’affranchir de cette étape est donnée par les méthodes predictor-corrector. Une méthode predictor-corrector est une méthode qui permet de calculer \(u_{n+1}\) de façon explicite à partir d’une méthode implicite.
On considère une méthode implicite \(
u_{n+1}=\displaystyle\sum_{j=0}^p a_ju_{n-j} + h\sum_{j=0}^p b_j\varphi(t_{n-j},u_{n-j})+hb_{-1}\varphi(t_{n+1},{\color{blue}u_{n+1}}) \text{ pour $n=p,p+1,\dots,N-1$.}
\)
On modifie la méthode implicite comme suit:
étape de prédiction : on calcule \(\tilde u_{n+1}\) une approximation de \(u_{n+1}\) par une méthode explicite, typiquement une autre méthode multipas linéaire,
étape de correction : on “corrige” la méthode implicite en remplacant $ (t_{n+1},{u_{n+1}}) $ par $ (t_{n+1} , {u_{n+1}}) $.
Ordre Parmi les méthodes linéaires à \(q\) pas, les méthodes implicites sont, à nombre de pas égal, plus précises et en général plus stables (on verra ces propriétés lors du prochaine cours). Cependant, elles sont aussi plus coûteuses car le caractère implicite doit être résolu par une méthode itérative, de type point fixe par exemple. D’où l’idée, pour diminuer le coût, d’utiliser une méthode explicite pour calculer un bon prédicteur de la solution et de ne faire qu’une itération (ou quelques itérations) de la méthode implicite utilisée alors comme correcteur explicite.
Ces méthodes héritent de l’ordre de précision du correcteur. (La contribution à l’erreur du prédicteur est d’un ordre inférieur à celle du correcteur). Pour avoir une méthode d’ordre \(\omega\) on pourra prendre un prédicteur d’ordre \(\omega-1\) et un correcteur d’ordre \(\omega\) (typiquement deux méthodes de Adam ayant le même nombre de pas).
Schématiquement, si on note
\(\omega_{[C]}\) l’ordre du corrector
\(\omega_{[P]}\) l’ordre du predictor
alors l’ordre du predictor-corrector est \(\omega_{[PC]}=\min\{\omega_{[C]},\omega_{[P]}+1\}\)
Zéro-stabilité On démontre que la zéro-stabilité du prédicteur n’influe pas sur la zéro-stabilité de la méthode prédicteur-correcteur. On peut même utiliser un prédicteur instable.
A-stabilité Elles sont soumises à une condition de A-stabilité qui est typiquement celle du prédicteur. Elles ne sont donc pas adaptées à la résolution des problèmes de Cauchy sur des intervalles non bornés ou des problèmes stiff.
Des méthodes de type predictor-corrector sont souvent construites en utilisant une prédiction d’Adam-Bashforth suivie d’une correction d’Adam-Moulton.
Par exemple, si on considère les deux étapes suivantes
Des méthodes de type predictor-corrector sont souvent construites en utilisant une prédiction d’Adam-Bashforth suivie d’une correction BDF.
Par exemple, si on considère les deux étapes suivantes