\documentclass[12pt,a4paper]{article}
\usepackage{multicol}
\usepackage[french]{babel}
\newfont{\mini}{cmssi10 scaled 480}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\euro{\mbox{\textsf{C}\kern -2.33em{\raise0.24ex\vbox{\small\it =}}}}
%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\fin{\nolinebreak \raise-0.1em\hbox{$\Box$}}
\def\stackunder#1#2{\mathrel{\mathop{#2}\limits_{#1}}}
\def\dual{ ^{\rm v}}
\def\bidual{ ^{\rm vv}}
\def\primedual{ ^{\prime \rm v}}
\def\ideal{{\cal J}}
\def\LL{{\cal L}}
\def\max{{\cal M}}
\def\quot#1#2{\mbox{\raise 0.1cm\hbox{$#1$}{\big /}\raise -0.1cm\hbox{$#2$}}}
\def\danger{{\Large \bf
    $\bigtriangleup$}\kern-0.32cm\raise0.05cm\hbox{\small
    !}\kern0.32cm\lower0.05cm\hbox{}}
%%%%%%%
\newlength{\largeurtmp}
\def\rela{\settoheight{\largeurtmp}{Z}{\rm Z} \kern -0.6\largeurtmp
  \raise 0.05cm\hbox{\tiny{\it /}}\kern 0.6\largeurtmp}
\def\petitrela{\settoheight{\largeurtmp}{Z}{\rm Z} \kern -0.4\largeurtmp
  \raise 0.05cm\hbox{\tiny{\it /}}\kern 0.4\largeurtmp}
\def\petitcomplex{{
    \settoheight{\largeurtmp}{$_C$}{\rm C}\kern -\largeurtmp
    \rule{0.25pt}{1.3\largeurtmp}\kern \largeurtmp}}
\def\complex{{
    \settoheight{\largeurtmp}{Q}{\rm C}\kern -0.66\largeurtmp
    \rule{0.25pt}{0.9\largeurtmp}\kern 0.66\largeurtmp}}
\def\ratio{{
    \settoheight{\largeurtmp}{C}{\rm Q}\kern -0.75\largeurtmp
    \rule{0.25pt}{0.9\largeurtmp}\kern 0.75\largeurtmp}}
\def\petitratio{{
    \settoheight{\largeurtmp}{C}{\rm Q}\kern -0.6\largeurtmp
    \rule{0.25pt}{0.6\largeurtmp}\kern 0.6\largeurtmp}}
\newcommand{\proj}{{\rm I} \! {\rm P}}
\newcommand{\reel}{{\rm I} \! {\rm R}}
\newcommand{\Fp}{{\rm I} \! {\rm F}_p}
\newcommand{\nat}{{\rm I} \! {\rm N}}
%%%%%%%%%%%%%%%Debut de macros de fiches d'exos
%%les macros sont \exo, \qu, \quskip \squ \qusqu \qusquskip
\newcounter{exo}
\newcounter{question}
\newlength{\lng}
\newcounter{sousquestion}
\setcounter{exo}{1}
\def\exo{

  \bigskip
  \noindent{\bf Exercice
    \Roman{exo}:}\addtocounter{exo}{1}\setcounter{question}{0}\nopagebreak 

  }
\def\exotitre#1{

  \bigskip
  \noindent{\bf Exercice
    \Roman{exo}: #1}\addtocounter{exo}{1}\setcounter{question}{0}\nopagebreak 

  }
\def\qu{

  \addtocounter{question}{1}\arabic{question})
  \setcounter{sousquestion}{1} }
\def\quskip{

  \bigskip
  \qu}
\def\squ{

  \settowidth{\lng}{\arabic{question})
  }\hspace{\the\lng}\alph{sousquestion}) \addtocounter{sousquestion}{1}} 
\def\qusqu{\qu\nopagebreak \vskip -1\baselineskip \squ}
\def\qusquskip{\quskip\nopagebreak \vskip -1\baselineskip \squ}

%%reference pour exos,squ \`a placer avant la question, qu est a placer apres
\def\labelexo#1{\expandafter\edef\csname refexo#1\endcsname {\Roman{exo}}}
\def\refexo#1{\csname refexo#1\endcsname}
\def\labelqu#1{\expandafter\edef\csname refqu#1\endcsname {\arabic{question})}}
\def\refqu#1{\csname refqu#1\endcsname}
\def\labelsqu#1{\expandafter\edef\csname refsqu#1\endcsname
  {\arabic{question}\alph{sousquestion})}} 
\def\refsqu#1{\csname refsqu#1\endcsname}  

%%%%%%%%%%fin de macros fiche d'exos
%%macros taille page
\newlength{\elargir}
\setlength{\elargir}{2.5cm}
\addtolength{\leftmargin}{-\elargir}
%%\addtolength{\hoffset}{-\elargir}
\addtolength{\oddsidemargin}{-\elargir}
\addtolength{\evensidemargin}{-\elargir}
\addtolength{\elargir}{\elargir}
\addtolength{\textwidth}{\elargir}
\addtolength{\textheight}{13\baselineskip}
\topmargin=-5\baselineskip
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%        
\everymath={\displaystyle}
\begin{document}
\noindent{\bf Universit\'e de Paris 7 \hfill \framebox{\Large \bf
    \hspace{ 1cm} TP03: Graphiques\hspace{1cm}}\hfill   agreg 2011 (F.Han\footnote{http://www.math.jussieu.fr/$\sim$han/agreg})}\\
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\code#1{{\tt #1}}
%% 
\columnsep 0.7cm
\begin{multicols}{2}
% restart;maple_mode(0);cas_setup(0,0,0,1,0,1e-10,10,[1,50,0,25],0,0,0);//radians,pas de cmplx, pas de  Sqrt
\exotitre{Statistiques; conditionnement}
\qusqu Cr\'eer une matrice  de taille 5 \`a  coefficients entiers
entre $-10$ et $10$ \`a partir d'une fonction "random"  uniforme. 
Calculer ses normes 
infinie,  $1$ et $2$. \danger On s'assurera que les
calculs sont fait en  flottants et non en valeur exacte.
% n:=5;M:=matrix(n,n,(i0,j0)->rand(21)-10.0);//NB:rand(21) repond entre 0 et 20
% maxnorm(M);colnorm(M);norm(M);
\squ Cr\'eer une fonction \code{cond} qui calcule (en flottants) le conditionnement de
$M$ pour la norme $2$, et retourne une liste form\'ee de ce r\'eel et $M$. (ie
\code{[condiM,M]} pour xcas et \code{list(condiM,M)}) 
%cond:=M->[norm(evalf(M))*norm(1/evalf(M)),M];
%cond(M);
\qusqu R\'ep\'eter cette op\'eration 1000 fois pour cr\'eer une
liste \code{l} de ces 1000 couples.
%%(On pourra utiliser \code{seq} et la fonction cond precedente) 
% n:=5:;l:=[seq(cond(matrix(n,n,(i0,j0)->rand(21)-10.0)),k=1..1000)]:;
\squ Comment fait on pour en extraire la liste des conditionnements?
% !s!<c>
%premiere methode: On prend la premiere ligne de la transpos\'ee. Seconde methode avec une suite indexee par la liste
%!s!
% listecondi:=transpose(l)[0];
% listecondi:=[seq(k[0],k=l)];
\squ On regroupe les valeurs  de cette liste en classes de longueur 10,
et afficher l'histogramme\footnote{on ne normalisera pas les ordonn\'ees} des fr\'equences de ces
classes. (Eventuellement ajuster les \'echelles. pour xcas on peut utiliser 1)
avec les fleches bleues, roses, vertes. 2) avec un rectangle rouge dessin\'e a la
souris, 3) avec le menu cfg). Que repr\'esentent les colonnes?
%histogram(classes(listecondi,0,10));
\squ Quel est le maximum de votre liste? Calculer l'\'ecart type de
cette liste, sa moyenne.  
% ml:=max(listecondi);// le max de la suite
% ecart_type(listecondi);//ou bien: stddev donne l'ecart type
% moyenne(listecondi);
\squ En utilisant la notion de classes, combien y  a t'il d'\'el\'ements
de votre liste dans $[0,50[$, $[50,100[$, $[100,200[$, $[200,400[$,
$[400,+\infty[$. (Pour scilab on utilisera la fonction \code{find} et celle
donnant les dimensions d'un tableau. Comment effacer l'\'ecran?). Afficher un
diagramme en batons\footnote{ie la largeur des colonnes est constante, et la
  hauteur est le cardinal} repr\'esentant ces valeurs.
%% pour scilab: length(find(0<=l & l<50));
%% pour scilab: [x]=(find(0<=l & l<50));x(2)
%% size donne les 2 dim
%%clf()
% classes(listecondi,[0..50,50..100,100..200,200..400,400..floor(ml+1)]);//l'infini ne marche pas, on prend donc une borne strictement superieure au max
% diagramme_batons(classes(listecondi,[0..50,50..100,100..200,200..400,400..floor(ml+1)]));
\squ Commentez cette r\'epartition. \'eventuellement, executez de nouveau
votre session. (Menu edit, executer session)
% !s!<c>
% L'ecart type est enorme par rapport a la moyenne. On constate
% souvent 80 pourcent des condtionnements en dessous de 50, alors que
% parfois ca peut depasser 1000
%!s!
\qusqu Donner la matrice la
moins bien conditionn\'ee de votre liste. Pour xcas on pourra m\^eme ranger la liste
\code{l} selon les conditionnements d\'ecroissants. En utilisant \code{sort} et
une fonction de tri adapt\'ee \`a la premi\`ere coordonn\'ee (ie on ne compare que les
conditionnements, pas les matrices). Pour scilab on pour trouver l'indice du
plus grand conditionnement avec \code{find}.
% listetriee:=sort(l,(x,y)->x[0]>=y[0]);
% listetriee[0];M:=listetriee[0][1];
\squ Etudier cette matrice. (d\'eterminant, valeurs propres complexes,
\'eventuellement forme de Jordan)
% complex_mode:=1;det(M);eigenvalues(M);
% jordan(M);//bon c'etait pas la peine!
% !s!<c>
% Les cas anormaux on une valeur du determinant tout a fait normale,
% la matrice est donc bien inversible, en revanche, on constate une
% valeur propre (eventuellement complexe) proche de 0, elle n'est donc
% pas loin d'une matrice non inversible.  
%-----------------------------------------------------------------------------------------------------------------------------------
%!s!
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\squ (Pour xcas) Le jury appr\'ecie particuli\`erement des illutrations montrant un esprit
critique, ou une volont\'e d'\^etre sur de ce que fait votre logiciel. Trouver par
exemple un moyen d'\'etudiez la pr\'ecision  lorsque l'on fait \code{Digits:=4}, et 
\code{Digits:=14}; \code{Digits:=15};
% Digits:=4;
% a:=1-(0.1)^10;
% a-1;//il a travaille en fait avec plus de chiffres.
% Digits:=14;
% a:=1-(0.1)^15;
% a-1;//il n'a toujours pas perdu le 0.1
% Digits:=15;
% a:=1-(0.1)^16;//la il a vraiment travaille en 15 chiffres.
%a-1;
\squ Prendre un vecteur au hasard $v$, calculer $b=M.v$ o\`u $M$ est la matrice la
moins bien conditionn\'ee de votre liste, et faites r\'esoudre le syst\`eme $M.x=b$,
\'etudiez l'erreur, et le conditionnement. Trouver les valeurs propres de $M$ et
ses vecteurs propres, et prendre  $v$ proche d'un vecteur propre judicieux pour
obtenir une grosse erreur.
% Digits:=15;
% !s!<c>
%on s'assure d'avoir une precision exacte, car sous xcas  en 32
%bits, moins de 14 chiffres fait la meme chose que 14 chiffres.
%!s!
% v:=[seq(rand(-10.0,10.0),j=1..n)];
%b:=M*v;
% purge(x);
% X:=[seq(x[j],j=1..n)];
%linsolve(M*X=b,X)-v;
%P:=eigenvectors(M);eigenvalues(M);
%v:=(transpose(P)[2]);
%b:=M*v;
%!s!<c>
%NB une erreur de 10^-11 alors que l'on travaille avec 15 chiffres donne tout de
%meme un rapport 1000. 
%!s!
%linsolve(M*X=b,X)-v;
\newpage
\end{multicols}
\end{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
