\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 \hspace{1cm}}\hfill   agreg 2012-2013 (F.Han\footnote{http://www.math.jussieu.fr/$\sim$han/agreg})}\\
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\code#1{{\tt #1}}
%%
\columnsep 0.7cm
\begin{multicols}{2}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%!s!<c>
%--------------------------------EXERCICE-------------------------------------
%!s!
%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
\exotitre{Alg\`ebre lin\'eaire}
\qusqu Dans xcas les vecteurs se notent entre: \verb/[ ]/. Par exemple, essayez:
\verb!v1:=[seq(j,j=1..4)]!   et \verb/v2:=[a,b,c,d]/
% v1:=[seq(j,j=1..4)];
% v2:=[a,b,c,d];
Les matrices se notent \verb/M:=[[1,2,3,4],[5,6,7,8]]/ et leur lignes sont
\verb/M[0]/ \verb/M[1]/ ...

Les vecteurs s'affichent en ligne, mais ce sont bien des vecteurs et non des
matrices lignes. Remarquez la diff\'erence d'affichage entre \verb/[v1]/  et
\verb/v1/, et copiez\footnote{Notez que l'on peut copier une sortie pour en faire
une entr\'ee, m\^eme si l'aspect semble diff\'erent.} collez la sortie (noire) de \verb/[v1]/ dans une zone
d'entr\'ee pour \'etudier les \verb/[]/.
% M:=[[1,2,3,4],[5,6,7,8]];
% M[0];
% M
% [v1]; // une matrice ligne
\squ Les lois usuelles en alg\`ebre lin\'eaire utilisent encore \verb/+/ et
\verb/*/. Calculez les images de $v_1$ et $v_2$ par $M$ (remarquez que la sortie
est bien un vecteur)
\squ Que font \verb/v1*v2/  et le peut \^etre peu recommandable \verb/v2*M/
% M*v1; //est bien un vecteur.
\qusqu   En utilisant l'instruction \code{seq} et une instruction pour cr\'eer des
matrices diagonales par blocs, cr\'eer une matrice identit\'e
de taille 4, puis une matrice diagonale de valeurs propres $1,2,3,4$
% diag(seq(1,4)); diag(1$4);
% diag(seq(j,j=1..4));
\qusqu Essayer\footnote{avec une version recente}/commenter
\linebreak\code{A:=matrix(4,4)+1;} et \code{A:=matrix(4,4,1);}.
\squ Remaquez que la fonction op\'erande: \verb/op/ permet d'enlever les crochets
d'une matrice ou d'un vecteur. On ajoute donc une ligne tres facilement. (testez
aussi \verb/op(a+b*c)/ et \verb/op((a+b)*c)/
% A:=matrix(4,4)+1;v:=[seq(1,j=1..4)];
% [op(A),op(v)]; //ajoute une ligne facilement.
%A*v;// Attention il retourne une ligne,pour xcas les vecteurs sont en ligne
\qu Une syntaxe tr\`es utile et \`a retenir est de cr\'eer une matrice \`a partir d'une
fonction: \verb/V:=matrix(6,6,(k,l)->x[k]^l);/
\squ Calculez le d\'eterminant de $V$ et factorisez le.
% V:=matrix(6,6,(k,l)->x[k]^l);
% dv:=det(V);
% factor(dv);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\exotitre{$SL(\rela)$}
On a souvent besoin d'obtenir "au hasard" une matrice \`a coefficients entiers de
d\'eterminant $1$, et souvent on aimerait avoir des coefficients petits. (Par
exemple pour cr\'eer un exemple ou un exercice avec un type de r\'eponse voulu). Quel
r\'esultat sur $SL_n(\rela)$ va nous \^etre utile?
%!s!<c>
%SL_n(Z) est engendre par les transvections. Cf operations ligne/colonne 
%!s!
\qusqu Cr\'eer une fonction \verb/T(a,b,l,n)/ qui retourne la matrice carr\'ee de
taille $n$ avec des $1$ sur la diagonale, $T_{a,b}=l$ et $0$ ailleurs. Quel est
l'inverse de la matrice \verb/T(a,b,l,n)/?
%!s!<m>
% T(a,b,l,n):={
%     local M ;
%     M:=idn(n);
%     if(a !=b){ M[a,b]:=l};
%     M;};
%!s!
% T(2,3,l,5);
\squ V\'erifiez que votre variable \verb/a/ est bien libre\footnote{comment la lib\'erer?}, et cr\'eez la matrice
$5\times 5$ \verb/A/ de coefficients \verb/a[i,j]/ avec $0\leq i,j \leq n-1$. Et
illustrez/commentez le lien entre une op\'etation ligne ou colonne et $T$.
% purge(a);// ou bien:
% a:='a';//NB: 'a' est la forme inerte, "a" est la chaine de caracteres.
% A:=matrix(5,5,(u,v)->a[u,v]);
\qu Cr\'eez une fonction qui retourne un \'el\'ement de $SL_n(\rela)$ au hasard un peu
compliqu\'e.
%!s!<p>
%randSL(n):={
% local j,m,M,a,b,l;
% m:=rand(15*n);//pour ne pas avoir trop de zeros selon n.
% M:=idn(n);
% for(j:=0;j<m;j++){
%    a:=rand(n);b:=rand(n);l:=rand(2*n)-n;
%     M:=M*T(a,b,l,n);
% }
%M;}
%!s!
%M:=randSL(10);det(M);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%!s!<c>
%--------------------------------EXERCICE-------------------------------------
%!s!
\exotitre{Introduction aux matrices nilpotentes}
\qusqu Cr\'eez une fonction \verb/JJ(n)/ qui retourne une matrice de taille $n\times
n$ ayant pour seuls termes non nuls des $1$ sur la droite $ j-i=1$.
% fjj:=(ii,j)->if(ii=j-1) then 1 else 0 fi;
% JJ(n):=matrix(n,n,fjj);//forme classique d'ordre 8.
\squ Cr\'eez une fonction \verb/J(L)/ qui associe \`a une liste \verb/L/ 
d\'ecroissante\footnote{exemple: [2,2,1,1]}  d'\'el\'ements de $\nat^*$, une
matrice diagonale par blocs constitu\'es des $JJ(n)$ correspondants. 
%J(L):=diag([seq(JJ(l),l=L)]);//l parcourt la liste L
\qusqu On consid\`ere la matrice
\begin{center}
$N=\left(\begin{array}{cccccccc}
0 & -1 & 1 & 0 & 0 & 0 & 0 & 0 \\
0 & -2 & 1 & 0 & 0 & 0 & 0 & 0 \\
0 & -4 & 2 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 1 & 1 & -2 & 0 \\
0 & 0 & 0 & 0 & 0 & 1 & -2 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 2 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0
\end{array}\right)$ 
\end{center}
% N:=[[0,-1,1,0,0,0,0,0],[0,-2,1,0,0,0,0,0],[0,-4,2,0,0,0,0,0],[0,0,0,0,1,1,-2,0],[0,0,0,0,0,1,-2,0],[0,0,0,0,0,0,0,2],[0,0,0,0,0,0,0,1],[0,0,0,0,0,0,0,0]]
En demandant \`a xcas de calculer des rangs de certaines matrices, d\'eterminer
l'unique $L$ pour que  $J(L)$ et  $N$ puissent \^etre semblable. (On rappelle que
l'on impose \`a $L$ d'\^etre d\'ecroissante \`a valeur dans $\nat^*$)
\squ Combien y a t'il de possibilit\'es en taille $8$ pour $J$? On pourra v\'erifier
avec $\prod_{n\geq 1}\frac{1}{1-t^n} $
\qu Donnez une base de $\ker N^2$, et choisissez deux vecteurs $a,b$ de $\ker N^3$
ind\'ependants modulo $\ker N^2$. Que devez vous demander \`a xcas pour prouver que
$a,b$ conviennent.
\qu Prenez un vecteur $c$ dans $\ker N^2$ tel que $N(a),N(b),c$ soient
ind\'ependants modulo $\ker N$. Prouvez avec xcas que votre choix de $c $ est
l\'egitime.
\qu On consid\`ere la famille de vecteurs
$N^2(a),N(a),a,N^2(b),N(b),b,N(c),c$. V\'erifiez que c'est une base, et conjuguez
$N$ pour la matrice de passage associ\'ee.
%!s!<c>
% On a maintenant trouve un bel exercice: Trouver la forme de
%  jordan de N et une matrice de passage pour l'obtenir.
%  On calcule N^2 et son noyau.
%!s!
% N,N^2;
% N2:=nullspace(N^2);
%!s!<c>
% on choisit a et b  independants modulo ker N^2 (qui est aussi im
%  N). (attention a et b hors de ker N^2 est insuffisant).
%!s!
%  a:=[0,0,1,0,0,0,0,0]:;b:=[0,0,0,0,0,1,0,0]:;
% rank(matrix([op(N2),a,b]));// doit etre dim ker N^2 +2.
% N1:=nullspace(N);
%!s!<c>
% dim ker N^2 -dim ker N= 6-3=2+1 donc N.a,N.b doit etre complete par c
%  tq N.a,N.b,c indep modulo ker N. Par exemple on prend celui la:
%!s!
%  c:=[0,0,0,0,0,0,0,1]:;
% !s!<c>
%On verifie qu'il convient:
%!s!
% rank(matrix([op(N1),N*a,N*b,c]));
% !s!<c>
%dim ker N - dim ker N^0=3 c'est donc engendr\'e par
%N^2.a,N^2.b,N.c. Il n'y a plus rien a faire, et l'on prend 
% la base suivante: (Attention pour xcas N*a... sont des lignes, on
% prend donc la transposee)
%!s!
% Q:=transpose(matrix([(N^2)*a,N*a,a,(N^2)*b,N*b,b,N*c,c]));
% !s!<c>
%On sait maintenant que Q^(-1)*N*Q doit donner J. verifification:
% !s!
% Q^(-1)*N*Q;
% !s!<c>
%--------------------------------------------------------------------------------------------------------------
%!s!

%!s!<c>
%-------------------------------------------Exercice---syntaxe et combinatoire
%des matrice nilpotentes--------------------------------
%!s!
\exotitre{Syntaxe d'alg\`ebre lin\'eaire via la combinatoire des matrices
  nilpotentes}
\qu  Affecter \`a $n$ la valeur $5$, et cr\'eer une matrice formelle $A=
\left(\begin{array}{ccc}
  a_0&\dots & a_{n-1}\\
  a_{n}&\dots& a_{2n-1}\\
  \vdots& & \vdots\\
  a_{n^2-n}& \dots & a_{n^2-1}
\end{array}\right)$. On pourra le faire de 2 fa\c cons diff\'erentes. En cr\'eant la
matrice \`a partir d'une fonction, ou bien en convertissant une liste
$[a_0,\dots,a_{n^2-1}]$ en une  matrice.
% n:=5;purge(a);
% A:=matrix(n,n,(ii,j)->a[n*(ii)+j]);
% l:=[seq(a[ii],ii=0..n^2-1)];
% !s!<c>
% Pour convertir la liste l en une matrice a n colonne:
%!s!
% A:=list2mat(l,n);
%J:=matrix(n,n):;J[0,1]:=1:;J[2,3]:=1:;J;
\qusqu Cr\'eer une matrice $J$ nilpotente de taille $5$ avec 2 blocs de jordan de
taille 2, et calculez le commutateur: $AJ-JA$
\def\mat{{\cal M}}
\squ En d\'eduire la matrice $C$ de l'application lin\'eaire de $\mat_n \to \mat_n$,
$M \mapsto MJ-JM$ dans la base de votre choix. Quelle est la dimension du
commutateur de $J$?
% L:=mat2list(A*J-J*A);
% C:=matrix(n^2,n^2,(ii,j)->diff(L[ii],a[j]));
% n^2-rank(C); //est la dim du commutateur de J.
\squ Dessinez au brouillon la partition, et comparez\footnote{un \'el\'ement du
  commutateur est d\'etermin\'e par le choix de l'image des vecteurs primitifs de
  chaque bloc.} avec la somme des  carr\'es
des hauteurs des colonnes.
\qusqu Trouver une fa\c con d'obtenir le noyau d'une matrice \`a coefficients dans
$\rela/2\rela$. Vous devez toujours avoir un esprit critique sur ce que vous
demandez \`a l'ordinateur, illustrez donc avec un exemple de taille $1\times 1$
que votre instruction fait ce que vous voulez. 
%% Nullspace(matrix([[2]])) mod 2; //est correct
%% nullspace(matrix([[2]])) mod 2; //cherche d'abord le noyau sur Q puis le reduit mod2
%% maple_mode(0); // en mode xcas il suffit d'utiliser %, on reste dans Z/2Z
%% e2:=1 % 2; maple_mode(1);
%% nullspace(matrix([[2*e2]]));
% !s!<c>
% En mode xcas c'est transparent, on travaille avec une matrice a coefficients
% modulaire avec l'instruction usuelle. C'est ici que le mode maple est tres
% desavantageux par rapport au mode xcas.
%!s!
% ker([[3%2,5%2],[1%2,1%2]]); 
\squ En d\'eduire une base du commutateur de $J$ dans $\mat_5(\rela/2\rela)$.
% com:=ker(C%2); // C%2 donne la classe de C dans Mn(Z/2Z)
% COM:=[seq(list2mat(ii,n),ii=com)];
\squ Trouver un moyen rapide d'obtenir via votre logiciel  un \'el\'ement de
coordonn\'ees donn\'ees (par exemple $(1,\dots,1)$ dans cette base. (par ex avec un
produit de listes). 
% v:=[1$13];
% v*COM;
\qusqu Etudier \code{[1,2,3]*[a,b,c,d,e]}. Faites trouver l'\'ecriture en base 2
de $67$ et de $0$. Comment cr\'eer une liste vide? Comment enlever les crochets de
\code{[1,2,3]}. Comment ajouter un \'el\'ement \`a
une liste? 
% [1,2,3]*[a,b,c,d,e];
% convert(67,base,2);
%convert(0,base,2);// Attention, il ne retoure pas 0 mais le vide.
% augment(convert(67,base,2),[0$10]); // pour ajouter des 0
% convert(67,base,2)+[0$13]; // la somme est ajustee au vecteur le plus long
\squ $k$ \'etant un nombre donn\'e, comment pouvez vous obtenir facilement la liste
de tous les vecteurs de $(\rela/2\rela)^k$.
\squ Cr\'eez une liste \code{LCOM} de tous les \'el\'ements non nuls du commutateur de
$J$. (\danger il y en a probablement pour 2 \`a 3 min, on testera d'abord que
c'est correct avec liste plus courte)
% !s!<c>
% Pour acceler la boucle suivante on releve la liste COM dans Z
% !s!
% COM:=COM%0; 
% LCOM:=[];
%!s!<m>
% for(ii:=0;ii<2^13;ii++)
% {
%   ci:=convert(ii,base,2);
%   LCOM:=[op(LCOM),(ci+[0$13])*COM];
% }:;
%!s!
\squ Comment selectionner des \'el\'ements dans une liste. Par exemple, selectionnez
les \'el\'ements de $GL_2(\rela/2\rela)$ du commutateur de $J$. Quel est le cardinal
du stabilisateur de $J$ sur $\rela/2\rela$? (V\'erifiez le \`a la main)
% STAB:=select(x->(det(x)%2 <> 0 ),LCOM):;
%dim(STAB);
%!s!<c>
%Le cardinal du stabilisateur est aussi le nombre de bases qui
%Jordanisent l'endomorphisme J. de partition:
%XX qui represente    e1e2
%XX                            e3e4
%X                               e5
%on choisit d'abord les classes de e2 et e4 dans kerJ^2/kerJ qui est
%de dim 2, ce qui fait 3*2 choix (le cardinal de GL2(F2)). puis on
%remonte ces classes dans kerJ^2. (Chaque classe a autant
%d'antecedants que kerJ:2^3. On a donc 6*8*8 choix pour e2,e4. ils
%determinent e1 et e3. On choisit e5 dans ker N-(vect(e1,e3)):8-4
%choix. Au total: 6*8*8*4=1536
%!s!
%


\newpage
\end{multicols}

\end{document}
