\def\NomChapitre{3}
\def\Type{DL}
\LeTitre{\NomChapitre}{Pour le mardi 6 mai 2014}

\begin{exo}%[Sujet 0 banque PT]
On veut stocker et manipuler $N=100$ flottants simples précision ($32$ bits)
dans un micro-contrôleur. On suppose
qu'il faut prévoir le double de la mémoire nécessaire pour stocker les
données, pour pouvoir les manipuler.

La gamme de micro-contrôleurs utilisés possèdent une mémoire interne à choisir parmi les valeurs suivantes : $512$, $1024$,
$2048$, $4096$, $8192$ octets.

Déterminer la quantité de mémoire nécessaire au traitement numérique du signal
et en déduire la taille de mémoire interne nécessaire du micro-contrôleur.
\end{exo}

\begin{exo}
On récupère un signal (une intensité) $u(t)$, en fonction du temps $t$.

Soit $T_e$ une période d'échantillonnage et $f_e$ une fréquence
d'échantillonnage. On stocke dans une liste \texttt{Ue} de taille $N$ les
valeurs $u(nT_e)$ pour $n\in \llbracket 0,N-1\rrbracket$.

Le signal \texttt{Ue} sera filtré en un signal $U_f(n)$ stocké dans une nouvelle
liste \texttt{Uf}.

On définit la transformée de Fourier discrète d'une liste $L=(L(0),\dots,L(N-1))$ par la formule :
\[TL(k)=\sum_{n=0}^{N-1} L(n) e^{-2\pi j k \frac n N}
=\sum_{n=0}^{N-1} L(n) \cos\left(-2\pi k \frac n N \right)+j
\sum_{n=0}^{N-1} L(n) \sin\left(-2\pi k \frac n N \right)\]
où $0\leq k <N$. Ici, on utilise les notations de la physique : $j^2=-1$.

Par exemple, pour la liste $L=U_f$, on aurait :
\[TU_f(k)=\sum_{n=0}^{N-1} U_f(n) e^{-2\pi j k \frac n N}
=\sum_{n=0}^{N-1} U_f(n) \cos\left(-2\pi k \frac n N \right)+j
\sum_{n=0}^{N-1} U_f(n) \sin\left(-2\pi k \frac n N \right)\]

On supposera que la bibliothèque NumPy a été
préalablement chargée, avec le suffixe \texttt{np}.
\begin{enumerate}
\item Écrire une fonction \texttt{trans\_fourier\_freq(L,k)} retournant la
  partie réelle et la partie 
imaginaire de la transformée de Fourier d'une liste \texttt{L} de taille $N$ pour la
fréquence \texttt{k}. 
\item Écrire une fonction \texttt{module(a,b)} retournant le module du complexe $a + jb$.
\item Écrire une fonction \texttt{trans\_fourier(L)} retournant le module de la
  transformée de Fourier discrète sous la forme d’une liste de taille $N$
  contenant les modules des termes $TL (k)$
 en utilisant notamment des appels aux fonctions précédentes
 \texttt{trans\_fourier\_freq(L,k)} et 
\texttt{module(a,b)}.
\item Déterminer la complexité (on comptera le nombre d'appels à cosinus et
  sinus)  du calcul de la transformée de Fourier par la fonction
  \texttt{trans\_fourier(L)} en fonction de $N$. Que peut-on dire de ce type
  de complexités ?
\item La  liste des fréquences $f_k$ associées à chaque terme $TU_f (k)$ de la
  transformation de Fourier 
est stockée dans la liste \texttt{freq}. La définition de la liste
\texttt{freq} des fréquences est : 
\begin{itemiz}
\item Si $N$ est pair,
  $\left[0,\frac1{T_eN},\frac2{T_eN},\dots,\frac{N/2-1}{T_eN},-\frac{N/2-1}{T_eN},\dots,-\frac1{T_eN}\right]$.
\item Si $N$ est impair,
  $\left[0,\frac1{T_eN},\frac2{T_eN},\dots,\frac{(N-1)/2}{T_eN},-\frac{(N-1)/2}{T_eN},\dots,-\frac1{T_eN}\right]$.
\end{itemiz}
 Déterminer la liste des fréquences pour $N=11$ et $T_e=1/11$, puis
  $N=10$ et $T_e=1/5$.
\item Écrire une fonction \texttt{freq\_fourier(U,Te)} qui renvoie la liste
  des fréquences \texttt{freq}. 
\item Ecrire une fonction \texttt{freq\_corde(U)} retournant la fréquence où
  le module de la transformée de Fourier est maximal ; cette fréquence
  correspond à la fréquence cherchée (cf explications dans la correction). On
  supposera que le maximum est unique. On utilisera notamment les fonctions 
\texttt{freq\_fourier(U,Te)} et \texttt{trans\_fourier(U)} dans la fonction à
écrire. 
\end{enumerate}
\end{exo}

\begin{exo}
On mesure et on stocke toutes les $10$ secondes la valeur de la fréquence
déterminée à la question précédente.

L'ensemble de ces fréquences est stocké dans la liste
\texttt{liste\_freq\_corde}. \`A chaque mesure, la fréquence la plus ancienne
est effacée, et la plus récente entre en bout de liste.

On veut calculer la moyenne \texttt M des termes de la liste, après chaque
nouvelle mesure.

Écrire une fonction \texttt{moyenne\_optimisee(var1, var2,...)}, dont les
arguments sont à 
définir, qui détermine la nouvelle moyenne à partir de la nouvelle mesure, de
la mesure la plus ancienne, et
de la moyenne déterminée pour l’ensemble des mesures précédentes. Expliciter
en terme de nombre d’opérations 
pourquoi votre fonction est meilleure qu'un calcul classique de la moyenne.
\end{exo}

\begin{exo}
On se donne un tableau \texttt{resultat} de type \texttt{nd.array} et de
taille $N\times 2$. La première colonne contient des durées en jours et la
seconde des déplacements en mètres. Donner les commandes nécessaires pour
réaliser l'affichage de la 
figure suivante : 
\begin{figure}[!htb]
 \centering
\includegraphics[scale=.35]{sujet0.png}
 \caption{Résultats}\end{figure}
\end{exo}


%%% Local Variables:
%%% mode: latex
%%% TeX-PDF-mode: t
%%% TeX-master: DL3_2013
%%% End:
