\chapterimage{lena_couleur}
\chaptertext{{\small 

Aujourd'hui,  des  mathématiques  concrètes  vont  nous  permettre  de
réduire,   agrandir,   assombrir,  éclaircir,   compresser,   bruiter,
quantifier,... une photo. Pour cela,  il existe des méthodes provenant
de  la théorie  du signal  et des  mathématiques continues.  Nous nous
pencherons plutôt sur  des méthodes plus légères  basées sur l'algèbre
linéaire  et l'analyse  matricielle.   Une image  sera  pour nous  une
matrice  carrée de  taille $2^9$  à coefficients  dans $\llbracket  0,
2^9-1\rrbracket$.  Cela manque de charme?  C'est sans compter sur Lena
qui depuis quarante ans rend les maths sexy (la population hantant les
laboratoires  mathématiques   et  surtout  informatiques   est  plutôt
masculine ...).

Nous   étudierons  pour   cela   la  \og   Décomposition  en   Valeurs
Singulières\fg{} qui apparaît de nos jours comme un couteau suisse des
problèmes linéaires:  en traitement  de l'image et  de tout  signal en
général, en  reconnaissance des formes, en  robotique, en statistique,
en  étude  du  langage  naturel,  en  géologie,  en  météorologie,  en
dynamique des structures, en....

Dans  quel domaine  travaille-t-on alors:  algèbre linéaire,  analyse,
probabilités, topologie,...?  Un  peu de tout cela  et d'autres choses
encore: cela s'appelle la mathématique.}
}


\chapter{Dessine-moi une matrice...}


\section{Lena}

\setindent{0cm}
\begin{flushleft}
\begin{minipage}[t]{3cm}
\begin{figure}
  \includegraphics[width=3cm]{kahan}
\caption{W. \bsc{Kahan (né en 1933)}}
\end{figure}
\end{minipage}
\end{flushleft}
\setindent{\indentationcours}
\vspace{-6.35cm}
\begin{minipage}[t]{\linewidth}
\end{minipage}


Nous  allons travailler  avec  des  images qui  sont  des matrices  de
niveaux de gris.  Notre belle amie Léna sera représentée par une matrice
carrée de  taille $2^9$ ce qui  permet de reproduire Léna  à l'aide de
$2^{18}=262\,144$  pixels. Léna  prend alors  beaucoup de  place. Nous
allons tenter de  compresser la pauvre Léna sans pour  cela qu'elle ne
perde sa qualité  graphique. Une des méthodes les  plus abordables est
d'utiliser la décomposition d'une matrice en valeurs singulières.

C'est   un    sujet   extrêmement   riche   qui    a   de   nombreuses
applications.  L'algorithme que  nous  utiliserons (mais  que nous  ne
détaillerons pas) a été mis au point par deux très éminents chercheurs en 1965
(Gene   \textsc{Golub},   états-unien   et   William   \textsc{Kahan},
canadien, père de la norme  IEEE-754). Il s'agit donc de mathématiques
assez récentes, au moins en comparaison avec votre programme...


La petite histoire  dit que des chercheurs  américains de l'University
of Southern California étaient pressés de trouver une image de taille
$2^{18}$ pixels pour leur conférence.  Passe alors un de leurs
collègues avec, en bon informaticien, le dernier Playboy sous le bras.
Ils décidèrent alors 
d'utiliser le poster central de la Playmate comme support...

% La photo originale est ici:
% \href{http://www.lenna.org/full/len\_full.html}{http://www.lenna.org/full/len\_full.html}
% mais nous n'utiliserons  que la partie scannée par  les chercheurs, de
% taille $5.12 \mathrm{in}\times 5.12 \mathrm{in}$...




\section{La SVD}

\setindent{0cm}
\begin{flushleft}
\begin{minipage}[t]{3cm}
\begin{figure}
  \includegraphics[width=3cm]{eckart}
\caption{C. \bsc{Eckart (1902-1973)}}
\end{figure}
\end{minipage}
\end{flushleft}
\setindent{\indentationcours}
\vspace{-6.35cm}
\begin{minipage}[t]{\linewidth}
\end{minipage}


\subsection{Le théorème}

Un théorème démontré officiellement en 1936 par Carl \textsc{Eckart}
et Gale \textsc{Young} affirme alors que toute matrice rectangulaire A se
décompose sous la forme:

$$A = U \times S \times \tr V$$

avec U et  V des matrices orthogonales et S  une matrice nulle partout
sauf sur sa diagonale principale  qui contient les valeurs singulières
de A  rangées dans  l'ordre décroissant. \textsc{Sylvester}  s'y était
déjà  intéressé pour  des matrices  carrées  réelles en  1889 mais  ce
résultat a semblé n'intéresser personne pendant des années. 


Le court article de \textsc{Eckart} et \textsc{Young} est disponible à
l'adresse suivante: \href{http://projecteuclid.org/DPubS?service=UI\&version=1.0\&verb=Display\&handle=euclid.bams/1183501633}{http://projecteuclid.org/DPubS?service=UI\&version=1.0\&verb=Display\&handle=euclid.bams/1183501633}.

Ce qui est  remarquable, c'est que n'importe quelle  matrice admet une
telle  décomposition, alors  que la  décomposition en  valeurs propres
(la  diagonalisation d'une  matrice) n'est  pas toujours  possible. Et
quand  on  dit n'importe  quelle  matrice,  on  ne rigole  pas:  toute
matrice, même rectangulaire. C'est vraiment très puissant et à la fois
simple mais cette décomposition  n'a trouvé d'applications importantes
qu'assez récemment (ce  qui veut dire après 1899 à  l'échelle de votre
programme de prépa...) ce qui explique peut-être qu'on en parle si peu
en premier cycle.


Cependant,  la   décomposition  en  éléments  singuliers   utilise  la
décomposition en éléments propres.



Notons $r$ le rang  de A et $U_i$ et $V_i$ les  vecteurs colonnes de U
et V. La décomposition s'écrit:


$$A=
\begin{pmatrix}
  U_1&U_2&\cdots &U_r&\cdots & U_m
\end{pmatrix}
\times
\begin{pmatrix}
  \sigma_1& & & &\\
    &\ddots & & & \\
   & &\sigma_r & &\\
   & & &\ddots &\\
   & & & & 0
\end{pmatrix}
\times
\begin{pmatrix}
  \tr V_1\\
  \vdots\\
  \tr V_r\\
  \vdots\\
  \tr V_n
\end{pmatrix}
$$

ou formulé autrement:



\begin{eqnarray*}
A  &=&  \sigma_1\cdot  U_1\times  \tr  V_1+\sigma_2\cdot  U_2\times  \tr
V_2+\cdots+\sigma_r\cdot  U_r\times \tr  V_r+0\cdot U_{r+1}\times  \tr
V_{r+1}+\cdots\\
&=&\sigma_1\cdot  U_1\times  \tr  V_1+\sigma_2\cdot  U_2\times  \tr
V_2+\cdots+\sigma_r\cdot  U_r\times \tr  V_r
\end{eqnarray*}


Il  faut ensuite  se souvenir  que  les $\sigma_i$  sont classés  dans
l'ordre  décroissant ce  qui va  avoir des  applications importantes  en
informatique.


\subsection{Interprétation géométrique}


Comment interpréter géométriquement ce résultat? Considérez une sphère
de rayon 1:  que devient-elle transformée par A, i.e.  par $U \times S
\times \tr V$? Faites un petit dessin en dimension 2.
Que vaut $\Vert A\Vert_2 =\displaystyle \max_{\Vert x\Vert =1}\Vert Ax\Vert_2$?

Afin de répondre, un peu de vocabulaire d'abord.  On a $AV_i=\sigma_i U_i$: on dit alors
que $U_i$ est un vecteur singulier  à gauche pour la valeur singulière
$\sigma_i$.

De même $\tr A U_i =\sigma_i V_i$  et $V_i$ est un vecteur singulier à
droite  pour la  valeur singulière  $\sigma_i$. Les  bases $(u_i)$  et
$(V_i)$ sont orthonormées: si l'on exprime la matrice de l'application
linéaire  associée   à  A  dans   ces  bases,  que   pouvez-vous  dire
géométriquement?




\subsection{Un exemple simple}


On suppose  que la SVD d'une  matrice A de taille  $m\times n$ s'écrit
$U\times S \times \tr V$.

\begin{enumerate}
\item  Quelles sont  les  dimensions de  U et  V?  Que pensez-vous  de
  $A\times \tr A$?  Que représentent les
  colonnes de U pour $A\times \tr A$?. Et les colonnes de V pour $\tr A\times A$.
\item Calculez (à la main...) la SVD de $A=
  \begin{pmatrix}
    2&-2\\
    1&1
  \end{pmatrix}
$.

\item Shoot again avec $
  \begin{pmatrix}
    3&1&1\\
    -1&3&1
  \end{pmatrix}
$
\end{enumerate}


Quels liens existent entre la SVD et la recherche des éléments propres
d'une  matrice?  Avec le  théorème  spectral?  Vaut-il mieux  utiliser
$A\times \tr A$ ou $\tr A\times A$?


\subsection{Approximation de rang minimum d'une matrice}


Dans  de  nombreux  domaines,  on  doit  travailler  avec  de  grosses
matrices. Il est alors très important de déterminer une matrice $\widetilde{A_s}$ de
même taille qu'une matrice A mais de rang $s$ inférieur au rang $r$ de
A et qui minimise
l'erreur commise pour  une certaine norme (qui est le  plus souvent la
norme de  \textsc{Frobenius}, i.e.  la racine carrée  de la  somme des
carrés des  coefficients). Le théorème  d'\textsc{Eckart-Young} permet
alors de dire que:

$$\min_{{\rm   rg}(X)\leqslant  s}\Vert   A-X\Vert_F=\Vert
A-\widetilde{A_s}\Vert_F= \sqrt{\sum_{j=s+1}^r \sigma_j^2(A)}$$


avec $\widetilde{A_s}=\sigma_1\cdot  U_1\times  \tr  V_1+\sigma_2\cdot  U_2\times  \tr
V_2+\cdots+\sigma_s\cdot  U_s\times \tr  V_s$:  on  considère que  les
éléments diagonaux de A sont  nuls en-dessous d'un certain seuil. Nous
allons l'illustrer informatiquement  à défaut de le  démonter. On voit
tout de  suite des conséquences  pratiques, que nous  allons également
illustrer informatiquement dans le cas de la compression des images.



\section{Manipulation d'images}

\subsection{Scilab}


Nous utiliserons la fonction \verb+grayplot(x,y,z)+, \verb+x+ étant un
vecteur de taille  $n$, \verb+y+ un vecteur de taille  $m$ et \verb+z+
une matrice de taille $n\times m$, qui permet
d'afficher les points de coordonnées (\verb+x(i)+,\verb+y(j)+) avec la
couleur  \verb+z(i,j)+ selon  une \og  \verb+colormap+\fg{}, i.e.  une
fonction  qui à un  entier associe  une couleur  selon  le codage  du
langage.

Nous  utiliserons  une  matrice  carrée de  taille  $2^9$  donnant  la
coloration des pixels selon une échelle de gris graduée de 0 à 255. Il
suffit de récupérer le fichier \verb+lena.csv+ à l'adresse suivante:
\href{http://download.tuxfamily.org/tehessinmath/les\_sources/lena.csv}{http://download.tuxfamily.org/tehessinmath/les\_sources/lena.csv}


Le préambule de notre fichier Scilab sera donc:

\begin{lstlisting}[caption={}]
funcprot(0);
l = read('lena.csv',512,512); // on charge lena.csv placé dans le répertoire de travail
lena = l'; // on met lena à l'endroit en transposant la matrice
x = [1:512]; // la liste des abscisses
y = [512:-1:1]; // la liste des ordonnées inversée pour avoir l'origine en bas à gauche 
xset('colormap',graycolormap(256)); // on choisit 256 niveaux de gris 
isoview(0,512,0,512); // on choisit une vue orthonormée
\end{lstlisting}

Il ne reste plus qu'à faire apparaître Lena...

\begin{lstlisting}[caption={}]
grayplot(x,y,lena)
\end{lstlisting}




\subsection{Manipulations basiques}

Comment obtenir les images suivantes:

\begin{multicols}{2}
  \begin{center}
  \includegraphics[height=3cm]{lena_miroir}
\end{center}
\begin{center}
  \includegraphics[height=3cm]{lena_retourne}
\end{center}
\end{multicols}

Sachant que l'échelle de gris est celle-ci:


%\begin{figure}
\begin{center}
  \includegraphics[width=0.8\linewidth]{grayscale}
\end{center}
%\end{figure}

comment obtenir les images suivantes:

\begin{multicols}{3}
   \begin{center}
  \includegraphics[height=4cm]{lena_foncee}
\end{center}
\begin{center}
  \includegraphics[height=4cm]{lena_claire}
\end{center}
\begin{center}
  \includegraphics[height=4cm]{lena_neg}
\end{center}

\end{multicols}


\subsection{Gagner de la place}


Une matrice de taille $2^9$ contient $2^{18}$ entiers codés entre 0 et
$2^8-1$ ce  qui prend pas mal  de place en mémoire.  Peut-on être plus
économique sans pour cela diminuer la qualité esthétique de la photo?

\subsubsection{Résolution}

La première idée est de prendre  de plus gros pixels, c'est-à-dire une
matrice plus petite: on extrait par exemple régulièrement un pixel sur
$k$ (en choisissant $k$ parmi une puissance de 2 inférieure à $2^9$).

Comment obtenir par exemple ces images?

\begin{multicols}{3}
%\begin{figure}
\begin{center}
  \includegraphics[height=4cm]{lena_64}
\end{center}
\begin{center}
  \includegraphics[height=4cm]{lena_128}
\end{center}
\begin{center}
  \includegraphics[height=4cm]{lena_256}
\end{center}
%\end{figure}
\end{multicols}



\subsubsection{Quantification}

On peut également  réduire le nombre de niveaux de  gris en regroupant
par exemple tous les niveaux entre 0 et 63 en un seul niveau 0, puis 64
à 127 en 64, 128 à 191 en 128, 192 à 256 en 192.

Par exemple, avec 4, 8 puis 16 niveaux:





\begin{multicols}{3}
%\begin{figure}
\begin{center}
  \includegraphics[height=4cm]{lena_q4}
\end{center}
\begin{center}
  \includegraphics[height=4cm]{lena_q8}
\end{center}
\begin{center}
  \includegraphics[height=4cm]{lena_q16}
\end{center}
%\end{figure}
\end{multicols}







\subsubsection{Compression et SVD}

Tout  langage  orienté  calcul  comprend  des  fonctions  liées  à  la
décomposition  en  éléments  simples.  Par  exemple,  sur  Scilab,  la
fonction \verb+spec(mat)+ renvoie le spectre de la matrice \verb+mat+.

Scilab a aussi sa fonction  \verb+svd+ qui renvoie la décomposition en
valeurs singulières sous la forme du triplet U, S et V.

Commentez les résultats des commandes suivantes:

\begin{lstlisting}[caption={}]
gsort(sqrt(spec(lena*lena')))
[U,S,V] = svd(lena)
diag(S)
\end{lstlisting}

et également la figure suivante:

\begin{lstlisting}[caption={}]
plot(x,diag(S)/S(1,1))
\end{lstlisting}


En  vous  inspirant  des   commentaires  faits  dans  les  paragraphes
précédents sur la SVD, expliquez comment cette décomposition permet de
compresser une image. Quantifiez également le niveau de compression.

Voici trois niveaux de compression:


\begin{multicols}{3}
%\begin{figure}
\begin{center}
  \includegraphics[height=4cm]{lena_svd10}
\end{center}
\begin{center}
  \includegraphics[height=4cm]{lena_svd25}
\end{center}
\begin{center}
  \includegraphics[height=4cm]{lena_svd50}
\end{center}
%\end{figure}
\end{multicols}



\subsection{Enlever le bruit}

La transmission  d'informations a toujours posé  des problèmes: voleurs
de grands  chemins, poteaux télégraphiques sciés,  attaques d'indiens,
etc.

\setindent{0cm}
\begin{flushleft}
\begin{minipage}[t]{3cm}
\begin{figure}
  \includegraphics[width=3cm]{shannon}
\caption{C.E. \bsc{Shannon (1916-2001)}}
\end{figure}
\end{minipage}
\end{flushleft}
\setindent{\indentationcours}
\vspace{-6.35cm}
\begin{minipage}[t]{\linewidth}
\end{minipage}


Claude    Elwood    \textsc{Shannon}    (1916    -    2001)    est    un
mathématicien-inventeur-jongleur américain qui,  suite à son article \og
\textit{A mathematical theory of communications}\fg{} paru en 1948, est
considéré comme le fondateur de la
\textit{théorie  de  l'information}  qui  est  bien sûr  une  des  bases
de...l'\textit{informatique}.

L'idée est d'étudier et de quantifier l'\og information\fg{} émise et
reçue:  quelle est la  compression maximale  de données  digitales? Quel
débit choisir pour transmettre un message dans un canal \og bruité\fg{}?
Quel est le niveau de sûreté d'un chiffrement?...

La  théorie de  l'information  de \textsc{Shannon}  est  fondée sur  des
modèles probabilistes:  leur étude  est donc un  préalable à  l'étude de
problèmes   de  réseaux,   d'intelligence   artificielle,  de   systèmes
complexes. 

Par   exemple,   dans   le   schéma  de   communication   présenté   par
\textsc{Shannon}, la  source et le destinataire  d'une information étant
séparés, des perturbations peuvent créer une différence entre le message
émis et le message reçu.   Ces perturbations (bruit de fond thermique ou
accoustique, erreurs d'écriture ou de lecture, etc.) sont de nature
\textit{aléatoire}:  il n'est  pas possible  de prévoir  leur  effet. De
plus, le message  source est par nature \textit{imprévisible} du  point de vue du
destinataire (sinon, à quoi bon le transmettre). 

\textsc{Shannon}  a  également  emprunté   à  la  physique  la  notion
d'entropie   pour   mesurer   le  désordre   de   cette   transmission
d'information, cette même notion d'entropie  qui a inspiré notre héros
national, Cédric \textsc{Villani}... 


Mais revenons à Lena. Nous allons simuler une Lena bruitée:

\begin{lstlisting}[caption={}]
function B = bruit(m,ratio)
  n = length(m(1,:));
  B = m + 75*grand(n,n,'bin',1,ratio/100)
endfunction

grayplot(x,y,bruit(lena,20))
\end{lstlisting}


Il existe de nombreuses méthodes, certaines très élaborées, permettant
de minimiser  ce bruit. Une des  plus simples est de  remplacer chaque
pixel par la  moyenne de lui-même et de ses  8 autres voisins directs,
voire aussi ses  24 voisins directs et indirect, voire  plus, ou de la
médiane de  ces séries  de \og  cercles\fg{} concentriques  de pixels,
comme on  le voit  sur cette figure  (extraite du  site \texttt{Images
  des mathématiques}):



%\begin{figure}
\begin{center}
  \includegraphics[height=2.5cm]{mean_pix}
\end{center}
%\end{figure}

Créez  des fonctions  Scilab  qui feront  le  boulot. Vous  utiliserez
\texttt{mean(mat)} et \texttt{median(mat)} pour obtenir par exemple:






\begin{multicols}{3}
%\begin{figure}
\begin{center}
  \includegraphics[height=4cm]{lena_bruit}
\end{center}
\begin{center}
  \includegraphics[height=4cm]{lena_mean}
\end{center}
\begin{center}
  \includegraphics[height=4cm]{lena_median}
\end{center}
%\end{figure}
\end{multicols}

où l'on  trouve de gauche à  droite l'image bruitée originale  puis sa
correction par moyenne sur 25 pixels et par médiane sur 9 pixels.


\subsection{Détection de bords}


Pour  sélectionner  des objets  sur  une  image,  on peut  essayer  de
détecter leurs bords, i.e. des  zones de brusque changement de niveaux
de gris.

On  remplace alors  un pixel  par une  mesure des  écarts des  voisins
immédiats donnée par exemple par:

$$\sqrt{ \left(m_{i,j+1}-m_{i,j-1}\right)^2+ \left(m_{i+1,j}-m_{i-1,j}\right)^2
}$$

On obtient alors au choix:


\begin{multicols}{2}
%\begin{figure}
\begin{center}
  \includegraphics[height=4.5cm]{lena_contour}
\end{center}
\begin{center}
  \includegraphics[height=4.5cm]{lena_contour_blanc}
\end{center}
%\end{figure}
\end{multicols}



\section{MAPLE et les matrices}
\maple

\begin{exercice}[Centrale, Oral 2010]

    Si $n≥2$, on note $\vc =\nuple{\vc e}$ la base canonique de $ℝ^n$.

    Soit $f_n∈\mcal{L}(ℝ^n)$ tel que\enskip
    $f_n(\vc e_i) = \vc e_{i+1}$ si $i∈\llbracket1, n-1\rrbracket$
    et $f_n(\vc e_n) = \vc e_1$.
    \begin{enumerate}
        \item Écrire une procédure permettant d'obtenir la matrice $A_n$ de
            $f_n$ dans la base $\vc e$.
        \item Dans cette question, $n=6$.
            \begin{enumerate}
                \item Calculer le polynôme caractéristique de $A_6$.
                    Factoriser ce polynôme sur $ℝ[X]$.

                    On écrit $χ=\prod\limits_{1≤k≤p} R_k$
                    où les $R_k$ sont irréductibles dans $ℝ[X]$.
                \item Déterminer $\ker R_k(f_6)$ pour $k∈\llbracket1, p\rrbracket$.
                    Montrer que $ℝ^6=\ker R_1(f_6)⊕⋯⊕\ker R_p(f_6)$.
                \item Donner la matrice de $f_6$ dans une base adaptée à cette
                    décomposition.
            \end{enumerate}
        \item Si $n \geqslant 2$, calculer le polynôme caractéristique $χ$ de $A_n$. Le
            factoriser sur $ℝ[X]$.
    \end{enumerate}
  \end{exercice}
  


Voyons   quelques   commandes   utiles   issues   de   la   bibliothèque
\lstinline+LinearAlgebra+:

  \begin{lstlisting}[caption={}]
with(LinearAlgebra);
# a)
A := proc(n);
    M := Matrix(n);
    for i to n-1 do
        M[i+1, i] := 1;
        end do;
    M[1, n] := 1;
    return M
    end proc;

M := A(6);
I6 := IdentityMatrix(6);
latex(M);

# b)
#    i)
chi := CharacteristicPolynomial(M, x);
chi := factor(chi);
R := op(chi);

#    ii)
# Détermination des sev Ker(Rk(f))
F1 := NullSpace(M - I6);
F2 := NullSpace(M + I6);
F3 := NullSpace(M^2 + M + I6);
F4 := NullSpace(M^2 - M + I6);

P := <F1[1]|F2[1]|F3[1]|F3[2]|F4[1]|F4[2]>;
# Trois manières de vérifier que P est inversible :
Determinant(P);
NullSpace(P);
ColumnSpace(P);

#    iii)
# Matrice de f_6 dans un base adaptée :
P^(-1).M.P;

# c)
for n from 2 to 10 do
    CharacteristicPolynomial(A(n), x),\
    factor(CharacteristicPolynomial(A(n), x));
    end do;
    \end{lstlisting}



\begin{exercice}[Centrale, Oral 2010]

    \begin{enumerate}
        \item
            Démontrer que, si deux endomorphismes $u$ et $v$ d'un espace vectoriel $E$ commutent, alors, les sous-espaces
            propres de $u$ et l'image de $u$ sont stables par $v$.

            Dans les deux cas suivants :
            \[
            A = \left( \begin{array}{cccc}
                {20} & {12} & { - 4} & {12}  \\
                { - 4} & { - 3} & 9 & { - 5}  \\
                { - 4} & 1 & 5 & { - 5}  \\
                { - 8} & { - 10} & 6 & { - 2}  \\
            \end{array} \right)
            \quad \text{ et } \quad
            A = \left( \begin{array}{cccc}
                { - 12} & { - 16} & { - 8} & { - 4}  \\
                4 & {13} & 1 & { - 1}  \\
                4 & 5 & 9 & { - 1}  \\
                8 & {10} & 2 & 6  \\
            \end{array} \right)
            \]

        \item
            Préciser les matrices qui commutent avec $A$ (structure, dimension, base éventuelle).

        \item
            Etudier dans ${\mathcal{M}}_4 (\mathbb{R})$, puis dans ${\mathcal{M}}_4 (\mathbb{C})$, l'équation
            \[
            X^2  = A
            \]
            (nombre de solutions, un exemple de solution quand il y en a, somme et produit des solutions quand elles sont en nombre fini).
    \end{enumerate}
  \end{exercice}
  


\begin{lstlisting}[caption={}]
with(LinearAlgebra):
# a)
A := <<20|12|-4|12>, <-4|-3|9|-5>, <-4|1|5|-5>, <-8|-10|6|-2>>;
(vpA, P) := Eigenvectors(A);
P^(-1).A.P;

B := <<-12|-16|-8|-4>, <4|13|1|-1>, <4|5|9|-1>, <8|10|2|6>>;
(vpB, Q) := Eigenvectors(B);
Q^(-1).B.Q;

# c)
Determinant(A);
Determinant(B);
  \end{lstlisting}


\begin{exercice}[Centrale, Oral 2010]

    Soit $(\mcal{E})$ la surface d'équation $\displaystyle  x^2+y^2+4z^2=1$.
    \begin{enumerate}
        \item Représenter $(\mcal{E})$.

        \item Soit $R_t$ la rotation d'axe dirigé et orienté par
            $\vc u= \left(\begin{smallmatrix}
                4\\3\\0 \end{smallmatrix}\right)$
            et d'angle $t$.

            Soit $(x', y', z')$ l'image de $(x, y, z)$ par $R_t$.
            Exprimer $(x', y', z')$ en fonction de $(x, y, z)$.

        \item Déterminer une équation de $(\mcal{E}_t)$ l'image de $(\mcal{E})$
            par $R_t$.
    \end{enumerate}


Pour le 3), un petit Joker...

\begin{lstlisting}[caption={}]
# Avec LinearAlgebra

M := <x, y, z>;
Mt := Transpose(Rt).M;
eq := x^2 + y^2 + 4*z^2 - 1;
eqt := simplify(subs({x=Mt[1], y=Mt[2], z=Mt[3]}, eq));

# Avec linalg

M := matrix(3,1,[x, y, z]);
Mt := evalm(transpose(Rt) &* M);
eq := x^2 + y^2 + 4*z^2 - 1;
eqt := simplify(subs({x=Mt[1], y=Mt[2], z=Mt[3]}, eq));
\end{lstlisting}

\end{exercice}

\begin{exercice}[Centrale, écrit PC 2012]
  On suppose $a = 0$. Écrire en Maple ou en Mathematica une fonction $f$ de six variables telle que,
pour tous $a$, $b$, $c$, $d$, $e$ réels et tout $p$ entier naturel, $f(a, b, c, d, e, p)$ soit le terme d'ordre p, c'est-à-dire $u_p$ , de la
suite récurrente $(u_n)$ définie par

$$
\begin{cases}
  u_0=d\\
u_1=e\\
\forall n\in \bbn,\ au_{n+2}+bu_{n+1}+cu_n=0
\end{cases}
$$

\end{exercice}

\begin{exercice}[Centrale, écrit PC 2011]
On considère l'ensemble des suites $(x_k)$ de réels vérifiant:

$$x_0>0\quad \text{et }\quad x_{k+1}=x_k\cdot \frac{x_k^2+3}{3x_k^2+1}
\quad \text{pour }k\in\bbn$$

Écrire une instruction en Maple  ou Mathematica permettant de calculer
les trente premiers termes de la suite $(x_k )$ telle que $x_0 = 0,1$.

\end{exercice}



\begin{exercice}[Centrale, écrit MP 2011]

Pour $n \in \bbn^∗$, $A \in \SR_n(\bbr)$ et $i \in \llbracket 1; n\rrbracket$, on note $A^{(i)}$ la matrice carrée d’ordre $i$ extraite de A, constituée
par les $i$ premières lignes et les $i$ premières colonnes de A.

Écrire une procédure, dans le  langage Maple ou Mathematica, qui prend
en entrée une matrice 
$M \in \SR_n(\bbr)$ et qui, en utilisant la caractérisation 

$$
A \text{ est définie positive }
\Leftrightarrow
\forall i \in \llbracket 1; n\rrbracket, \det(A^{(i)} ) > 0
$$


 renvoie \og true \fg{} si la matrice M est définie positive,
et \og false \fg{} dans le cas contraire.
  
\end{exercice}



\includepdf[pages={1-1}]{centrale_oral_12}


\includepdf[pages={1-1}]{centrale_oral_12_2}

%%% Local Variables: 
%%% TeX-master: "PolyMapleMPstar_12_13"
%%% End: 
