\documentclass[11pt]{article}
\usepackage[ansinew]{inputenc}
\usepackage[french]{babel}
\usepackage[pdftex]{graphicx}
\pagestyle{empty}
\textwidth=15truecm
\textheight=22.8truecm
\hoffset=-12mm
\voffset=-20mm
\baselineskip=12pt

\font\smc=cmcsc10
\def\ex#1{\vskip 1truecm\centerline{#1}\vskip 0.2truecm}
\def\ques#1{\vskip 0.4truecm
\noindent{\bf #1}\hskip 0.4truecm}

\begin{document}

\hrule
\vskip.3cm
NOM: \hskip10cm GROUPE:
\vskip.3cm
\hrule
\vskip.3cm

\noindent{Universit\'e Paris-Sud}\hfill  2008\par
\noindent{S2 IFIPS}\hfill Math2
\vskip.2cm

\centerline{\smc Contrôle continu de Mathématiques, 30 mai 2008}
\centerline{\smc  Question sur matlab}
\centerline{\sl  Documents et calculettes interdits}

\vskip.2cm

Veuillez indiquer votre nom, rédiger votre solution directement sur cette feuille et la rendre en même temps que votre copie, mais \textbf{séparément}.

\vskip0cm

\ques{1.}La suite d'instructions matlab \begin{verbatim}
x=0:pi/40:pi/4;
y=sin(x)/cos(x)
\end{verbatim}
donne le résultat suivant : \begin{verbatim}
y = 0.3839
\end{verbatim}

Ce n'est pas le résultat escompté. On s'attendait à un vecteur contenant 11 valeurs de la fonction {\em tangente}. Expliquer l'origine de l'erreur et écrire l'instruction correcte.

% Manque un point avant /. La commande mrdivide / désigne la division matricielle. Matlab retourne le réel $z$ qui minimise le vecteur $\sin(x)-z\cos(x)$ au sens des moindres carrés. La commande ./, division composante par composante, correspond à ce qu'on veut faire. L'instruction correcte est
%x=0:pi/40:pi/4;
%y=sin(x)./cos(x)


\vskip3cm

\ques{2.}La fonction ci-dessous calcule 8 termes de la suite $(u_n)$ définie par la condition initiale $u_1 =1/2$ et la relation de récurrence $u_{n+1}=u_n -u_n^2$, les affiche et les représente graphiquement.
\begin{verbatim}
function suite
u(1)=1/2
for i=2:8
    u(i)=u(i-1)-u(i-1)^2
end
plot(u)
\end{verbatim}
\vskip-5cm \hskip10cm\includegraphics[width=2in]{suite.pdf}

\vskip-2cm
Modifier cette fonction pour que
\begin{itemize}
  \item elle prenne comme argument la condition initiale et le nombre de termes de la suite à calculer et à représenter graphiquement ;
  \item elle n'affiche pas les valeurs numériques.
\end{itemize}  

% On change seulement les quatre premières lignes en
% function suite(x,N)
% u(1)=x;
% for i=2:N
%     u(i)=u(i-1)-u(i-1)^2;

\vfill\eject

\hrule
\vskip.3cm
NOM: \hskip10cm GROUPE:
\vskip.3cm
\hrule
\vskip.3cm

\noindent{Universit\'e Paris-Sud}\hfill  2007\par
\noindent{S2 IFIPS}\hfill Math2
\vskip.2cm

\centerline{\smc Contrôle continu de Mathématiques, 30 mai 2008}
\centerline{\smc  Question sur matlab}
\centerline{\sl  Documents et calculettes interdits}

\vskip.2cm

Veuillez indiquer votre nom, rédiger votre solution directement sur cette feuille et la rendre en même temps que votre copie, mais \textbf{séparément}.

\vskip0cm

\ques{1.}La suite d'instructions matlab \begin{verbatim}
x=0:0.1:2;
y=2*x*x
\end{verbatim}
a provoqué le message d'erreur suivant : 
\begin{verbatim}
??? Error using ==> mtimes
Inner matrix dimensions must agree.
\end{verbatim}

Expliquer l'origine de l'erreur et écrire l'instruction correcte.

% Manque un point avant *. La commande mtimes * désigne la multiplication matricielle. Pour matlab, x et x sont des matrices lignes, elles n'ont pas les dimensions nécessaires pour les multiplier. La commande .*, produit composante par composante, correspond à ce qu'on veut faire. L'instruction correcte est
% x=0:0.1:2;
% y=2*x.*x
% On aurait pu écrire aussi
% y=2.*x.*x
% ou bien
% y=2*x.^x

\vskip3cm



\ques{2.}La fonction ci-dessous trace la courbe, discrétisée en 41 points, dont voici le tracé. 
\begin{verbatim}
function courbe
t=0:pi/20:2*pi;
y=sin(2*t);
z=sin(3*t);
plot(y,z)
\end{verbatim}
\vskip-5cm \hskip10cm\includegraphics[width=2in]{courbe.pdf}

\vskip-2cm
Modifier cette fonction pour qu'elle prenne pour argument un réel positif $a$ et retourne la partie de la courbe paramétrée par l'intervalle $[a,2\pi-a]$, discrétisée en 201 points.

% On change seulement les deux premières lignes en
% function courbe(a)
% t=a:a/100:2*pi-a;

%\end{document}
\vfill\eject

\noindent{Universit\'e Paris-Sud}\hfill  2008\par
\noindent{S2 IFIPS}\hfill Compléments de Mathématiques
\vskip1cm

\centerline{\smc Contrôle continu de Mathématiques, 30 mai 2008}
\centerline{\smc  Corrigé de la question sur matlab}

\ques{1.}\begin{verbatim}x=0:pi/40:pi/4; y=sin(x)/cos(x)
y=0.3839\end{verbatim}
Manque un point avant /. La commande mrdivide / désigne la division matricielle\footnote{Matlab retourne le réel $z$ qui minimise le vecteur $\sin(x)-z\cos(x)$ au sens des moindres carrés}. La commande ./, division composante par composante, correspond à ce qu'on veut faire. L'instruction correcte est \verb|x=0:pi/40:pi/4; y=sin(x)./cos(x)|.

\begin{verbatim}
x=0:0.1:2; y=2*x*x
??? Error using ==> mtimes     Inner matrix dimensions must agree.
\end{verbatim}
Manque un point avant *. La commande mtimes * désigne la multiplication matricielle. Pour matlab, x et x sont des matrices lignes, elles n'ont pas les dimensions nécessaires pour les multiplier. La commande .*, produit composante par composante, correspond à ce qu'on veut faire. L'instruction correcte est \verb|x=0:0.1:2; y=2*x.*x|. On aurait pu écrire aussi \verb|y=2.*x.*x| ou bien \verb|y=2*x.^2|. 

\ques{2.}Pour que la fonction suite prenne comme argument la condition initiale et le nombre de termes de la suite à calculer et à représenter graphiquement mais n'affiche pas les valeurs numériques, il suffit d'introduire les paramètres $x$ et $N$ entre parenthèses après le nom de la fonction, de les substituer aux valeurs particulières dans le programme, et de placer des ; à la fin des lignes où des valeurs numériques sont calculées. Autrement dit, on change les quatre premières lignes en
\begin{verbatim}
function suite(x,N)
u(1)=x;
for i=2:N
u(i)=u(i-1)-u(i-1)^2;
\end{verbatim}

Pour que la fonction courbe prenne pour argument un réel positif $a$ et retourne la partie de la courbe paramétrée par l'intervalle $[a,2\pi-a]$, discrétisée en 201 points, il suffit de changer les deux premières lignes en\begin{verbatim}
function courbe(a)
t=a:(pi-a)/100:2*pi-a;
\end{verbatim}


\end{document}