\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} TP05 \hspace{1cm}}\hfill   agreg 2014-2015 (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

{\it Syntaxes du jour \`a retenir:} matrices, vecteurs, time, dessins, avoir une id\'ee la meilleure fa\c con de calculer
un d\'eterminant selon la situation, evaluer un symbole en une valeur voulue (ie
transformer un symbole en une fonction. cf II-1.c). M\'ethode pour faire de
nombreux essais.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

{\it Crochets/Parenth\`eses:}
Giac/Xcas traite les s\'equences \verb/( , , )/ et listes \verb/[ , , ]/ ainsi:
\begin{itemize}
\item[$\bullet$] Les diff\'erentes couches de parenth\`eses sont mises \`a plat. ie
  \verb/l:=((a,b),c,d);/ repr\'esente la m\^eme chose que \verb/l:=(a,b,c,d);/ et
  que \verb/l:=a,b,c,d;/
\item[$\bullet$] Les crochets ne sont jamais simplifi\'es. Autrement dit les objets
  \verb/l1:=[[a,b],c,d];/ et \linebreak\verb/l2:=[[a,b],[c,d]];/ et \verb/l3:=[a,b,c,d];/
  sont tous diff\'erents.   
\end{itemize}
Avec des parenth\`eses ou crochets l'ordre des \'el\'ements est important. On a
parfois besoin d'une s\'equence vide, on utilise alors le mot clef \verb/NULL/.
Ex: \verb/a:=NULL;a:=a,1;a:=a,2;/
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\exotitre{(facultatif) r\'evisions syntaxes d'Alg\`ebre lin\'eaire}
\qusqu Dans xcas les vecteurs se notent donc entre: \verb/[ ]/. Par exemple, essayez:
\verb!v1:=[seq(j,j=1..4)]!   et \verb/v2:=[a,b,c,d]/ et \verb/[seq(j^2,j=a2)]/
% v1:=[seq(j,j=1..4)];
% v2:=[a,b,c,d];
% v3:=[seq(j^2,j=v2)]; //nb pour la syntaxe j=v2, v2 doit etre une liste: [ , , ]
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 fait \verb/v1*v2/.
% 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 Essayez et commentez
\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 (un niveau) de 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:
\begin{center}
\verb/V:=matrix(6,6,(k,l)->x[k]^l);/  
\end{center}
\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{D\'eterminants. (Illustrations et Calculs)}
%!s!<c>
%-------------------------Determinant-----------------------------------------------
%!s!
Etudiez dans la documentation (Reference$>$calcul formel) html de xcas les diff\'erentes options de la
fonction d\'eterminant, et les diff\'erents algorithmes possibles.
\qu Quelle option correspond au pivot de Gauss usuel? Estimez le nombre
d'op\'erations sur le corps de base pour le pivot de Gauss avec la notation
$O()$. 
%%\squ Etudiez l'instruction \verb/time/ et comment n'obtenir qu'un seul nombre
en retour.
\squ  Donnez $2$ exemples de situations classiques o\`u le co\^ut d'une multiplication (resp
division...) peut \^etre mod\'elis\'e par une constante.
\squ Technique pour faire de nombreux essais: affectez une variable. Ex
\verb/n:=10;/ puis cr\'eez des matrices de taille $n\times n$ al\'eatoires \`a
coefficients dans $\rela/101\rela$ (utilisez \verb/%/ pour passer en
modulaire). Calculez ce d\'eterminant par la m\'ethode du 
pivot usuel d\'ej\`a impl\'ement\'ee dans xcas. puis affichez le temps. Augmentez $n$
pour tenter d'illuster l'asymptotique (ne pas perdre de temps, c'est souvent
tres difficile \`a illustrer). Comparez avec la m\'ethode des mineurs et montrez ses
limites. Qui l'emporte rapidement dans ce mod\`ele? Observez dans l'aide
html-algorithmes la partie sur les d\'eterminants. Montrez que vos r\'eponses sont
des expressions\footnote{En revanche, comment proceder pour montrer une egalit\'e
math\'ematique? Ex: que retourne a+b==b+a} identiques pour justifier que vous
comparez la m\^eme chose.
\squ Calculez avec xcas la somme formelle: $\sum_{k=0}^n k( ^n_k)$. Quel est le
nombre de multiplication dans la m\'ethode de Laplace? (par les mineurs) 
% !s!<c>
% Sur un corps fini comme avec des flottants on peut modeliser le cout des
% operations par des constantes c+,c*,c/ ... Dans ce modele le pivot de Gauss
% est en O(n^3) operations sur le corps (il faut O(n^2) transvections) alors que la
% methode de Laplace avec les  mineurs est en 2C^2_n+3C^3_n+4C^4_n+.... 
%!s!
% n:=10;
% M:=ranm(n,n)%101;
% time(d1:=det(M,rational_det));
% time(d2:=det(M,minor_det));
% d1-d2;
% n:=15;
% M:=ranm(n,n)%101;
% time(d1:=det(M,rational_det));
% time(d2:=det(M,minor_det));

% purge(n,k);
% sum(k*binomial(n,k),k=0..n);// Le nombre de multiplications par Laplace: O(n.2^n)
\qu Cr\'eez une assez grande matrice \`a coefficients entiers de valeurs absolue au
plus 10. Comparez le pivot de Gauss usuel \`a celui de Bareiss. Comparez ensuite
avec \verb/det(M)/ sans options. Quel est cette fois l'algorithme utilis\'e ({\bf Cf
nombres premiers applications})? Expliquez les grandes lignes de cette m\'ethode.
%!s!<c>
%Sur Z et Q le pivot traditionnel perd beaucoup de temps car les fractions sont
%de plus en plus lourdes a calculer. On n'est pas dans un modele a cout
%constant. La methode de Bareiss qui reste dans Z est donc tres
%avantageuse. Celle par defaut est une methode modulaire. (pivot dans Z/pZ puis
%l'on remonte)
%!s!
% n:=70;M:=smod(ranm(n,n,20),11);
% time(d1:=det(M,rational_det));
% time(d2:=det(M,bareiss));
% time(d3:=det(M));
%!s!<c>
% attention, le == n'est pas une instruction mathematique. Cela ne vaut vrai que
% si les expressions sont identiques. Ex: a+b==b+a retourne 0.
%!s!
%d1==d2;d2==d3;
\qusqu Essayer maintenant \verb/n:=4/ et \verb/purge(a)/; (pour \^etre sur d'avoir
une variable formelle)\linebreak\verb/A:=matrix(n,n,(u,v)->a[u,v])/.
(Retenir cette syntaxe). Que fait
\verb/d1:=det(A,rational_det)/ par rapport \`a \verb/d2:=det(A,bareiss)/? Comparez
aussi les diff\'erentes facons de d\'evelopper: \verb/simplify/, \verb/normal/,
\verb/expand/. 
\begin{center}
  {\it Pour les simplifications rationnelles lourdes, il on pr\'ef\'erera toujours normal aux autres instructions.}
\end{center}
%purge(a);
% n:=4;A:=matrix(n,n,(u,v)->a[u,v]);
% d3:=det(A,rational_det);
% time(normal(d3));
% time(simplify(d3));
% //time(expand(d3));//beaucoup trop long??
% !s!<c>
%La facon la plus rapide de developper avec simplifications rationnelles est
%toujours normal. Pour etre coherent il faut developper det(A,rational_det) pour
%le comparer aux autres.
%!s!
%time(d3:=normal(det(A,rational_det)));
%time(d4:=(det(A,bareiss)));
%time(d5:=(det(A,minor_det)));
%d3==d4;d4==d5;
\squ Avec $n=5$ ou $6$ comparez le pivot usuel, celui par bareiss et la m\'ethode
des mineurs. Conclusion?\footnote{Avec des matrices un peu plus grandes mais
  contenant pas mal de 0 on observe aussi ce genre de ph\'enom\`ene.}?
% !s!<c>
%Avec beaucoup de variables formelles, on se retrouve tres vite avec des tailles
%ou l'on ne peut plus rien calculer par aucune methodes. Un peu avant la methode
%par les mineurs tire souvent son epingle du jeu, et d'autant plus si la matrice
%est creuse. (avec pas mal de 0).
% !s!
% n:=6;A:=matrix(n,n,(u,v)->a[u,v]);
%time(d3:=normal(det(A,rational_det)));
%time(d4:=(det(A,bareiss)));
%time(d5:=(det(A,minor_det)));
%d3==d4;d4==d5;
\squ D\'emontrez\footnote{Int\'er\^et p\'edagogique: Ex les matrices reviennent au
  Lyc\'ee, avec certaines d\'efinitions la preuve de formule du produit est g\^enante} par un calcul logiciel la formule du d\'eterminant du produit de
$2$ matrices de taille $5\times 5$. Quel est le nombre de termes d'un polyn\^ome
de degr\'e 5 en 25 variables.
% purge(a,b);n:=5;A:=matrix(n,n,(u,v)->a[u,v]);B:=matrix(n,n,(u,v)->b[u,v]);
% C:=A*B;da:=det_minor(A):;db:=det_minor(B):;
% dc:=det_minor(C):;// on a 25 variables
%binomial(25+5-1,25);//nombre de termes d'un polynome general de deg 5 en 25 variables
%normal(dc-da*db);// on trouve bien 0
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
\exotitre{Polyn\^ome minimal. (Cf Probl\`emes de rang et applications )}
%!s!<c>
%-------------------------Polynome minimal-----------------------------------------------
%!s!
\qusqu Comment cr\'eer un polyn\^ome \`a partir de la liste de ses coefficients. (NB:
Pour xcas, un polyn\^ome n'est autre que la liste des coefficients. Ex: $x^2+1$
est un symbole pour xcas. 
%v:=[seq(ii,ii=1..8)];
%poly2symb(v,x);
\squ Comment renverser une liste?
%revlist(v);
\squ Comment \'evaluer un polyn\^ome lorsqu'il est sous forme d'un symbole. Comment
le faire \`a partir de la liste de ses  coefficients.
% P:=x^2+1;LP:=[1,0,1];
% subst(P,x=sqrt(2));
%unapply(P,x)(sqrt(2));//c'est preferable et plus Ex pour creer une fonction
% peval(LP,sqrt(2));
Soit $v$ un vecteur et $u$ un endomorphisme de $E$ (E ev de dim $n$). On note
$P_{u,v}$ un g\'en\'erateur de l'id\'eal: $\{P \in k[x], P(u)(v)=0\}$.
\qu Expliquer sur un exemple de taille $n$ al\'eatoire (on commencera par
$n=8$)comment on peut trouver $P_{u,v}$ \`a partir d'une recherche de noyau. 
% n:=8:;v:=[seq(ii,ii=1..n)]; A:=matrix(n,n,(i0,j0)-> rand(20)-10);
% B:=v; AA:=v;
%!s!<c>
% eviter cette syntaxe maple en mode xcas: for ii from 1 to n do AA:=A*AA;B:=B,AA; od;
%!s!
% for(ii:=1;ii<=n;ii++){ AA:=A*AA;B:=B,AA;}
% N:=nullspace(transpose([B]))[0];
% !s!<c>
%Attention, les polyn\^omes commencent a la puissance maximale, il faut inverser l'ordre
%!s! 
% P:=poly2symb(revlist(N),x);
% normal(subst(P,x=A));
\qu Recommencer sur un exemple o\`u $P_{u,v}$ est de degr\'e inf\'erieur \`a la dimension
de $E$. 
% A:=diag(companion(x^4-1,x),companion((x^2-1)^2,x));
% B:=v; AA:=v
%!s!<c>
% eviter cette syntaxe maple en mode xcas: for ii from 1 to n do AA:=A*AA;B:=B,AA; od;
% !s!
% for(ii:=1;ii<=n;ii++){ AA:=A*AA;B:=B,AA;}
% nullspace(B);
%N:=nullspace(transpose([B]))[0];
% P:=poly2symb(revlist(N),x);
% normal(subst(P,x=A));
\squ Optimiser le calcul des $A^k(v)$, et regardez si le polyn\^ome obtenu annule
$A$. Estimer le nombre d'op\'erations sur le corps de base.
% !s!<c>
%On a calcul\'e les A^k(v) par recurence. AA est un vecteur donc A*AA a un cout de
%n^2, et l'on fait n tours, donc c'est en O(n^3)
%!s!
\squ Justifier l'interet de cette m\'ethode pour trouver le polyn\^ome minimal de
$u$.
% !s!<c>
% Il existe toujours un vecteur v tel que P_(u,v)=pmin(u), les vecteurs a eviter
% sont dans ker(P(u)) ou P divise pmin, donc nom fini despace vectoriels a eviter.  
%!s!
\qu Etudiez dans la documentation de xcas les diff\'erentes options pour calculer
le polyn\^ome caract\'eristique. Expliquez l'int\'eret de l'option pmin. Illustrez sur
des exemples.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


% !s!<c>
%-------------------Polynome caracteristique et mineurs diagonaux------------------------------------------------------------------------------
%!s!
\exotitre{Polyn\^ome caract\'eristique; Mineurs diagonaux}
 Commencer par poser \code{n:=5;}, on le fera \'eventuellement augmenter
apr\`es. Cr\'eer l'ensemble $I_n=\{1,\dots,n\}$. Comment retirer
l'ensemble $\{2,4\}$ de $I_n$.
% n:=5; In:=%{seq(j,j=0..n-1)%}; In minus %{2,4%};
% In:=set[seq(j,j=0..n-1)]; In minus set[2,4]; 
\qu Cr\'eer une proc\'edure \code{extr} de
$(A,I,J)$ qui retourne la matrice $A_{i\in I,j\in J}$. On pourra soit utiliser
deux seq, soit trouver des instructions sp\'eciales sur les matrices. 
% !s!<m>
% extr(A,II,JJ):={
% matrix([seq([seq(A[i0-1,j0-1],j0=JJ)],i0=II)]);
% };
% !s!
\qu On condid\`ere une matrice
$A$, formelle de taille $n$, et la matrice diagonale formelle
\verb/d:=diag(seq(x[i0],i0=1..n));/
\squ Etudier la documentation sur les d\'eriv\'ees, d\'eriv\'ees partielles,
d\'eriv\'ees d'ordre sup\'erieur et liste des d\'eriv\'ees partielles.
% !s!<c>
%Attention, diff(f,x,y) derive en x puis y, alors que diff(f,[x,y])
%donne la liste des derive en x et en y.
%!s!
%diff(x*y,x,y);diff(x*y,[x,y]);
\squ Comparer quelques  mineurs diagonaux de taille 3 avec $\frac{\partial
  \det(A-d)}{\partial x[i] \partial x[j]}$ \'evalu\'e en $0$
% purge(a,x);
% n:=5;A:=matrix(n,n,(i0,j0)->a[i0,j0]);
% d:=diag(seq(x[i0],i0=1..n));
% II:=In minus set[1,3];// on essaye (i,j)=(1,3)
% extr(A,II,II);
% dij:=diff(det(A-d),x[1],x[3]);
% !s!<c>
% Pour remplacer rapidement les x[0]..x[4] par des zeros, on affecte au
% vecteur x le vecteur nul. Attention en mode xcas les indices
% commence a 0, donc on annulle x[0]..x[5] en faisant x:=[0$6]; Le probl\`eme est
% qu'il faudra peut le purger si l'on en a besoin plus tard.
% Il vaut mieux utiliser unapply voire subst.
%!s!
% normal(det( extr(A,II,II)) - subst(dij,x=[0,0,0,0,0,0]));
% normal(det( extr(A,II,II)) - unapply(dij,x)([0$6]));
% II:=In minus %{2,3%};// on essaye (i,j)=(2,3)
% extr(A,II,II);
% dij:=diff(det(A-d),x[2],x[3]);
% normal(det( extr(A,II,II)) - unapply(dij,x)([0,0,0,0,0,0]));
% II:=In minus %{4,5%};// on essaye (i,j)=(4,5)
% extr(A,II,II);
% dij:=diff(det(A-d),x[4],x[5]);
% normal(det( extr(A,II,II)) - unapply(dij,x)([0,0,0,0,0,0]));
\squ On note $P=\det(A-x*I)$ le polyn\^ome caract\'eristique de $A$. Quels
sont ses coefficients en fonction de ses d\'eriv\'ees?
% B:=A-x*identity(n);
% d:=seq(normal(subst(diff(det(B),x,i0),x=0)/i0!),i0=n..1);
% P:=charpoly(A);
\squ Conclure que le coefficient de $x^{n-i}$ de $P$ est $(-1)^{n-i}$
fois la somme des mineurs\footnote{il y en a $C_n^i$} diagonaux de taille $i$ de $A$.
%!s!<c>
%f(x1,..,xn) n  R^n -> R.
% d(f(x,...,x))/dx = Sum_i( (dpart(f)/dxi)(x,...,x))
% d^k(f(x...x)/(dx)^k = somme sur tous les k uplets. Si f est alternee seuls les
% k uplets d'elts distincts comptent, avec les k! permutations on  a le resultat. 
%!s!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
\squ On consid\`ere la matrice d'adjacence $A$ d'un graphe simple non
orient\'e. Quel coefficient du polyn\^ome caract\'eristique de $A$ est au signe pr\`es le
double du nombre de triangles du graphe?
\end{document}