% !TEX encoding = UTF-8 Unicode
% J.Roussel
% Ce document regroupe les codes TIKZ des figures utilisées pour le cours "traitement numérique des équations différentielles" situé à la page http://femto-physique.fr/analyse_numerique/numerique_C1.php
\documentclass[11pt]{article}
\input{styles_an}
\begin{document}
\title{Figures TIKZ du cours "traitement numérique des équations différentielles"}
% #############################################################################################################
%##### Solution numérique de l'équation v'+v/tau=vlim/tau avec v(0)=0. Comparaison avec la solution exacte ####
% #############################################################################################################
% Méthode d'Euler avec un pas h=0,2
\begin{tikzpicture}[scale=1]
\def \title{Vitesse de chute libre};%Titre
\def \xLabel {$t$}; % legende sur x
\def \yLabel {$v(t)$}; % legende sur y
\def \xMin{0};
\def \xMax{8};
\def \yMin{0};
\def \yMax{13.3};
\def \stepGrid{2cm}; % pas de la grille
\def \titleWidth {10cm}; % largeur de la vignette de titre
\begin{axis}[
xlabel={\xLabel},
ylabel={\yLabel},
grid=major,
axis x line=bottom,
axis y line=left,
xtick={1},
xticklabels={$\tau$},
ytick={10},
yticklabels={$v_{\infty}$},
xmin=\xMin,
xmax=\xMax,
ymin=\yMin,
ymax=\yMax,]
\addplot+[mark=o,only marks] table{simu/euler02.txt};
\addlegendentry{\small Euler : $h=0,2$};
\addplot+[mark=none,domain=\xMin:\xMax]{10*(1-exp(-x))};
\addlegendentry{solution exacte};
\end{axis}
\end{tikzpicture}
% --- Méthode d'Euler avec un pas h=0,02 (1 point sur 10 est représenté) ----
\begin{tikzpicture}[scale=1]
\def \title{Vitesse de chute libre};%Titre
\def \xLabel {$t$}; % legende sur x
\def \yLabel {$v(t)$}; % legende sur y
\def \xMin{0};
\def \xMax{8};
\def \yMin{0};
\def \yMax{13.3};
\def \stepGrid{2cm}; % pas de la grille
\def \titleWidth {10cm}; % largeur de la vignette de titre
\begin{axis}[
xlabel={\xLabel},
ylabel={\yLabel},
grid=major,axis x line=bottom,
axis y line=left,
xtick={1},
xticklabels={$\tau$},
ytick={10},yticklabels={$v_{\infty}$},
xmin=\xMin,
xmax=\xMax,
ymin=\yMin,
ymax=\yMax,]
\addplot+[mark=o,only marks,mark repeat =10] table{simu/euler002.txt};
\addlegendentry{\small Euler : $h=0,02$};
\addplot+[mark=none,domain=\xMin:\xMax]{10*(1-exp(-x))};
\addlegendentry{solution exacte};
\end{axis}
\end{tikzpicture}
% --- Instabilité de la méthode d'Euler lorsque le pas est trop grand ---
\begin{tikzpicture}[scale=1]
\def \xLabel {$t$}; % legende sur x
\def \yLabel {$v(t)$}; % legende sur y
\def \xMin{0};
\def \xMax{8};
\def \yMin{0};
\def \yMax{20};
\begin{axis}[xlabel={\xLabel},ylabel={\yLabel},grid=major,axis x line=bottom,axis y line=left,xtick={1},xticklabels={$\tau$},ytick={10},yticklabels={$v_{\infty}$},xmin=\xMin,xmax=\xMax,ymin=\yMin,ymax=\yMax,]
\addplot+[dashed] table{simu/euler2.txt};
\addlegendentry{\small Euler : $h=2$};
\addplot+[mark=none, domain=\xMin:\xMax]{10*(1-exp(-x))};
\addlegendentry{solution exacte};
\end{axis}
\end{tikzpicture}
% --- Méthode RK4 avec un pas h=2
\begin{tikzpicture}
\def \title{Vitesse de chute libre};%Titre
\def \xLabel {$t$}; % legende sur x
\def \yLabel {$v(t)$}; % legende sur y
\def \xMin{0};
\def \xMax{8};
\def \yMin{0};
\def \yMax{13.3};
\def \stepGrid{2cm}; % pas de la grille
\def \titleWidth {10cm}; % largeur de la vignette de titre
\begin{axis}[xlabel={\xLabel},ylabel={\yLabel},grid=major,axis x line=bottom,axis y line=left,xtick={1},xticklabels={$\tau$},ytick={10},yticklabels={$v_{\infty}$},xmin=\xMin,xmax=\xMax,ymin=\yMin,ymax=\yMax,]
\addplot+[mark=o,only marks] table{simu/rk4-2.txt};
\addlegendentry{\small RK4 : $h=2$};
\addplot+[mark=none, domain=\xMin:\xMax]{10*(1-exp(-x))};
\addlegendentry{\small solution exacte};
\end{axis}
\end{tikzpicture}
% --- Méthode RK4 avec un pas h=0,2 ---
\begin{tikzpicture}
\def \title{Vitesse de chute libre};%Titre
\def \xLabel {$t$}; % legende sur x
\def \yLabel {$v(t)$}; % legende sur y
\def \xMin{0};
\def \xMax{8};
\def \yMin{0};
\def \yMax{13.3};
\def \stepGrid{2cm}; % pas de la grille
\def \titleWidth {10cm}; % largeur de la vignette de titre
\begin{axis}[xlabel={\xLabel},ylabel={\yLabel},grid=major,axis x line=bottom,axis y line=left,xtick={1},xticklabels={$\tau$},ytick={10},yticklabels={$v_{\infty}$},xmin=\xMin,xmax=\xMax,ymin=\yMin,ymax=\yMax,]
\addplot+[mark=o,only marks] table{simu/rk4-02.txt};
\addlegendentry{\small RK4 : $h=0,2$};
\addplot+[mark=none,domain=\xMin:\xMax]{10*(1-exp(-x))};
\addlegendentry{\small solution exacte};
\end{axis}
\end{tikzpicture}
%--- Evolution de l'erreur avec le nombre de pas N en échelle Log-Log, pour la méthode d'Euler et la méthode RK4. Le calcul est effectué jusqu'à T=2 en simple précision pour mettre en évidence les erreurs d'arrondi.
\begin{tikzpicture}
\def \xLabel {$N$}; % legende sur x
\def \yLabel {$\varepsilon_{\text{T}}$}; % legende sur y
\def \xMin{0};
\def \xMax{6};
\def \yMin{-8};
\def \yMax{0.2};
\begin{axis}[xlabel={\xLabel},ylabel={\yLabel},grid=major,axis x line=bottom,axis y line=left,xmin=\xMin,xmax=\xMax,ymin=\yMin,ymax=\yMax,xtick=\empty,extra x ticks={1,...,5},extra x tick labels={10,$10^{2}$,$10^{3}$,$10^{4}$,$10^{5}$},ytick=\empty,extra y ticks={0,-3,-6},extra y tick labels={1,$10^{-3}$,$10^{-6}$}]
\addplot table{simu/euler-erreur2s.txt};
\addlegendentry{\small Euler};
\addplot table{simu/rk4-erreur2s.txt};
\addlegendentry{\small RK4};
\end{axis}
\end{tikzpicture}
%--- Trajectoire d'un astre autour du Soleil obtenue numériquement pour une durée 1,95 ans. Conditions initiales : x(0)=0,5ua, y(0)=0, y'(0)=11,5ua et x'(0)=0. Nombre de points N=158 (un point sur quatre est représenté).
\begin{tikzpicture}
\def \xLabel {$x$ (u.a)}; % legende sur x
\def \yLabel {$y$ (u.a)}; % legende sur y
\def \xMin{-3};
\def \xMax{1};
\def \yMin{-1.5};
\def \yMax{1.5};
\begin{axis}[xlabel={\xLabel},ylabel={\yLabel},xmin=\xMin,xmax=\xMax,ymin=\yMin,ymax=\yMax,legend style={at={(1.03,1)},anchor=north west}, legend plot pos=right,extra y ticks={0}, extra y tick labels={}, extra y tick style={grid=major},extra x ticks={0}, extra x tick labels={}, extra x tick style={grid=major}]
\addplot+[mark size=0.2mm,mark repeat =4]table{simu/richardson.txt};
\addlegendentry{\small Euler Richardson};
\addplot+[mark size=0.2mm,mark repeat =4] table{simu/kepler-rk4.txt};
\addlegendentry{\small RK4};
\draw[color=black,ball color=yellow!90!black] (axis cs:0,0) circle(6pt);
\end{axis}
\end{tikzpicture}
\end{document}