#!/usr/bin/env python # coding: utf-8 # In[25]: import numpy as np get_ipython().run_line_magic('matplotlib', 'inline') import matplotlib.pyplot as plt # # Cours accéléré analyse numérique - M2 AMS - 2023/2024 # # ## Tout d'abord : Notebooks # # Ce fichier est un notebook. Il permet d'écrire du texte mathématique et d'écrire du code python. Il s'ouvre avec jupyter. # # Pour lancer Jupyter, il faut, dans un terminal, lancer la commande # # `jupyter-notebook` # # Cela ouvrira automatiquement un navigateur Web dans lequel on peut travailler. L'onglet principal représente l’arborescence des fichiers depuis le fichier où la commande à été lancé. # # Les notebooks sont composés de cellules contenant du code (en python) ou du texte (simple ou formaté avec les balisages Markdown). Ces notebooks permettent de faire des calculs interactifs en Python, et constituent un outil de choix pour l'enseignement. # # On peut éditer une cellule en double-cliquant dessus, et l’évaluer en tapant **Ctrl+Entrée** (on utilisera aussi souvent **Maj.+Entrée** pour évaluer et passer à la cellule suivante). Les boutons dans la barre d’outil vous seront très utiles, survolez-les pour faire apparaître une infobulle si leur pictogramme n’est pas assez clair. N’oubliez pas de sauvegarder de temps en temps votre travail, même si Jupyter fait des sauvegardes automatiques régulières. # # # ### Cellule Markdown # Le *Markdown* est un format de texte qui accepte un minimum de formattage. Il permet de rapidement : # - faire des liste. # - faire des *italiques*, du **gras**. # - faire des [liens](https://fr.wikipedia.org/wiki/Markdown) # - écrire des formules mathématiques avec $\LaTeX$ . # ### Cellule Python # La cellule suivante est une cellule python. On peut l'évaluer avec **Maj.+Entrée**. # In[26]: # Ceci est un commentaire Python # On prendra l'habitude de commenter son code : # Un code doit être lisible et compréhensible par d'autres utilisateurs # a = 8 print("a =", a, "et 2*a =", 2*a) # $$\newcommand{\tn}{\mathrm} # \newcommand{\eref}[1]{(\ref{#1})} # \newcommand{\dep}[2]{\partial_{#2}{#1}} # \newcommand{\dis}{\displaystyle} # \newcommand{\R}{\mathbb{R}} # \newcommand{\C}{\mathbb{C}} # \newcommand{\Z}{\mathbb{Z}} # \newcommand{\N}{\mathbb{N}} # $$ # # Schémas de différences finies pour les équations différentielles. # # ## L'approximation numérique des équations différentielles. # # On s'intéresse à l'approximation numérique des équations différentielles, ordinaires et aux dérivées partielles. C'est surtout les deuxièmes qui nous intéresseront mais pour introduire la méthode des différences finies, on commencera par les premières. # # Les équations différentielles correspondent souvent à des modèles mathématiques décrivant des phénomènes physiques. Dans beaucoup de cas, on ne sait pas calculer une solution explicite d'une équation donnée, et on doit utiliser des techniques de résolution approchée. On s'intéresse alors à la **discrétisation** et à la **résolution numérique** de l'équation, autrement dit on remplace l'équation, qui est posée sur un domaine continu, par un problème discret, en discrétisant le domaine. Si l'équation originale est linéaire on obtient, en discrétisant, un système linéaire, si l'équation originale est non linéaire, on peut obtenir une équation non linéaire à résoudre, par exemple par une méthode de résolution approchée d'équations non linéaires comme la méthode de Newton. # Les principales méthodes de discrétisation pour une équation différentielle sont les méthodes des différences finies, la méthode des éléments finis et la méthode des volumes finis. Il y a aussi d'autres classes de méthodes, comme les méthodes spectrales. Au début de ce cours on s'intéresse à la méthode des différences finies. # # ### La méthode des différences finies - approximation des dérivées. # # On considère une équation différentielle, dont l'inconnue est une fonction $u$, posée sur un domaine physique $\Omega\subseteq\R^d,\ d\geq1$. # # Le principe de la méthode des différences finies est d'approcher la solution $u$ de cette équation en un ensemble discret (mais **grand**) $\{x_1,\dots,x_N\}$ de points du domaine $\Omega,$ en remplaçant les dérivés de $u$ aux points $x_i$ par des quotients de différences faisant intervenir les points voisins de $x_i$. Cette approche sera valable si la solution du problème est régulière. # # Par exemple, on a pour une fonction $u$ d'une seule variable que sa dérivé en un point $x$ de son domaine vérifie # $$ # u'(x)=\lim_{h\to0}\frac{u(x+h)-u(x)}{h}=\lim_{h\to0}\frac{u(x)-u(x-h)}{h}=\lim_{h\to0}\frac{u(x+h)-u(x-h)}{2h}=\dots, # $$ # et on peut donc approcher $u'(x)$ par les quotients # $$ # \frac{u(x+h)-u(x)}{h},\ \frac{u(x)-u(x-h)}{h},\ \frac{u(x+h)-u(x-h)}{2h},\dots, # $$ # avec $h\,$ **petit**. # # Ces quotients de différences finies font intervenir des valeurs de $u$ en un nombre fini (dans chacun de ces exemples, deux) de points du domaine proche de $x.$ On va vérifier un peu plus en bas que l'on peut aussi approcher $u'(x)$ par exemple par la quantité # $$ # \frac{2u(x+h)+3u(x)-6u(x-h)+u(x-2h)}{6h}, # $$ # pour $h$ petit. # # On a aussi que si $u$ est deux fois dérivable au point $x,$ alors # $$ # u''(x)=\lim_{h\to0}\frac{u(x+h)-2u(x)+u(x-h)}{h^2} # $$ # et on peut donc aussi approcher $u''(x)$ par le quotient de différences finies # $$ # \frac{u(x+h)-2u(x)+u(x-h)}{h^2}, # $$ # avec $h$ **petit**. # # Une question que l'on se posera souvent dans le cadre de la méthode des différences finies est celle de l'**ordre** de l'approximation. On va expliciter cette notion plus loin, mais essayons de la comprendre dès maintenant. Elle mesure l'erreur commise dans ces approximations. # # # Supposons $a,\ b\in\R$ et $u:[a,b]\longrightarrow\R$ une fonction de classe $\mathcal C^4$. # Soit $x\in]a,b[$. # # **Exercice 1** # # 1. Montrer, en utilisant des développements de Taylor de $u$ autour de $x$, que, lorsque $h\to0$, # $$ # \left|u'(x)-\frac{u(x+h)-u(x)}{h}\right|=\mathcal{O}(h),\ \ \ \left|u'(x)-\frac{u(x)-u(x-h)}{h}\right|=\mathcal{O}(h), # $$ # $$ # \left|u'(x)-\frac{u(x+h)-u(x-h)}{2h}\right|=\mathcal{O}(h^2). # $$ # et que # $$ # \left|u'(x)-\frac{2u(x+h)+3u(x)-6u(x-h)+u(x-2h)}{6h}\right|=\mathcal{O}(h^3). # $$ # # 2. *Construction d'une approximation de différences finies à un ordre précis.* Chercher une approximation par différences finies de $u'(x)$ basée sur les points $x,\ x-h$ et $x-2h$ de la forme $au(x)+bu(x-h)+c u(x-2h)$ tel que # $$ # \left|u'(x)-\big(au(x)+bu(x-h)+c u(x-2h)\big)\right|=\mathcal{O}(h^2). # $$ # # Les différences ci-dessus s'appellent **erreurs de troncature** ou de **consistance** au point $x$. On dira que cette erreur est d'ordre 1 si elle se comporte en $\mathcal{O}(h)$, d'ordre $p>0$ si elle se comporte en $\mathcal{O}(h^p).$ Plus $p$ est grand, plus l'approximation choisie de la dérivée de $u$ est précise. # # L'exercice 1.2 nous fait penser que l'on peut approcher la dérivée d'une fonction $u$ en un point $x$ par une formule de différences finies à un ordre souhaité, en utilisant des valeurs de $u$ en points autour de $x$, en cherchant les bons poids pour chaque valeur. Mais on voit facilement que le plus élevé est l'ordre souhaité, le plus de points il est nécéssaire d'utiliser. # # **Exercice 2. Interpolation polynomial** # # On peut approcher la dérivée d'une fonction $u$ en un point $x$ en approchant la fonction $u$ par un polynôme $X\mapsto P(X)$ et en calculant $P'(x)$. Vérifier que si l'on approche $u$ par ses polynômes d'interpolation de dégré 1 aux points $x$ et $x-h$, ou $x$ et $x+h$, ou $x-h$ et $x+h$, et que l'on calcule les dérivées de ces pôlynômes au point $x$, on obtient les formules de différences finies correspondantes que l'on a vu précédamment. On peut faire le même exercice en approchant $u$ par le polynôme d'interpolation (de degré 2) aux points $x,\ x-h$ et $x-2h$ et par le polynôme (de degré 3) qui interpole $u$ aux points $x,\ x+h,\ x-h$ et $x-2h$. # # # #### Approximation des dérivées dans un ensemble de points d'un intervale. # # Soit $[a,b]\subseteq\R$ et $h>0$ tel qu'il existe $N\in\N$ tel que $\frac{b-a}{N}=h$. Considérons alors les $N+1$ points $x_n=a+nh,\ n=0,\dots,N$. L'ensemble discret formé par les points ${x_0,\dots,x_N}$ s'appelle une discrétisation régulière ou uniforme de $[a,b]$ de pas $h$. # # Soit $u$ une fonction régulière définie sur $[a,b]$ et soit $U\in\R^{N+1}$ le vecteur $(U_0,\dots,U_N)$ avec $U_n=u(x_n),\ n=0,\dots,N$. # # On souhaite ici approcher les dérivées de $u$ en chaque point $x_n$ de la discrétisation de l'intervalle $[a,b]$ au même ordre, en utilisant le même type de différences finies en chaque point. La difficulté en faire ceci consiste dans l'approximation des dérivées aux points $\{a,\ b\}$ du bord de l'intervalle et en général dans ces points on doit utiliser une approximation différente de celle utilisée aux points de l'intérieur du domaine. Ce problème se pose lors de la discrétisation des conditions aux limites pour un problème aux limites pour une équation aux dérivées partielles. # # **Exercice 3** # 1. Déterminer en fonction de $h$ et de $U$ un vecteur $V\in\R^{N+1}$ vérifiant # $$ # \max_{n=0,\dots,N}|V_n-u'(x_n)|=\mathcal{O}(h). # $$ # 2. Déterminer en fonction de $h$ et de $U$ un vecteur $W\in\R^{N+1}$ vérifiant # $$ # \max_{n=0,\dots,N}|W_n-u'(x_n)|=\mathcal{O}(h^2). # $$ # 3. **A faire dans la cellule code ci-dessous**.\\ # Illustrer numériquement les deux approximations de la dérivée de $u$ pour la fonction $u(x)=\sin(x)$ dans l'intervalle $[a,b]=[0,2\pi]$. Pour ce faire représenter dans la même figure la fonction $u'$, le vecteur $V$ et le vecteur $W$, en fonction de $x$, avec $h=\frac{2\pi}{10}$ et puis avec $h=\frac{2\pi}{100}$. Représenter dans une autre figure les différences $|u'-V|$ et $|u'-W|$. # # On peut construire une discrétisation non uniforme de l'intervale $[a,b]$, c'est-à-dire telle que la différence entre chaque deux points consécutifs de la discrétisation ne soit pas toujours égale. Dans ce cas on appelera pas de la discrétisation la plus grande distance entre chaque deux points consécutifs de la discrétisation. # In[27]: #CODER ICI # # #### Analyse de l'ordre de précision. # # La méthode des différences finies pour approcher la solution $u$ d'une équation différentielle posée dans un domaine $\Omega$ consiste à remplacer l'équation différentielle par une équation aux différences finies, en remplaçant les dérivées de $u$ par des quocients de différences finies en des points obtenues en discrétisant le domaine $\Omega$ avec un **pas** $h>0$. # # Nous avons vu qu'en utilisant des développements de Taylor relativement simples, on peut obtenir l'ordre de l'erreur commmise entre la dérivée et son approximation par différences finies. Dans les exemples que l'on a vu, cette erreur se comporte en $\mathcal{O}(h^p)$, avec $p\in\N$. En géneral on ne sait pas exactement comment se comportent ses erreurs. Une manière d'avoir une idée de ce comportement est de représenter graphiquement la différence entre la fonction et ses dérivées, pour des valeurs de $h$ différentes, et de chercher à comprendre comment se comporte cette erreur en fonction de $h$. # # Plus précisément, considérons toujours le cas d'une fonction $u$ définie sur un intervalle $[a,b]$ et, pour $h>0$, une discrétisation de l'intervalle $[a,b]$ de pas $h$, donnée par $N+1$ points $x_0,\dots,x_N$ ($N$ dépend de $h$). # # Supposons de l'on approche la dérivée $u'(x_n)$ en chaque point $x_n$ de la discrétisation par un quocient de différences finies donnée par une formule $Du(x_n).$ On note $E(h)$ l'erreur globale commise (par exemple en norme infinie) avec le pas $h$ : $E(h)=\max_{n=0,\dots,N}|u'(x_n)-Du(x_n)|$. Supposons que l'on s'attend à ce que $E(h)$ se comporte comme $h^p$ pour un certain $p\in\N$, c'est-à-dire qu'il existe $C>0$ indépendant de $h$ tel que $E(h)\sim C h^p$. Alors on s'attend à ce que $\log\big(E(h)\big)$ se comporte comme # $$ # \log\big(E(h)\big)\sim \log(C)+p\log(h). # $$ # On peut alors représenter dans un graphique $\log(E(h)$ en fonction de $\log(h)$, pour des valeurs de $h$ de plus en plus petits. Si le comportement est l'attendu, on obtiendra que, dans cette échelle log-log, le graphique de $E(h)$ en fonction de $h$ est une droite de pente $p$, et cette pente de la droite nous donne l'ordre de la méthode. # # **Exercice 4** # 1. Choisir un point quelconque $x$ et représenter, pour plusieurs valeurs de $h$ de plus en plus petites, la différence en valeur absolue entre $u'(x)$ et, respectivement $\frac{u(x+h)-u(x)}{h}$, $\frac{u(x+h)-u(x-h)}{2h}$ et $\frac{2u(x+h)+3u(x)-6u(x-h)+u(x-2h)}{6h}$, en fonction de $h$, en échèlle logarithmique. Représenter des droites de pente 1, 2 et 3 sur le même graphique pour visualiser comment se comporte cette différence en fonction de $h$. # # 2. Faire le même exercice mais en considérant maintenant des discrétisations uniformes de pas $h$ de par exemple l'intervale $[0,\pi]$, et calculer l'erreur globale des mêmes approximations sur cet intervale. Pour approcher les points de bord dans la dernière formule on peut utiliser les valeurs exactes ici. # In[28]: # # ## Approximation des EDO. # # On s'intéresse à des méthodes numériques pour approcher les équations différentielles ordinaires.\\ # # On considère le problème de Cauchy pour une équation diff\'erentielle ordinaire, ou pour un syst\`eme d'équations diff\'erentielles ordinaires, de la forme # \begin{equation} # \label{sys} # \tag{sys} # \left\{\begin{aligned} # y'(t) & = f(t,y(t)), \\ # y(t_0) & = y_0, # \end{aligned} \right. # \end{equation} # o\`u $f$ : $I \times \R^n \longrightarrow \R^n$ est une # fonction continue et localement Lipschitzienne par rapport à sa deuxième variable, avec $I\subseteq\R$ un intervalle ouvert de $\R$ et où $(t_0,y_0)\in I\times\R^n$ est donné. Le problème de Cauchy \eqref{sys} admet alors une unique solution maximale définie dans un intervalle ouvert $J\subseteq I$ : ce résultat est une conséquence du **théorème de Cauchy-Lipschitz**. # # On souhaite calculer une solution approchée (**discrète**) de ce problème dans un intervalle de la forme $[t_0,t_f]=[t_0,t_0+T]\subseteq J$, avec $T>0$. # # Pour cela on procède comme suit. # # 1. On discrétise (c'est-à-dire on remplace du continu par du discret) l'intervalle $[t_0,t_0+T]$. Pour ce faire on se donne $N\in\N$ et on définit une sub-division de $[t_0,t_0+T]$ en $N$ sous-intervalles définis par les $N+1$ points, appelées points de la discrétisation, # $$ # t_00$, indépendante de $h$, tel que # $$ # \forall\ N\in\N,\ \ \sum_{n=0}^{N-1}\|\varepsilon^n\|\leq Ch^p. # $$ # # **La méthode est consistante si l'erreur commise par une étape du schéma est petite car la discrétisation est cohérente avec l'EDO**. # # La méthode est dite **stable** s'il existe une constante $M>0$, indépendante de $h$, tel que pour toutes suites $y^n$ et $\widetilde{y}^n$ définies par # \begin{align*} # y^{n+1}&=y^n+h\Phi(t_n,y^n,h),\ \ n=0,\dots,N-1,\ \ \ y^0\ \textrm{donn\'e},\\ # \widetilde{y}^{n+1}&=\widetilde{y}^n+h\Phi(t_n,\widetilde{y}^n,h)+\rho^n,\ \ n=0,\dots,N-1,\ \ \ \widetilde{y}^0\ \textrm{donn\'e}, # \end{align*} # avec $\rho^n\in\R,\ n=0,\dots,N-1$, on ait # $$ # \max_{n=0,\dots,N}\|y^n-\widetilde{y}^n\|\leq M\Big(\|y^0-\widetilde{y}^0\|+\sum_{n=0}^{N-1}\|\rho^n\|\Big). # $$ # # **Une méthode stable est alors une méthode telle que, lorsque l'on introduit une perturbation $\rho^n$ à chaque étape du schéma, l'erreur totale de la méthode est contrôlée par le cumul des perturbations**. # # **Exercice 5.** # Montrer que si la méthode est stable et consistante, alors elle est convergente. Montrer que si la méthode est stable et consistante d'ordre au moins $p$ alors # il existe une constante $\tilde{C}$ indépendante de $h$ tel que # $$ # \max_{n=0,\dots,N}\|y(t_n)-y^n\|\leq \tilde{C}h^p. # $$ # # # **On utilise souvent la formulation "méthode d'ordre $p$" au lieu de "méthode consistante d'ordre $p$" pour une méthode dont l'erreur de consistance est d'ordre $p$. Ce dernier exercice montre que si la méthode est consistante d'ordre $p$, l'erreur globale du schéma se comporte aussi comme $\mathcal{O}(h^p)$.** # # **Exercice 6** # Supposons la solution $y$ du problème de Cauchy \eqref{sys} régulière. On peut montrer, en utilisant des développements de Taylor appropriés, que la méthode d'Euler explicite est consistante d'ordre 1 et que la méthode de Heun est consistante d'ordre 2 (celle de RK4 est consistante d'ordre 4 mais les calculs sont plus compliqués). # # # **Exercice 7. Méthodes d'Euler, Heun et RK4.** # 1. Pour chacune des trois méthodes numériques données, écrire une fonction python de la forme # `meth(fct, t0, tf, y0, h)` # # avec `meth = euler_exp, Heun` ou `RK4`, # prenant en argument `fct` la fonction $f(t,y)$, les extrémités `t0` et `tf` de l'intervalle de temps $[t_0,t_f]=[t_0,t_0+T],$ la donnée initiale `y0` et le pas de temps `h`. Cette fonction devra retourner deux # tableaux : # - $[t_0,\, t_1,\, ...,\, t_N],$ tableau numpy unidimensionnel de taille $(N+1)\times 1$ représentant la subdivision de l'intervalle $[t_0,t_f]$ de pas $h$ considérée, # - $[y^0,\, y^1,\, ...,\, y^N],$ tableau numpy de taille $(N+1)\times n$ représentant la solution approchée aux instants $t_n,\ n=0,\dots,N$, donnée par la méthode choisie. # 2. Testez vos trois fonctions sur le modèle logistique # $$ # (P_1)\ \ \ \ # \begin{cases} # y'(t)=c y (1 - \frac{y}{b}),\\ # y(0)=a, # \end{cases} # $$ # dont la solution exacte est # $$ # y(t) = \frac{b}{1 + \frac{b-a}{a} e^{-ct}}, # $$ # avec les données $c=1$, $b=2$, $a=0.1$, dans l'intervalle $[0,15]$, avec un pas $h=0.2$. Tracer sur la même fenêtre la solution exacte et les solutions approchées, obtenue avec le pas $h$ et dans une autre fenêtre avec un pas égal à $\frac h2$. # # 3. Testez ensuite vos fonctions dans le cas vectoriel $n>1$ ($n=2$) sur le problème # $$ # (P_2)\ \ \ \ # \begin{cases} # y''(t) = -y(t) + \cos(t) \\ # y(0) = 5,\ \ y'(0) = 1, # \end{cases} # $$ # dont la solution exacte est # $$ # y(t) = \frac{1}{2} \sin(t) t + 5 \cos(t) + \sin(t), # $$ # dans l'intervalle $[0,15]$, avec un pas $h=0.2$.\\ # Pour ce faire, il faut écrire l'équation d'ordre 2 de $(P_2)$ sous la forme d'un système de deux équations d'ordre 1 dans les nouvelles variables $u(t)=y(t)$ et $v(t)=y'(t)$. On se ramènera alors à la résolution d'une équation de la forme # $$ # X'=F(t,X),\ \ \ \textrm{avec}\ X=(u,v)=(y,y')^T. # $$ # Représenter à nouveau la solution exacte et les solutions approchées dans une même fenêtre graphique. # **La solution $y$ de $(P_2)$ correspond à la première composante du vecteur $X$ ci-dessus. Votre fonction `euler_exp` retournera dans ce cas, si vous avez respecté la structure conseillée, un tableau de taille $(N+1)\times2$, $N$ étant le nombre de points de la discrétisation. Ce tableau donne les valeurs approchées de $X$ au points de la discrétisation considérée, la première colonne correspondant à la première composante de $X$, la seconde à la seconde composante de $X$. La solution approchée de $(P_2)$ que l'on cherche correspond alors à la première colonne de ce tableau.** # # In[29]: # # **Exercice 8** # On se donne un problème de Cauchy de la forme **(sys)** et une méthode numérique pour approcher la solution de **(sys)** dans un intervalle de la forme $[t_0,t_0+T]$. Pour un certain pas de temps $h$ fixé (ou pour un certain nombre de points de la discrétisation $N$ fixé), l'erreur globale entre la solution approchée associée à une discrétisation de pas $h$ de l'intervalle $[t_0,t_0+T]$ et la solution exacte est donnée par : # \begin{equation*} # E_h = \max_{k=0,\cdots,N}( |y(t_k)-y^{k}|). # \end{equation*} # Ci dessus, $y(t_k)$ est la solution exacte à l'instant $t_k$ et $y^{k}$ la valeur approchée de $y(t^k),$ donnée par le schéma numérique. # # **Remarque** : l'erreur globale $E$ dépend du pas $h$, ou, de manière équivalente, du nombre de points $N$ de la discrétisation. Parfois dans la littérature on ne spécifie pas la dépendance de $E$ par rapport à $h$, mais on doit toujours garder à l'esprit cette dépendance et que l'erreur est donc une fonction de $h$. # # Considérons le problème # $$ # (P_3)\ \ \ \ # \begin{cases} # y'(t)=\frac{\cos(t)-y(t)}{1+t},\\ # y(0)=-\frac14, # \end{cases} # $$ # dont la solution exacte est # $$ # y(t) = \frac{\sin(t)-1/4}{1 + t}. # $$ # # 1. Calculez les solutions approchées de $(P_3)$ obtenues avec le schéma d'Euler explicite, avec $h=1/2^s$ pour $s = 1,2,...,8$ ; # Calculer, pour chaque valeur de $h=1/2^s,\ s = 1,2,...,8,$ l'erreur globale $E_h$ correspondante. Représentez ensuite, en échelle logarithmique, l'erreur en fonction du pas de temps $h$, autrement dit, représentez $\log(E_h)$ en fonction de $\log(h)$. Vous devez obtenir des points qui sont à peu près alignés sur une droite de pente 1. Vérifiez graphiquement que c'est le cas, en estimant la pente de la droite passant au plus prêt des points (ou en représentant une droite de pente $1$ qui passe par un des points et en vérifiant que tous les points sont à peu près sur cette droite). # Ceci signifie que $\log(E_h) \sim C+\log(h)$ et donc que $E_h\sim \widetilde{C}h$, pour certaines constantes $C$ et $\widetilde{C}$. On dit que la méthode d'Euler explicite est d'{\color{blue} ordre} 1 : c'est l'ordre de la puissance de $h$ dans cette relation. On a donc que l'erreur globale $E_h$ tend vers 0 comme $h$. L'ordre d'une méthode donne une indication sur sa vitesse de convergence. Une méthode d'ordre $p$ est une méthode dont l'erreur globale tend vers $0$ comme $h^p$. Donc plus l'ordre est élevé, plus la méthode converge plus vite. # # **Remarque** : pour étudier numériquement l'ordre d'une méthode, on utilise souvent l'échelle logarithmique pour tracer l'erreur en fonction du pas de discrétisation $h$. La pente de la droite obtenue donne l'ordre $p$ de la méthode : si $E_h \sim Ch^p$ alors $\log(E_h)\sim \log(C) + p\log(h)$. # In[30]: #Euler # # 2. Vous pouvez refaire l'exercice pour la méthode de Heun et de RK4. Vous allez conclure que la méthode de Heun est d'ordre 2 et la méthode de RK4 d'ordre 4. # # In[31]: # Heun # # In[32]: # # In[ ]: # In[ ]: # In[ ]: