\documentclass[11 pt,a4]{article}
 
\usepackage[utf8]{inputenc}
\usepackage[francais]{babel}
\usepackage{mathptmx,amsmath,amsfonts,a4,graphicx,upquote,bbold,xcolor}
%\usepackage[urlcolor=blue,citecolor=blue,colorlinks=true]{hyperref}
\usepackage[colorlinks=false,hidelinks=true]{hyperref}
\usepackage[symbol]{footmisc}

   \voffset=-1in
   \hoffset=-1in
   \topmargin=1.5cm
   \headheight=0cm
   \headsep=0cm
   \setlength{\paperheight}{29.7cm}%
   \setlength{\paperwidth}{21cm}%
   \setlength{\oddsidemargin}{2.5cm}%
   \setlength{\evensidemargin}{2.5cm}%
   \setlength{\marginparsep}{0cm}%
   \setlength{\marginparwidth}{0cm}%
   \setlength{\footskip}{1cm}% 
   \setlength{\textheight}{25cm}%
   \setlength{\textwidth}{16cm}%
   \setlength{\parskip}{0.82ex}%

\newcommand{\C}{\mathbb{C}}
\newcommand{\R}{\mathbb{R}}
\renewcommand{\thefootnote}{\arabic{footnote}}
\begin{document}
\begin{center}
\large \bf MT94/P24/TD1 - Approximation d'une dérivée et pas complexe
\end{center}
%
\begin{figure}[h]
\centering\includegraphics[width=0.7\linewidth]{graph}
\caption{Graphe d'une fonction $f:\R\rightarrow \R$ (en gras) et de la partie réelle de son extension complexe \label{fig:F}}
\end{figure}
%
\section{Approximation basée sur des différences finies}
%
On considère la fonction $x\rightarrow f(x)$ calculée par la fonction Scilab suivante:
\begin{verbatim}
function y7 = f(x)
   y1 = exp(x); 
   y2 = cos(x);
   y3 = sin(x);
   y5 = y2.^3;
   y6 = y3.^3;
   y7 = y1./(y5+y6);
end
\end{verbatim}

\begin{enumerate}
\item Tracer le graphe de $f$ sur $[-\pi/5,\pi/2]$ avec Scilab .
\item  Vérifier que  $f(x)=\frac{\exp(x)}{\cos^3 x+\sin^3 x}\cdot$, puis calculer sa dérivée "à la main" ou en utilisant Wolfram Alpha (voir \cite{alpha}).
\item On considère une approximation de la dérivée de $f$ pour $x_0\in\R$ par la fonction $D_1:[-\pi/5,\pi/2]\times \R\rightarrow \R$ définie par
$$
D_1(x_0,h)=\frac{f(x_0+h)-f(x_0)}{h}\cdot
$$
Soit $x_0=\pi/4$, écrire un programme Scilab permettant de vérifier que :
\begin{enumerate}
\item pour $h$ suffisamment petit (mais pas trop), $D_1(x_0,h)$ est une approximation d'ordre 1 de $f'(x_0)$, c'est à dire que $f'(x_0)-D_1(x_0,h)=O(h)$ (un infiniment petit d'ordre 1). Pour cela on pourra tracer le graphe de l'erreur relative
$$
E_1(h)=\left \vert \frac{f'(x_0)-D_1(x_0,h)}{f'(x_0)} \right\vert
$$
 pour des valeurs entre  $10^ {-20}$ et $10^{-1}$. L'utilisation de l'échelle logarithmique est recommandée (utiliser la propriété \verb1log_flags1 du système d'axes renvoyé par \verb1gca()1).
\item il existe une valeur optimale $h^*$ telle que 
$$
\forall h\in\R,\;E_1(h^*)  \leq E_1(h),
$$
pour laquelle la précision relative maximale (donnée par \verb1%eps1) n'est pas atteinte par $E_1(h^*) $,
\item si $h$ est trop petit la précision relative obtenue est à peu près aussi mauvaise que pour un $h$ trop grand.
\end{enumerate}
\item Refaire\footnote[1]{\label{note1}La totalité de cette question peut être traitée en autonomie après le TD.} l'analyse de la question précédente en considérant les deux premières formules centrées (voir \cite{wiki1}) et commenter les résultats.
\end{enumerate}
%
\section{Méthode du pas complexe}
%
On considère $F:\C\rightarrow\C$ l'extension de $f$ au plan complexe définie par
\begin{equation}
F(z) = \frac{\exp(z)}{\cos^3 z+\sin^3 z}\cdot
\label{eq:F}
\end{equation}
%
\begin{enumerate}
\item Vérifier que la fonction Scilab calculant $f(x)$ pour $x$ réel accepte sans problème un argument d'entrée complexe.
\item Représenter\footnotemark[1] dans l'espace le graphe de la fonction $(x,y)\rightarrow \operatorname{Re}(F(x+iy))$ définie par l'algorithme ou par \eqref{eq:F} sur $[-\pi/5,\pi/2]\times[-1/2,1/2]$ ainsi que la courbe $x\rightarrow (x,0,f(x))$ pour $x\in[-\pi/5,\pi/2]$ (voir la figure \ref{fig:F} pour le type de représentation demandé). Comment proposeriez-vous de représenter l'argument sur le même graphe ? Proposez d'autres modes de représentation.

\item  On considère l'approximation de la dérivée de $f$ pour $x_0\in\R$ par la fonction $D_c:[-\pi/5,\pi/2]\times \R\rightarrow \R$ définie par
$$
D_c(x_0,h)=\frac{\operatorname{Im} (F(x_0+ih))}{h}\cdot
$$
et
$$
E_c(h)=\left \vert \frac{f'(x_0)-D_c(x_0,h)}{f'(x_0)} \right\vert
$$
Soit $x_0=\pi/4$, écrire un programme Scilab permettant de vérifier que :
\begin{enumerate}
\item pour $h$ suffisamment petit (mais pas trop), $D_c(x_0,h)$ est une approximation d'ordre 2 de $f'(x_0)$, c'est à dire que $f'(x_0,h)-D_c(x_0,h)=O(h^2)$ (un infiniment petit d'ordre 2).
\item il existe une valeur $\hat h$ telle que 
$$
\forall h < \hat h,\;E_c(h) \approx \delta
$$
où $\delta$ est d'une magnitude (puissance de 10) du même ordre que celui de la précision relative de Scilab.
\end{enumerate}
\item Calculer et représenter l'approximation de la dérivée de $f$ sur tout son domaine de définition (le plus simplement possible).
\end{enumerate}
%
\begin{thebibliography}{100}
\bibitem{Martins2003} J. Martins, P. Sturdza, J. Alonso,  The complex-step derivative approximation,  {\em ACM Transactions on Mathematical Software, Association for Computing Machinery}, 2003, 29, pp.245 -262, \url{https://hal.archives-ouvertes.fr/hal-01483287}
\bibitem{wiki1} Finite difference coefficient, \url{https://en.wikipedia.org/wiki/Finite_difference_coefficient}
\bibitem{alpha} Wolfram Alpha, \url{https://www.wolframalpha.com}
\end{thebibliography}

%$$
%\sim\sim\sim\sim\sim\sim\sim\sim\sim\sim\sim\sim\sim\sim\sim\sim\sim\sim\sim\sim\sim\sim\sim
%$$

\end{document}

