\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} TP02: Alg\`ebre Lin\'eaire 2\hspace{1cm}}\hfill   agreg 2010 (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(1);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,(i,j)->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 ce r\'eel et $M$. (ie \code{[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} pour la norme $2$. (On pourra utiliser \code{seq} et la fonction cond precedente)
% n:=5:l:=[seq(cond(matrix(n,n,(i,j)->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)[1];
% listecondi:=[seq(k[1],k=l)];
\squ On regroupe les valeurs  de cette liste en classes de longueur 10,
et afficher l'histogramme des fr\'equences de ces
classes. (Eventuellement ajuster les \'echelles. 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[$. Afficher un diagramme en batons repr\'esentant ces valeurs.
% 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 On souhaite 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), cr\'eer cette liste, et donner la matrice la
moins bien conditionn\'ee.
% listetriee:=sort(l,(x,y)->x[1]>=y[1]);
% listetriee[1];M:=listetriee[1][2];
\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 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),i=1..n)];
%b:=M*v;
% purge(x);
% X:=[seq(x[i],i=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}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
