\documentclass{pbsheet}

\TITRE{Feuille de TP n°1 -- Initiation à Matlab}
\FORMATION{Préparation à l'épreuve de modélisation 
 - Agrégation Externe de Mathématiques}
\ETABLISSEMENT{Université de l'Anonyme XXII}
\ANNEE{2004}
\MEL{agreg@labo.univ.fr}
\AUTEUR{A. Grégatif}
\WEB{http://www.labo.univ.fr/}
\DATE{\today}

\begin{document}

Ce TP porte sur les entrées et sorties, les fonctions et les outils
graphiques dont vous disposez sous Matlab.

\section{Entrées et sorties}

La commande \texttt{input} permet de demander à l'utilisateur Matlab d'entrer
les valeurs de variables à utiliser. La commande \texttt{pause} permet de
stopper l'exécution Matlab. Vous pouvez préciser le nombre de secondes de pose
ou revenir à Matlab en appuyant sur n'importe quelle touche. La commande
\texttt{save} permet de sauvegarder dans un fichier, dont le nom par défaut
est \texttt{matlab.mat}, le contenu de certaines variables dont vous souhaitez
garder une trace. Ce fichier peut être appelé par la commande \texttt{load}
qui restaure toutes les variables que vous avez sauvegardées.

\begin{lstlisting}[language=Matlab]{Créations et Sauvegardes sous Matlab}
n=input('Entrez la valeur de n : ');   % Affectez une valeur à n.
a=input('Precisez la valeur de a : '); % Affectez une valeur à a.
v=a.^[0:n]; A=toeplitz(v); d=det(A);  % Création de la matrice de Toeplitz A
save restoep n a A d; % Sauvegarde de n, a, A, d dans restoep.mat
clear                 % Efface toutes les variables de la session.
load restoep          % Restaure les variables de restoep.mat.
who                   % Vérification. 
\end{lstlisting}

\section{Fonctions}

Un ensemble de commandes Matlab peut être considéré comme une fonction. On
peut voir une fonction comme un sous-programme Matlab dont les paramètres
éventuels sont les arguments de la fonction et dont les résultats sont les
images de cette fonction. Beaucoup de fonctions Matlab, comme par exemple
\texttt{mean}, sont déjà écrites en Matlab et le code Matlab correspondant est
stocké dans un fichier dont le nom se termine par \texttt{.m}. Pour
\texttt{mean}, il s'agit de \texttt{mean.m}. Ajouter de nouvelles fonctions à
Matlab revient donc à écrire de nouveaux fichiers de ce type. Il est d'usage
d'appeler une fonction du même nom que le fichier correspondant.

\textbf{Simulation de lois discrètes.} Dans votre répertoire personnel, éditer
le fichier \texttt{probadis.m} suivant dont le code Matlab génère une
réalisation aléatoire d'une loi discrète à support fini.

\MFILE{probadis}

La commande Matlab \texttt{type} permet de lister le contenu d'un fichier.
Ainsi, \texttt{type probadis} vous montrera le code source Matlab de la
fonction \texttt{probadis}. Le commentaire ajouté à partir de la seconde ligne
constituera l'aide affiché lorsque l'utilisateur tapera \texttt{help
  probadis}. Finalement, la commande \texttt{what} liste les fichiers Matlab
du répertoire courant.

Voici une autre fonction de simulation de loi discrète, qui peut renvoyer une
matrice de réalisations.

\MFILE{rdiscr}

\begin{exo}[Loi binomiale]
  Créer un code Matlab permettant de générer un vecteur aléatoire $X$
  contenant $N$ réalisations i.i.d. de loi binomiale $\cB(n,p)$ où les valeurs
  $N,n\geq 1$ et $0<p<1$ sont affectées par l'utilisateur.  Pour $N$ assez
  grand, vérifier la LGN sur les moyennes empiriques successives de $X$. Voici
  un exemple de programme qui fait l'affaire, et donc la sortie graphique se
  trouve en page \pageref{fi:simbin}.
\end{exo}

\MFILE{simbin}

\begin{exo}
  Soit $(X_n)_{n\in\dN}$ une suite de variables aléatoires i.i.d. de loi
  exponentielle $\cE(\lambda)$ avec $\lambda >0$. Si $S_n=\sum_{k=1}^n X_k$,
  $N_0=0$ et pour tout $t> 0$, $N_t=\sum_{n=1}^\infty \rI_\BRA{S_n\leq t}$,
  $(N_t)_{t\geq0}$ est un processus de Poisson d'intensité $\lambda$. Montrer
  que, pour tout $t>0$, $N_t$ suit la loi de Poisson $\cP(\la t)$.  En déduire
  un code Matlab permettant de générer un vecteur aléatoire $Y$ contenant $N$
  réalisations i.i.d. de loi $\cP(\la)$ où les valeurs $N\geq 1$ et $\la>0$
  sont affectées par l'utilisateur. Pour $N$ assez grand, vérifier la LGN sur
  les moyennes empiriques successives de $Y$.
\end{exo}

\begin{exo}
  Pour $N$, $N_1$ et $n \geq 1$ avec $N_1,n \leq N$, la loi hypergéométrique
  $\cH(N,N_1,n)$ est donnée, pour tout $k \in \dN$ avec $0\leq k \leq n$, par
  $\dP(X=k)=C_{N_1}^kC_{N-N_1}^{n-k}/C_N^n$.  Créer un code Matlab permettant
  de générer un vecteur aléatoire $Z$ contenant $M$ réalisations i.i.d. de loi
  $\cH(N,N_1,n)$ où les valeurs $M, N \geq 1$ et $N_1,n\leq N$ sont affectées
  par l'utilisateur.
  \begin{enumerate}
  \item Si $N$ tend vers l'infini et le rapport $N_1/N$ tend vers $p$ avec
    $0<p<1$, montrer que $X$ converge en loi vers la loi Binomiale $\cB(n,p)$.
    Pour $M, N$ assez grand et $N_1=pN$ avec $0<p<1$, tracer l'histogramme de
    $Z$ et comparer le à la loi $\cB(n,p)$.
  \item Si $N$, $N_1$ et $n$ tendent vers l'infini et le produit $nN_1/N$ tend
    vers $\la>0$, montrer que $X$ converge en loi vers la loi de Poisson
    $\cP(\la)$.  Pour $M$, $N$ assez grand, $N_1=\la\sqrt{N}$ et $n=\sqrt{N}$,
    tracer l'histogramme de $Z$ et comparer le à la loi $\cP(\la)$.
  \end{enumerate}
\end{exo}

\section{Représentations graphiques} 

\begin{lstlisting}[language=Matlab]
 {Illustration de la LGN pour la loi exponentielle} 
  clear; n=1000; lambda=0.5; X=-log(rand(n,1))/lambda;
  figure;                         % Création d'une nouvelle fenêtre graphique.
  plot(cumsum(X)'./[1:length(X)],'b')  % Trace les moy. emp. successives de X.
  title('Loi des Grands Nombres')      % Titre de la figure.
  xlabel('Nombre de réalisations')     % Titre des abscisses.
  ylabel('Moyennes empiriques')        % Titre des ordonnées.
  hold  on                             % Garde la fenêtre graphique.
  plot(1/lambda*ones(n,1),'r--');      % Trace la limite théorique.
  legend('Empirique','Theorique');     % Légende.
\end{lstlisting} 

\begin{exo} 
  Ajouter à vos codes Matlab les représentations graphiques rencontrées
  ci-dessus.
\end{exo}

\FIG{simbin}{1.0}{htbp}{Sortie graphique du programme \ref{code:simbin}
  \pageref{code:simbin}.}
    
Voici une fonction Matlab qui permet de simuler la loi uniforme discrète finie
de façon rapide et simple.

\MFILE{rint}

\nocite{*}

\phantomsection % Nécessaire pour le PDF.
\addcontentsline{toc}{section}{Bibliographie}
\bibliographystyle{amsalpha}
\bibliography{xpl-fr}

\end{document}
