\documentclass[10pt]{article}
%\usepackage{graphicx}\usepackage{amssymb}
\usepackage[ansinew]{inputenc}
%\pagestyle{empty}\font\smc=cmcsc10\font\srm=cmr8\font\hrm=cmr10\font\brm=cmr12\font\Brm=cmr14
\textwidth = 15cm\textheight = 22.8cm\hoffset = -1.1cm\voffset = -2cm\parindent = .5cm\def\N{\mathbf{N}}
\def\exo#1{\par\vskip0.4cm {\bf Exercice #1.}\hskip1em}

\begin{document}
Université Paris-Sud \hfill 2007

S2-IFIPS

\vskip1cm


\centerline{\bf TRAVAUX PRATIQUES EN MATLAB, deuxième séance}

\vskip1cm

\section{Rappel}

En utilisant le bouton en haut de la fenêtre, modifier le chemin d'accès à vos fichiers.

\section{Au travail}

\exo1
\begin{enumerate}
\item Tracer un cercle $\mathcal{C}$ dont le centre est le point $M(-2,1)$ et le rayon est $r=3$. Indiquer sur la figure le centre du cercle par le symbole $+$. Veiller à ce que l'unité soit la même sur les deux axes (\texttt{axis equal}).
\item Tracer sur la même figure le plus petit carré contenant le cercle $\mathcal{C}$ dont les côtés sont parallèles aux axes.
\item Dans un fichier appelé \texttt{tracecercle.m}, écrire une fonction \texttt{tracecercle} qui prend comme arguments les réels $a$, $b$, $r$ et le caractère $c$ et trace le cercle de centre $M(a,b)$ et de rayon $r$ de couleur $c$. On veillera à insérer un commentaire qui explique ce que fait la fonction.
\item Utiliser la fonction \texttt{tracecercle} pour tracer les anneaux olympiques.
\end{enumerate}

\exo2
On étudie les suites $(u_{n})_{n\in\N}$ définies par une condition initiale $u_{0}\in\N$ et la relation de récurrence
\begin{eqnarray*}
\left\{\begin{array}{cc}
u_{n+1}=\frac{u_{n}}{2}&\textrm{si } u_{n} \textrm{ est pair,}\\
u_{n+1}=3u_{n}+1&\textrm{sinon.}
\end{array}\right.
\end{eqnarray*}
\begin{enumerate}
\item Calculer les 10 premiers termes de la suite quand $u_{0}=3$ (\texttt{if}, \texttt{mod}). Recommencer avec $u_{0}=6$. Que constatez-vous ?
\item Ecrire une fonction qui prend comme arguments deux entiers $a$ et $N$ et retourne le vecteur ligne $U=(u_{0},\cdots,u_{N})$ des valeurs de la suite de condition initiale $u_{0}=a$. Faire varier $u_{0}$.
\item Ecrire une fonction qui prend comme argument un entier $a$, calcule les valeurs de la suite de condition initiale $u_0 =a$ tant que $u_n \not=1$ (\texttt{while}, on limitera à 1000 le nombre d'itérations).
\end{enumerate}

\exo3
On considère une population de bactéries, décrite par le nombre $e_n$ d'individus à la $n$-ème génération. Soit $E$ le nombre maximum de bactéries que le milieu peut supporter. On ne s'intéresse qu'à la fraction $f_n =e_n /E$. L'évolution de la population est décrite par la loi $f_{n+1}=rf_n (1-f_n )$, où $r$ est un réel entre 0 et 4.

\begin{enumerate}
\item On choisit $r=2.8$, $f_1 =0.3$. Calculer le vecteur $X$ des 50 premiers termes de la suite (pour réduire le temps de calcul, on pensera à initialiser le vecteur $X$ par la commande \texttt{f=zeros(1,50)}). Représenter graphiquement $f_n$ en fonction de $n$.
\item On veut faire varier les paramètres $r$, $f_1$ et le nombre $N$ d'itérés à calculer. Dans un fichier \texttt{population.m}, écrire une fonction \texttt{f=population(r,N,f1)} qui reçoit en arguments un réel $r$, un entier $N$ et un réel $f1$ et retourne le vecteur $X$ des $N$ premiers termes de la suite récurrente commençant par $f1$ et de paramètre $r$. Représenter graphiquement $f_n$ en fonction de $n$ dans les cas suivants :
\par\noindent
$\bullet$ cas a : $r=3.5$, $f1=0.3$,
\par\noindent
$\bullet$ cas b : $r=3.7$, $f1=0.2$.\par
 Préciser, dans chaque cas, si la suite est périodique ou chaotique.
\item En utilisant la fonction \texttt{hist}, tracer l'histogramme des valeurs de la suite, dans chaque cas. Essayer de grandes valeurs de $N$. Augme,ter le nombre de classes de l'histogramme. Comment se caractérise chacun des régimes ?
\item On veut représenter la suite $(f_n )$ sous la forme d'un diagramme en ``toile''. On note $g(x)=rx(1-x)$. On choisit $r=2.8$. Tracer dans une même figure la courbe représentative de $g$, la droite $y=x$ ainsi que la ligne brisée qui joint les points $(f_1 ,0)$, $(f_1 ,f_2 )$, $(f_2 ,f_2 )$, ..., $(f_{12},f_{12})$, lorsque $f_1 =0.1$. {\em Indication} : si $z$ est un vecteur à $N$ composantes, essayer l'instruction \texttt{v(1:2:2*N)=w}.
On choisira la fenêtre $0\leq x\leq 1$, $0\leq y\leq 1$. Faire la même représentation graphique pour le cas a puis le cas b. Si besoin est, on augmentera le nombre d'itérations que l'on représente.
\item A vous de jouer ! Déterminer d'autres valeurs de $r$ pour lesquelles on constate des oscillations périodiques (choisir des valeurs de $r$ dans $]3,3.6[$). Déterminer d'autres valeurs de $r$ pour lesquelles on constate un comportement chaotique. Que pensez-vous de l'influence de la condition initiale $f1$ ?
\end{enumerate}

\exo4
On considère l'équation différentielle $(\mathcal{E})$ : $y'(t)=\frac{1}{10}y(t)+\sin(t)$.
\begin{enumerate}
\item Sur papier, écrire la fonction $F$ de deux variables telle que l'équation $(\mathcal{E})$ s'écrive sous la forme $y'=F(t,y)$. Dans un fichier \texttt{F.m}, programmer cette fonction.
\item Si, dans la fenêtre de commande, on tape \texttt{[t y]=ode45(@F,[t0 tfin],y0)}, Matlab retourne un vecteur $t$, subdivision de l'intervalle $[\texttt{t0},\texttt{tfin}]$, et un vecteur $y$ contenant les valeurs aux points de $t$ d'une solution approchée de $(\mathcal{E})$ sur l'intervalle $[\texttt{t0},\texttt{tfin}]$ de condition initiale $y(\texttt{t0})=\texttt{y0}$. Tracer sur une même figure la solution approchée $y$ et la solution exacte $z(t)=\exp(\frac{t}{10})-\frac{10}{101}(10\cos t + \sin t)$ sur l'intervalle $[0,15]$ avec condition initiale $y(0)=\frac{1}{101}$. %Utiliser la loupe sur la figure pour comparer les deux courbes, notamment au voisinage des maxima et des minima.
\item Obtenir de Matlab la valeur de la solution approchée en $t=2\pi$. \texttt{(deval)}.
\end{enumerate}

\exo5
On considère le système différentiel $(\mathcal{S})$ : $\left\{\begin{array}{ccc}
x'&=&x-10y  \\
y'&=&10x+y  
\end{array}\right.$.
\begin{enumerate}
\item Sur papier, écrire la fonction $G$ à valeurs dans $\mathbf{R}^2$ telle que le système $(\mathcal{S})$ s'écrive sous la forme $v'=G(t,v)$. Dans un fichier \texttt{G.m}, programmer cette fonction, de sorte que ses arguments soient  un nombre $t$ et un vecteur ligne $v$, et qu'elle retourne un vecteur colonne.
% function vprime=G(t,v)
% x=v(1);
% y=v(2);
% vprime=[x-10*y;10*x+y];
\item Tracer sur une même figure la solution approchée $v=[x~y]$ (courbe paramétrée) sur l'intervalle $[-2,2]$ avec condition initiale $v(0)=[1~0]$, et la solution exacte $[e^{t}\cos(10t)~e^{t}\sin(10t)]$ (\texttt{ode45}, même syntaxe). 
% [t v]=ode45(@G,[-2 2],[1 0]);
% plot(v(:,1),v(:,2),'r')
% hold on
% plot(exp(t).*cos(10*t),exp(t).*sin(10*t),'b')
% hold off
\item Soit $n$ un entier. Programmer une fonction \texttt{portrait.m} qui trace les solutions approchées de $(\mathcal{S})$ sur l'intervalle $[-2,2]$ ayant pour conditions initiales $n$ points régulièrement espacés sur le segment reliant l'origine à $[0~1]$.
% function z=portrait(n)
% for i=1:n
% [t v]=ode45(@G,[-2 2],[i/n 0]);
% plot(v(:,1),v(:,2),'r')
% hold on
% end
% hold off
\item Remplacer $(\mathcal{S})$ par $(\mathcal{S}_{\epsilon})$ : $\left\{\begin{array}{ccc}
x'&=&x-10y +\epsilon\cos(t) \\
y'&=&10x+y  +\epsilon\sin(t)
\end{array}\right.$.

\end{enumerate}

%\section{Evaluations}
%On ne sort pas sans avoir rempli les questionnaires d'évaluation du S1. Lancer un navigateur (icône sur le bureau) et aller à

%\texttt{http://wims.u-psud.fr/}

\end{document}