\documentclass[a4paper,11pt]{article}
\usepackage[francais]{babel}
\usepackage[dvips]{graphics}
\usepackage{graphicx}
\usepackage[latin1]{inputenc}
%\usepackage{isolatin1}
\usepackage{amsmath}
\usepackage{amscd}
\usepackage{amstext}
\usepackage{amsbsy}
\usepackage{amsopn}
\usepackage{amsthm}
\usepackage{amsxtra}
\usepackage{upref}
\usepackage{euscript}
\usepackage{amssymb}
\usepackage{amsfonts}
%\usepackage{ulsy}
\usepackage[all]{xy}
\usepackage{enumerate} % pour avoir des enumerations plus evoluees
\usepackage{vmargin}
\usepackage{txfonts}
\usepackage{textcomp}
\usepackage{fontenc}
%\usepackage{marvosym}
% Idem pour avoir un beau symbole du si et seulement si
\def\NN{\ensuremath{\mathbb{N}}}
\def\ZZ{\ensuremath{\mathbb{Z}}}
\def\QQ{\ensuremath{\mathbb{Q}}}
\def\RR{\ensuremath{\mathbb{R}}}
\def\CC{\ensuremath{\mathbb{C}}}
\def\KK{\ensuremath{\mathbb{K}}}
%
\parindent=0pt
\setmarginsrb{2,5cm}{0,5cm}{2,5cm}{1,5cm}{16pt}{30pt}{16pt}{45pt}
%\setmarginsrb{1}{2}{3}{4}{5}{6}{7}{8} 
% {1} marge gauche, {2} est la marge en haut,{3} est la marge droite,{4} est la marge en bas, {5} fixe la hauteur de l'entête, {6} fixe la distance entre l'entête et le texte, {7} fixe la hauteur du pied de page, {8} fixe la hauteur entre le texte et le pied de page.
%
%
\date{}
\title{Exposé 85 : Exemples d'approximation d'une solution d'une équation différentielle par la méthode d'Euler. L'exposé pourra être illustré par un ou des exemples faisant appel à l'utilisation d'une calculatrice.}
%\author{Haudebourg Gwendal}
%pour la date en français
%\def\today{\ifnum\day=1\relax 1\raisebox{.6ex}{\small er}
%\else \number\day\fi
%\space\ifcase\month\or janvier\or février\or mars\or avril\or mai\or juin\or juillet\or août\or septembre\or %octobre\or novembre\or décembre\fi\space\number\year}  
% guillemets ouvrant \og  fermant \fg
%
\newenvironment{pluslong}[2][]%
{\begin{flushleft}\textbf{#1} \textsc{#2\\} \textup}%
{\end{flushleft} }
%
%
\newenvironment{pluslong2}[2][]%
{\begin{flushleft}\textbf{#1} \textsc{#2} \textup}%
{\end{flushleft} }
%
\newenvironment{moyen}[1][]%
{\begin{flushleft}\textbf{#1\\} \textup}%
{\end{flushleft} }
%
\newenvironment{moyen2}[1][]%
{\begin{flushleft}\textbf{#1} \textup}%
{\end{flushleft} }
%
\newenvironment{court}%
{\begin{flushleft} \textup}%
{\end{flushleft} }
%
%
\newenvironment{preuve}[1][]%
{\begin{flushleft}\underline{preuve}\textup}%
{\qed\end{flushleft}}
%
\begin{document}
\maketitle
%\tableofcontents
% (table des matières)
%\newpage
\textbf{Prérequis}\footnotemark[1] :\\
\footnotetext[1]{L'exposé a été présenté et tapé à Bordeaux(1) le 27/04/05 par Gwendal Haudebourg, corrigé par M.B. Mis à jour le 31/07/2007.}
-Continuité, dérivabilité d'une fonction\\
-Etude des suites\\
-Equation différentielle linéaire du premier ordre\\
-Calcul intégral (intérêt : présenter les deux autres méthodes d'Euler\footnotemark[2])\\
\footnotetext[2]{Léonard Euler : mathématicien suisse (1701-1783)}

\textsc{Niveau} : terminal - programme complémentaire

\begin{moyen2}
De nombreux problèmes, issus de la physique (radioactivité, réseaux éléctriques), de l'écologie et de l'économie conduisent à étudier une relation entre une fonction et sa dérivée. Le but de cette leçon est d'étudier des exemples simples de telles relations et de décrire une méthode (élémentaire) d'approche de ces problèmes.
\end{moyen2}

\section{Problématique}

\begin{moyen}
Soit $I$ un intervalle de \RR, $t_{0}\in I$, $f$ une fonction définie et continue sur $I\times \RR\rightarrow \RR$\\
On considère l'équation différentielle $(E):y'=f(t,y)$\\
On pourra prendre $f(t,y)=a(t)y+b(t)$, $a,b \in C^{0}$ résolvable en terminale : $(E)$ a une unique solution : $y(t)=e^{A(t)}.y_{0}+e^{A(t)}\int_{t_{0}}^{t} e^{-A(s)}b(s)ds, A(t)=\int_t^t a(s)ds$
Etant donné un réel $y_{0}$, on cherche à construire une solution approchée de $(E)$ sur $I$ tq. $y(t_{0})=y_{0}$\\
Par la suite, on va supposer que $(E)$ admet une solution unique (que l'on ne cherche pas à déterminer, mais juste à approcher). Approcher la solution de l'équation différentielle se ramène à un calcul d'intégrales :\\ 
$y(t_{n+1})=y(t_{n})+\int_{t_{n}}^{t_{n+1}} y'(t)dt=y(t_{n})+\int_{t_{n}}^{t_{n+1}} f(t,y(t))dt$. C'est cette dernière intégrale que l'on va chercher à approcher. 
\end{moyen}

\section{Méthode d'Euler (explicite)}

\begin{moyen}
Soit $(E) : y'=f(t,y)=a(t)y+b(t)$, $t \in \left[ t_{0},t_{n}\right]=I$
L'idée de la méthode est simple : on découpe l'intervalle d'étude $I$ en $n$ intervalles isométriques, et on approche, sur chacun de ces sous-intervalles, la courbe solution par sa tangente à l'extrémité gauche de l'intervalle : $t_{0}<t_{1}...<t_{n}=T$, pas $h=\dfrac{t_{n}-t_{0}}{n}$ $t_{i}=t_{0}+ih$\\
On s'efforce donc de suivre la courbe solution à l'aide des tangentes : on définit ainsi une suite $(y_{k})_{k}$ par : $y_{k+1}=y_{k}+hf(t_{k},y_{k})$, $k=0...n-1$.\\
\textit{On a ainsi une suite de points $A_{i}(t_{i},y_{i})$ qui forment une ligne brisée approchant la solution de l'équation différentielle $(E)$. Cette ligne brisée n'étant pas évidente à tracer, on met ce point de vue de côté, pour s'occuper surtout de l'approximation des intégrales par la méthode des rectangles. La ligne brisée qu'une illustration graphique de la méthode d'Euler.} 
\end{moyen}

\begin{moyen}[preuve :]
En effet, soit $y$ solution de $E$. Alors : $y(t_{n+1})=y(t_{n})+\int_{t_{n}}^{t_{n+1}} y'(t)dt=y(t_{n})+\int_{t_{n}}^{t_{n+1}} f(t,y(t))dt$ or $\int_{t_{n}}^{t_{n+1}} f(t,y(t))dt=(t_{n+1}-t{n})f(t_{n},y(t_{n}))+(t_{n+1}-t_{n}).\xi$ (par la méthode des rectangles gauches). On approche donc la solution $y$ en posant comme suite de points : $y_{n+1}=y_{n}+(t_{n+1}-t_{n})f(t_{n},y_{n})$.\\
L'erreur à l'issue du pas $n+1$ est $y_{n+1}-y(t_{n+1})$
\end{moyen}

\textbf{Le shéma d'Euler explicite est une méthode constructive}

\begin{moyen}[Exemple :]
Soit $(E):y'=-y$ et $y_{0}=1$ (on prend donc $t_{0}=0$)\\
On sait bien sûr que la solution de $(E)$ est $y(t)=e^{-t}$ et $\lim_{t \to \infty}e^{-t}=0$\\
Par Euler, on contruit $y_{n}=y_{n-1}+hf(t_{n-1},y_{n-1})=y_{n-1}-h.y_{n-1}$ $=y_{n-1}(1-h)=...$ d'où $y_{n}=(1-h)^{n+1}=(1-\dfrac{T}{n})^{n+1}$ qui converge bien vers la solution.\\
Mais lorsque le temp est très grand, $y_{n}$ devient très grand : \textbf{pour $n$ fixé}\footnotemark[3],  $\lim_{T \to \infty}(1-\dfrac{T}{n})^{n}\nrightarrow 0$ c'est à dire ne s'approche plus de la solution exacte.\\
Le shéma d'Euler explicite est donc un shéma instable, car on ne peut l'utiliser que sur des ensembles où le temps est fini.
\end{moyen}

\footnotetext[3]{Il faut bien voir que l'on peut faire varier $n$ et $T$ indépendament : on peut fixer $n$ et faire varier $T$ (le pas $h$ variera)} 

Existe t-il une méthode proche de celle utilisée, qui soit stable pour des temps très grand ?

\section{Méthode d'Euler (implicite)}

\begin{moyen}
On utilise le même principe, mais cette fois-ci, on va approcher $\int_t^t f(t,y(t))dt$ par la méthode des rectangles droits.\\
$y(t_{n+1})=y(t_{n})+\int_{t_{n}}^{t_{n+1}} y'(t)dt=y(t_{n})+\int_{t_{n}}^{t_{n+1}} f(t,y(t))dt$ or $\int_{t_{n}}^{t_{n+1}} f(t,y(t))dt=(t_{n+1}-t{n})f(t_{n+1},y(t_{n+1}))+(t_{n+1}-t_{n}).\xi$. On approche donc la solution $y$ en posant comme suite de points : $y_{n+1}=y_{n}+(t_{n+1}-t_{n})f(t_{n+1},y_{n+1})$.\\
\end{moyen}

On a alors : $y_{n+1}=y_{n}+(t_{n+1}-t_{n})(a(t_{n+1})y_{n+1}+b(t_{n+1}))$ donc $y_{n+1}=(1-(t_{n+1}-t_{n})*a(t_{n+1}))^{-1}.(y_{n}+(t_{n+1}-t_{n})b(t_{n+1})$\\
Dans notre exemple, cela donne : \\
$y_{n+1}=(1+\dfrac{T}{n})^{-1}.y_{n}=(1+\dfrac{T}{n})^{-n}.y_{0}$ ($a=-1,b=0$), et $(y_{n})_{n}$ converge bien vers la solution.\\
De plus, \textbf{pour n fixé}, $\lim_{T \to \infty}y_{n}=\lim_{T \to \infty}(1+\dfrac{T}{n})^{-n}=0$\\
La méthode d'Euler implicite reste fiable lorsque le temps est plus long.

\begin{court}
On a gagné par cette méthode de la stabilité, mais le coût de l'algorithme est plus élevé, car il s'agit d'une méthode implicite : il y a des termes en $y_{n+1}$ "de chaque côté de la suite", la méthode \textbf{n'est donc pas constructive}. 
\end{court}

\section{Conclusion-Compléments}

\subsection{Conclusion}

D'autre méthodes d'approximations des solutions d'une équations différentielles existent; citons la méthode d'Euler amélioré, et Runge-Kutta.

\subsubsection{Exemples à mettre dans l'exposé en conclusion}

1) Un bon exemple pour comprendre l'utilisation des deux méthodes, et pour les comparer :\\
Soit $(E):y'=-y+1$, $y(0)=0$, $t \in \left[ 0,1 \right]$. Solution exacte : $y(t)=1-e^{-t}$\\
On prend un pas $h=0,1$ et $n=10$
Euler explicite :$y_{n+1}=y_{n}.0,9+0,1$\\
Euler implicite : $y_{n+1}=y_{n}+0,1.(1-y_{n+1})$ soit $y_{n+1}=\dfrac{y_{n}+0,1}{1,1}$\\
On rentre les deux suites dans la calculatrice (plus la solution exacte) pour les comparer. Sur des temps longs, Euler explicite s'éloigne de la solution.\\
Calculatrice : $u1(n)=u1(n-1).0,9+0,1$ et $ui1=0,1$\\
               $u2(n)=\dfrac{u2(n-1)+0,1}{1,1}$ et $ui2=0$\\
2) Exemple M.B. : $y'(t)=-1000y(t)+100.t^{2}+\dfrac{1}{5}$. Solution exacte : $y(t)=\dfrac{1}{10}.t^{2}+\dfrac{1}{5}.t+\dfrac{1000}{3}$, $y(0)=\dfrac{1}{3}$.\\
Lorsque le temps devient très grand, Euler explicite oscille et s'éloigne complètement de la solution exacte.

\subsubsection{Euler amélioré}

Euler amélioré utilise la méthode du point milieu : $$y(t_{n+1})=y(t_{n})+\int_{t_{n}}^{t_{n+1}} f(t,y(t))dt=y(t_{n})+f(t_{n}+\dfrac{h}{2},y(t_{n}+\dfrac{h}{2}))*(t_{n+1}-t_{n})+truc$$ On approche $y(t_{n}+\dfrac{h}{2})$ par $y_{n}+\dfrac{h}{2}y'(t_{n})$, soit par $y_{n}+\dfrac{h}{2}f(t_{n},y(t_{n}))$.\\
On pose donc :\\
$y_{n+1}=y_{n}+hf(t_{n}+\dfrac{h}{2},y_{n}+\dfrac{h}{2}f(t_{n},y_{n}))$ (Euler amélioré explicite-ordre 1)\\
ou $y_{n+1}=y_{n}+hf(t_{n}+\dfrac{h}{2},y_{n+1}-\dfrac{h}{2}f(t_{n+1},y_{n+1}))$ (Euler amélioré implicite-ordre 2-stable)

\begin{moyen}[exemple :]
Soit $f(t,y)=ay$. Par Euler amélioré :\\ $y_{n+1}=y_{n}+h(a(y_{n}+\dfrac{h}{2}ay_{n}))=y_{n}(1+ah+a^{2}\dfrac{h^{2}}{2})$ d'où $y_{n}=(1+ah+\dfrac{a^{2}.h^{2}}{2})^{n}$
\end{moyen}

\subsection{Compléments}

Les méthodes d'Euler sont des méthodes à un pas (ie $y_{n+1}$ est calculée à partir de $y_{n}$ et $t_{n}$).\\
Les shéma d'Euler sont stables, consistants, et d'ordre 1 pour euler explicite amélioré et implicite); ordre 2 pour euler amélioré implicite.

\subsubsection{Méthode consistante}

Le shéma général d'une méthode à un pas est, à partir d'une subdivision $x_{k+1}=x_{k}+h$ de l'intervalle : $y_{n+1}=y_{n}+h\Theta(x_{n},y_{n},h)$\\
La méthode sera dit consistante si la fonction $\Theta$ approche convenablement le véritable accroissement de la fonction cherchée, c'est à dire :
pour tout $y$ solution de (ED), $$\lim_{h\rightarrow 0}max_{n}\vert \dfrac{y(x_{n+1})-y(x_{n})}{h}-\Theta(x_{n},y(x_{n}),h) \vert=0$$

\subsubsection{Méthode stable}

La méthode sera dite stable si le cumul des erreurs d'arrondis ne fait pas exploser l'écart entre le shéma théorique et le shéma réel

\subsubsection{Ordre d'une méthode}

On dira qu'une méthode est d'ordre $p$ si $\vert \dfrac{y(x+h)-y(x)}{h}-\Theta(x,y(x),h)\vert=O(h^{p})$ (grand Tô)

\subsubsection{Théorèmes}

Théorème : si la méthode est stable et consistante, elle est convergente, c'est à dire :\\
$\lim_{h\rightarrow 0}(max_{n}\vert y_{n}-y(x_{n}) \vert)=0$ quelle que soit la valeur initiale $y_{0}$.\\
Critère 1 : si $\Theta(x,y,0)=f(x,y)$, alors la méthode est consistante.\\
Critère 2 : si $\Theta$ vérifie une condition de Lipschitz en $y$, uniforme par rapport à $x$ et à $h$, alors la méthode est stable.

\begin{pluslong}[Théorème]{(de Peano)}
Soient $f$ continue en $x$ et en $t$, sur $I\times \RR$, où $I$ intervalle fermé; on suppose de plus qu'il existe $t_{0}$ et $B$ une boule fermée dans $\RR^{n}$ de rayon $R$, $x_{0}\in B$\\
Alors $\exists$ solution $X$ définie sur $\left[ t_{0}-\frac{R}{M},t_{0}+\frac{R}{M} \right]$ où $M=sup_{I \times B}\vert f(t,x) \vert$.\\
\textbf{existence locale d'une solution}
\end{pluslong}

\begin{pluslong}[Théorème]{(de Cauchy-Lipschitz)} 
Soient $f:\left[ a,b\right] \times \RR \rightarrow \RR$, continue par rapport à $(x,y)\in \left[ a,b\right] \times \RR$ et lipschitzienne par rapport à $y$ (ie $\exists L>0$ indépendante de $x$, telle que $\vert f(x,y_{1})-f(x,y_{2})\vert \leq L \vert y_{1}-y_{2}\vert$ ,$forallx,y_{1},y_{2}$).\\
Alors le problème de Cauchy (E):$y'=f(x,y(x))$, $y(a)=\alpha$, admet une solution $y(x)$ unique sur $\left[ a,b\right] $.\\
\textbf{existence et unicité d'une solution maximale}
\end{pluslong}

\subsubsection{Calcul d'erreur-Ordre dans la méthode d'Euler}

\begin{court}
Si on se place au niveau secondaire :\\
Soit $(E):y'=ay,y(0)=1$. Par Euler explicite : $y_{n+1}=(1+ah)^{n+1}$. Solution exacte : $y(t)=e^{at}$.\\
erreur absolue \textit{e} pour $t$ fixé, $h=\dfrac{t}{n}$, \textit{e}$=\vert y(t)-y_{n} \vert$ $=\vert (1+\dfrac{at}{n})^{n}-e^{at} \vert$ $=\vert e^{n.ln(1+\dfrac{at}{n})}-e^{at} \vert$ $=\vert e^{n.\frac{at}{n}+O(\frac{1}{n^{2})}}-e^{at} \vert$ $=\vert e^{at}.(e^{n.O(\frac{1}{n^{2}})}-1) \vert$ $=e^{at}.\vert e^{O(\frac{1}{n})}-1 \vert$ $=e^{at}.\vert 1+O(\frac{1}{n})-1 \vert$ $=e^{at}.O(\frac{1}{n})$ $=O(\frac{1}{n})$\\
erreur relative $\mathcal{E}$ $=\vert \dfrac{y(t)-y_{n}}{y_{n}} \vert=O(\dfrac{1}{n})$ au moins d'ordre 1.\\ En travaillant plus précisément (par des équivalences par exemple), on montre qu'elle est exactement d'ordre 1.\\
Pour Euler implicite : idem (même calcul, même ordre).\\
Tout ce qui a été utilisé dans cette méthode est faisable niveau terminale : les DL utilisés peuvent être des petits exercices demandées auparavant.
\end{court}

Si on se place dans le programme complémentaire (utilisation des DL) :\\
On a : $\dfrac{y(x+h)-y(x)}{h}=y'(x+Oh)=y'(x)+\dfrac{h}{2}y''(x+\varepsilon h)$ et $\Theta(x,y,h)=f(x,y)=y'(x)$, donc l'ordre est 1. L'erreur est en $O(h)$.

\textsc{Méthode d'Euler 1}\\

Programme pour la TI en langue anglaise : résolution graphique d'une équation différentielle par la méthode d'Euler (pris dans Initiation Voyage 200, P.7). Les "@\textbf{...}" sont des commentaires. Pour le mode français : remplacer Newlist par NouvList, et Zoomdata par ZoomDonn. Le programme qui suit est la méthode d'euler explicite, pour la fonction $f(x)=x+1$, c'est à dire pour l'équation différentielle $y'=y+1$, avec un pas de $0.1$, et pour 40 points.

\begin{moyen}
euler()\\
Prgm\\
Local f,x0,y0,p,n,lx,ly,i\\
"x+1"$\rightarrow$ f:"0"$\rightarrow$ x0:"0"$\rightarrow$ y0:"0.1"$\rightarrow$ p\\
"40"$\rightarrow$ n\\
@ \textbf{la ligne précédente sert à mettre des valeurs par défaut pour le programme}\\
Dialog\\
Title "Entrée des données"\\
Request "f(x)",f\\
Request "x0 ",x0\\
Request "y0 ",y0\\
Request "Pas ",p\\
Request "Pts ",n\\
Endlog\\
expr(f)$\rightarrow$ f: expr(x0)$\rightarrow$ x0 : expr(y0)$\rightarrow$ y0\\
expr(p)$\rightarrow$ p: expr(n)$\rightarrow$ n\\
Newlist(n)$\rightarrow$ lx: Newlist(n)$\rightarrow$ ly\\
For i,1,n\\
x0 $\rightarrow$ lx[i]:y0 $\rightarrow$ ly[i]\\
y0+p*(f$\vert$ x=x0)$\rightarrow$ y0:x0+p$\rightarrow$ x0\\
EndFor\\
lx $\rightarrow$ liste1:ly $\rightarrow$ liste2\\
Newplot 1,2,liste1,liste2,,,,3\\
Zoomdata @ \textbf{pour zoomer sur les données. Pas nécessaire, et même parfois troublant}\\
EndPrgm
\end{moyen}

On trouve dans les manuels de TI une comparaison entre Euler et Runge-Kutta : P.11-19 pour le manuel de la TI 89, p.686 pour le manuel TI 89-Voyage 200.

\textsc{Méthode d'Euler 2}\\

L'exemple qui suit est la méthode d'euler explicite, pour la fonction $f(t)=a(t)y+b(t)$. On peut tester par exemple $a(t)=-t$ et $b(t)=1$, ie équation différentielle $y'=-y+1$, avec un pas de $0.1$, et pour 40 points.

\begin{moyen}
euler2()\\
Prgm\\
Local a,b,x0,y0,p,n,lx,ly,i\\
Dialog\\
Title "Entrée des données"\\
Request "a(x)",a\\
Request "b(x)",b\\
Request "x0 ",x0\\
Request "y0 ",y0\\
Request "Pas ",p\\
Request "Pts ",n\\
EndDlog\\
expr(a)$\rightarrow$ a: expr(b)$\rightarrow$ b : expr(x0)$\rightarrow$ x0 : expr(y0)$\rightarrow$ y0\\
expr(p)$\rightarrow$ p: expr(n)$\rightarrow$ n\\
Newlist(n)$\rightarrow$ lx: Newlist(n)$\rightarrow$ ly\\
For i,1,n\\
x0 $\rightarrow$ lx[i]:y0 $\rightarrow$ ly[i]\\
(y0+p*(b$\vert$ x=x0))/(1-p*(a$\vert$x=x0)$\rightarrow$ y0
x0+p$\rightarrow$ x0\\
EndFor\\
lx $\rightarrow$ liste3:ly $\rightarrow$ liste4\\
Newplot 2,2,liste3,liste4,,,,3\\ @ \textbf{qques petits chgts pour ne pas écraser le travail réalisé avec Euler 1}\\
Zoomdata\\
EndPrgm
\end{moyen}

\textbf{remarque} : s'il y a un souci avec un programme, vérifier que la TI est dans la bonne langue, et que les liste liste1 et liste2 (ou liste3, etc.) sont bien créés (on le vérifie manuellement dans Apps/Stats List Editor); le cas échéant créer ces listes.

\end{document}