\documentclass[12pt,a4paper]{article}
\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} TP2 \hspace{1cm}}\hfill   agreg 2007 (F.Han)}\\
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\code#1{{\tt #1}}
%% 
\begin{minipage}[t]{0.46\textwidth}
\exo
\qu Prendre une matrice  de taille 5 a  coefficients entiers
entre $-10$ et $10$ choisis avec une variable al{\'e}atoire uniforme, et
calculer son conditionnement pour la norme 
infinie, pour la norme $1$ et $2$. \danger On s'assurera que les
calculs sont fait en  flottants et non en valeur exacte.
\qusqu R{\'e}p{\'e}ter cette op{\'e}ration une centaine de fois pour cr{\'e}er une liste
pour chaque norme (\danger que l'on n'affichera pas \danger).
% interface(screenwidth=120);
%with(linalg):with(LinearAlgebra):
% n:=5:l:=seq(1.*cond(Matrix(n,n,rand(20)-10.),2),i=1..100):
 Afficher l'histogramme des fr{\'e}quences pour ces 3
 listes. (Cf le paquet \code{with(stats[statplots]):})
% with(stats[statplots]);
% histogram([l],area=count);
\squ Quel est le maximum de votre liste? Cr{\'e}er un histograme dont les
colonnes ont une largeur fixe d'au moins 100 et la plus proche possible de 100. 
% max(l);# le max de la suite
% histogram([l],area=count,numbars=floor(max(l)/100));
\squ R{\'e}p{\'e}ter  cette op{\'e}ration avec des matrices diagonales. 
\squ Trouver une matrice dans la liste cr{\'e}e (cas non diagonal) tr{\`e}s
``mal'' conditionn{\'e}e dans votre liste.  
% for i  from 1 to 200 do A:= Matrix(n,n,(rand(20)-10.));
% if cond(A,2)>500 then B:=A fi;od:B;
\squ Trouver ses valeurs propres. Choisir de bons vecteurs propres, et
cr{\'e}er un syst{\`e}me o{\`u} une petite erreur relative sur le second membre
donne une grande erreur relative sur la solution.
% #Par exemple j'avais trouve le B suivant:
% B:=Matrix([[-7., -8., 1., 0., -5., 6.], [-9., 0., 8., 2., 8., 0.], [7., 7., 1., 5., -4., 6.], [-4., -2., -6., 5., -8., -1.], [2., 2., -7., 2., -4., -10.], [6., 4., -2., -1., 1., -4.]]);
% cond(B);eigenvectors(B);
% a:=eigenvectors(B)[6];b:=eigenvectors(B)[4];
% linsolve(B,0.1*a[3][1]);linsolve(B,100*b[3][1]);linsolve(B,100*b[3][1]+0.1*a[3][1]);
%#NB: les [1] servent {\`a} retirer les {}
\end{minipage}
\hfill
\begin{minipage}[t]{0.46\textwidth}
  \exo
  \qu Cr{\'e}er un exemple $4\times 4$ pertinent (avec par exemple deux pivots
  nuls) pour expliquer le pivot
  de Gauss au Jury. Le faire {\'e}tapes par {\'e}tapes par produit de
  matrices. On pourra faire une fonction \code{T(i,j,s)} pour les
  transformations {\'e}l{\'e}mentaires.
% A := <<0,-2,1,3>|<0,0,0,1>|<1,1,0,0>|<-3,4,1,0>>;
% B:=Matrix(4):B[1,2]:=1:B[2,1]:=1:B[3,3]:=1:B[4,4]:=1:B;
% B.A;
% T:=proc(i,j,a)
% TT:=Matrix(4)+1:TT[i,j]:=a:TT;
% end proc;  
% T(3,1,1/2).B.A;
% T(4,1,3/2).T(3,1,1/2).B.A;
% F:=Matrix(4):F[1,1]:=1:F[3,3]:=1:F[2,4]:=1:F[4,2]:=1:F;
% #On compose les transpositions
% F.T(4,1,3/2).T(3,1,1/2).B.A;
\qu Utiliser \code{LUDecomposition} pour ce m{\^e}me syst{\`e}me et
  expliquer le lien, mais aussi la diff{\'e}rence.
% L:=LUDecomposition(A);L[1].L[2].L[3]-A;
% # il faut deplacer les transpositions:
  \qusqu Notons $\sigma$ la transposition $(k,l)$, et $S$ la matrice
  associ{\'e}e {\`a} la transposition des $k$ et $l$ i{\`e}mes vecteurs de
  base. Etudier $S.T(i,j,s)$ et $T(i',j',s).S$.
%#{\'e}galit{\'e} pour i=\sigma(i'),j=\sigma(j') 
  \squ Comment obtenir \code{LUDecomposition} {\`a} partir du pivot?
%U:=T(4,3,-2).F.T(4,1,3/2).T(3,1,1/2).B.A;
%L:=(F.T(3,1,-1/2).F^(-1)).(F.T(4,1,-3/2).F^(-1)).T(4,3,2);
%S:=B.F^(-1);
%S.L.U-A;  
\exo
\qu Comparer sur la r{\'e}solution de plusieurs syst{\`e}mes, les erreurs
  obtenues lorsque l'on travaille avec une pr{\'e}cision de 2 chiffres en
  travaillant avec l'inverse de la matrice ou bien en composant les
  inverses de la d{\'e}composition LU. On {\'e}tudiera \code{?MatrixInverse}
  et \code{?inverse}  pour ne pas utiliser 2 fois la m{\'e}thode LU, et
  pour travailler r{\'e}ellement avec des flottants d'une pr{\'e}cision de $10^{-2}$.
% Digits:=2; #Pb avec MatrixInverse, il n'en tient pas compte! utiliser linalg(inverse)
% a:=1./3;a*3;
% r:=rand(-10..10);
% A:=matrix(4,4,r*1.);
% #selon la doc de linalg, en taille <=4, il n'utilise pas LU.
% inverse(A),evalm(inverse(A).A);
\qu Etudions maintenant le cas o{\`u} l'inverse est calcul{\'e} par la m{\'e}thode
LU, obtient t'on forcement la m{\^e}me chose en calculant en flottants:
$(P.L.U)^{-1}(v)$ et $U^{-1}(L^{-1}(P^{-1}(v)))$?
%# Non, la mutiplication des flottants est commutative mais pas associative.
\end{minipage}
\end{document}
