
\chapterimage{io-monad}

\chapter{Types, polymorphisme, monades et algèbre}

\section{Déterminant d'une matrice carrée}


\subsection{Déterminant d'une matrice de taille 2}


\setindent{0cm}
\begin{flushleft}
\begin{minipage}[t]{3cm}
\begin{figure}
  \includegraphics[width=3cm]{leibniz2}
\caption{Godfried W. \bsc{Leibniz} \\ (1646-1716)}
\end{figure}
\end{minipage}
\end{flushleft}
\setindent{\indentationcours}
\vspace{-6.2cm}




En fait, vous savez depuis la Seconde que deux vecteurs du plan de coordonnées
$(a,b)$  et  $(a',b')$  sont  colinéaires  si, et  seulement  si,  leurs
coordonnées sont proportionnelles. Il  existe donc un réel $\lambda$ tel
que $a=\lambda a'$ et $b=\lambda b'$ et alors 

$$ab'-a'b=\lambda ab-\lambda ab=0$$

On appelle  déterminant de  la matrice $A=\begin{pmatrix}  a & a'\\  b &
  b'\\ \end{pmatrix}$ le nombre $ab'-a'b$ et on note~:


\renewcommand{\myunit}{0.7 cm}

\begin{center}
\begin{tikzpicture}[>=latex]

\tikzset{node style ge/.style={minimum size=\myunit}}


\node  at (-1.65,0) { $\det(A)=$};




% la matrice en blanc
\matrix (A) [matrix of math nodes,%
             nodes = {node style ge},%
             left delimiter  = |,%
             right delimiter = |%
            ] at (0,0)
{%
 a & a'   \\ 
  b &b'\\  
}; 

% les barres
\draw[gray] (A-1-1.north west) -- (A-2-2.center);
\draw[gray](A-2-2.center)--(A-1-2.center);
\draw[gray](A-1-2.center)--(A-2-1.south west);
\node at (2,0) { $=ab'-a'b$};



 \end{tikzpicture} 
 \end{center}


\subsection{Propriétés des déterminants}

Dans la  suite, $A=(a_{ij})$, $B=(b_{ij})$ sont des  matrices carrées de
taille $n$, $\lambda$ est un scalaire. $L_i$ est une ligne quelconque de
A.  On note $\Delta_{ij}$ le déterminant de la matrice obtenue à partir de A en \og
   barrant\fg{} la ligne $i$ et la colonne $j$.

\begin{propriete}
Soient $i$ et $j$ deux entiers compris entre 1 et $n$.

$$\det A= \displaystyle\boxsum_{k=1}^{n}a_{1k}\boxdot(-1)^{1+k}\boxdot\Delta_{1k}=\displaystyle\boxsum_{k=1}^{n}a_{ik}\boxdot(-1)^{i+k}\boxdot\Delta_{ik}=\displaystyle\boxsum_{k=1}^{n}a_{kj}\boxdot(-1)^{k+j}\boxdot\Delta_{kj}$$
\end{propriete}

On admettra cette  propriété. Voyons ce que cela  donne pour une matrice
de taille 3:













\renewcommand{\myunit}{0.35 cm}
\small

\begin{center}
\begin{tikzpicture}[>=latex]

\tikzset{node style ge/.style={minimum size=\myunit}}


\node  at (-2,0) { $(-1)^{(1+1)}$};




% la matrice en blanc
\matrix (A) [matrix of math nodes,%
             nodes = {node style ge},%
             color=white,%
            %
            ] at (0,0)
{%
 a_{11} & a_{12}  & a_{13}  \\ 
  a_{21} &a_{22}& a_{23} \\ 
  a_{31}& a_{32}  & a_{33}  \\ 
}; 

% les barres
\draw[blue] (A-1-1.south) -- (A-3-1.south);
\draw[blue] (A-1-1.east) -- (A-1-3.east);


% les blocs 
\fill[yellow,rounded corners=0.2mm] (A-2-2.north west)
rectangle (A-3-3.south east);
\draw[orange,rounded corners=0.2mm] (A-2-2.north west)
rectangle (A-3-3.south east);


\fill[cyan,rounded corners=0.2mm] (A-1-1.north west)
rectangle (A-1-1.south east);
\draw[blue,rounded corners=0.2mm] (A-1-1.north west)
rectangle (A-1-1.south east);

% les noms
\matrix (A) [matrix of math nodes,%
             nodes = {node style ge},%
             left delimiter  = |,%
             right delimiter = |] at (0,0)
{%
 a_{11} & a_{12}  & a_{13}  \\ 
  a_{21} &a_{22}& a_{23} \\ 
  a_{31}& a_{32}  & a_{33}  \\ 
}; 
% \end{tikzpicture} 
% \end{center}





\node at (2,0) { $+(-1)^{(2+1)}$};




% \begin{center}
% \begin{tikzpicture}[>=latex]

\tikzset{node style ge/.style={minimum size=\myunit}}

% la matrice en blanc
\matrix (A) [matrix of math nodes,%
             nodes = {node style ge},%
             color=white,%
            %
            ] at (4,0)
{%
 a_{11} & a_{12}  & a_{13}  \\ 
  a_{21} &a_{22}& a_{23} \\ 
  a_{31}& a_{32}  & a_{33}  \\ 
}; 

% les barres
\draw[blue] (A-2-1.south) -- (A-3-1.south);
\draw[blue] (A-2-1.north) -- (A-1-1.north);
\draw[blue] (A-2-1.east) -- (A-2-3.east);


% les blocs 
\fill[yellow,rounded corners=0.2mm] (A-1-2.north west)
rectangle (A-1-3.south east);
\draw[orange,rounded corners=0.2mm] (A-1-2.north west)
rectangle (A-1-3.south east);

\fill[yellow,rounded corners=0.2mm] (A-3-2.north west)
rectangle (A-3-3.south east);
\draw[orange,rounded corners=0.2mm] (A-3-2.north west)
rectangle (A-3-3.south east);

\fill[cyan,rounded corners=0.2mm] (A-2-1.north west)
rectangle (A-2-1.south east);
\draw[blue,rounded corners=0.2mm] (A-2-1.north west)
rectangle (A-2-1.south east);

% les noms
\matrix (A) [matrix of math nodes,%
             nodes = {node style ge},%
             left delimiter  = |,%
             right delimiter = |] at (4,0)
{%
 a_{11} & a_{12}  & a_{13}  \\ 
  a_{21} &a_{22}& a_{23} \\ 
  a_{31}& a_{32}  & a_{33}  \\ 
}; 
% \end{tikzpicture} 
% \end{center}

\node at (6.3,0) { $+(-1)^{(3+1)}$};


% \begin{center}
% \begin{tikzpicture}[>=latex]

\tikzset{node style ge/.style={minimum size=\myunit}}

% la matrice en blanc
\matrix (A) [matrix of math nodes,%
             nodes = {node style ge},%
             color=white,%
            %
            ] at (8.5,0)
{%
 a_{11} & a_{12}  & a_{13}  \\ 
  a_{21} &a_{22}& a_{23} \\ 
  a_{31}& a_{32}  & a_{33}  \\ 
}; 

% les barres
\draw[blue] (A-3-1.north) -- (A-1-1.north);
\draw[blue] (A-3-1.east) -- (A-3-3.east);


% les blocs 
\fill[yellow,rounded corners=0.2mm] (A-1-2.north west)
rectangle (A-2-3.south east);
\draw[orange,rounded corners=0.2mm] (A-1-2.north west)
rectangle (A-2-3.south east);


\fill[cyan,rounded corners=0.2mm] (A-3-1.north west)
rectangle (A-3-1.south east);
\draw[blue,rounded corners=0.2mm] (A-3-1.north west)
rectangle (A-3-1.south east);

% les noms
\matrix (A) [matrix of math nodes,%
             nodes = {node style ge},%
             left delimiter  = |,%
             right delimiter = |] at (8.5,0)
{%
 a_{11} & a_{12}  & a_{13}  \\ 
  a_{21} &a_{22}& a_{23} \\ 
  a_{31}& a_{32}  & a_{33}  \\ 
}; 
\end{tikzpicture} 
\end{center}


\normalsize

C'est-à-dire~:

$$\det(A)=
a_{11}\begin{vmatrix}a_{22}&a_{23}\\ 
       a_{32}& a_{33}\end{vmatrix}-
a_{21}\begin{vmatrix}a_{12}&a_{13}\\ 
       a_{32}& a_{33}\end{vmatrix}+
a_{31}\begin{vmatrix}a_{12}&a_{13}\\ 
       a_{22}& a_{23}\end{vmatrix}
$$


Par exemple, calculons le déterminant de $A=\begin{pmatrix}
1&2&3\\
2&1&-2\\
-2&3&1
\end{pmatrix}$



\small

\begin{center}
\begin{tikzpicture}[>=latex]

\tikzset{node style ge/.style={minimum size=\myunit}}


\node  at (-2,0) { $(-1)^{(1+1)}$};




% la matrice en blanc
\matrix (A) [matrix of math nodes,%
             nodes = {node style ge},%
             color=white,%
            %
            ] at (0,0)
{%
 1&2&3\\
2&1&-2\\
-2&3&1\\
}; 

% les barres
\draw[blue] (A-1-1.south) -- (A-3-1.south);
\draw[blue] (A-1-1.east) -- (A-1-3.east);


% les blocs 
\fill[yellow,rounded corners=0.2mm] (A-2-2.north west)
rectangle (A-3-3.south east);
\draw[orange,rounded corners=0.2mm] (A-2-2.north west)
rectangle (A-3-3.south east);


\fill[cyan,rounded corners=0.2mm] (A-1-1.north west)
rectangle (A-1-1.south east);
\draw[blue,rounded corners=0.2mm] (A-1-1.north west)
rectangle (A-1-1.south east);

% les noms
\matrix (A) [matrix of math nodes,%
             nodes = {node style ge},%
             left delimiter  = |,%
             right delimiter = |] at (0,0)
{%
1&2&3\\
2&1&-2\\
-2&3&1\\
}; 
% \end{tikzpicture} 
% \end{center}





\node at (2,0) { $+(-1)^{(2+1)}$};




% \begin{center}
% \begin{tikzpicture}[>=latex]

\tikzset{node style ge/.style={minimum size=\myunit}}

% la matrice en blanc
\matrix (A) [matrix of math nodes,%
             nodes = {node style ge},%
             color=white,%
            %
            ] at (4,0)
{%
1&2&3\\
2&1&-2\\
-2&3&1\\
}; 

% les barres
\draw[blue] (A-2-1.south) -- (A-3-1.south);
\draw[blue] (A-2-1.north) -- (A-1-1.north);
\draw[blue] (A-2-1.east) -- (A-2-3.east);


% les blocs 
\fill[yellow,rounded corners=0.2mm] (A-1-2.north west)
rectangle (A-1-3.south east);
\draw[orange,rounded corners=0.2mm] (A-1-2.north west)
rectangle (A-1-3.south east);

\fill[yellow,rounded corners=0.2mm] (A-3-2.north west)
rectangle (A-3-3.south east);
\draw[orange,rounded corners=0.2mm] (A-3-2.north west)
rectangle (A-3-3.south east);

\fill[cyan,rounded corners=0.2mm] (A-2-1.north west)
rectangle (A-2-1.south east);
\draw[blue,rounded corners=0.2mm] (A-2-1.north west)
rectangle (A-2-1.south east);

% les noms
\matrix (A) [matrix of math nodes,%
             nodes = {node style ge},%
             left delimiter  = |,%
             right delimiter = |] at (4,0)
{%
1&2&3\\
2&1&-2\\
-2&3&1\\
}; 
% \end{tikzpicture} 
% \end{center}

\node at (6.3,0) { $+(-1)^{(3+1)}$};


% \begin{center}
% \begin{tikzpicture}[>=latex]

\tikzset{node style ge/.style={minimum size=\myunit}}

% la matrice en blanc
\matrix (A) [matrix of math nodes,%
             nodes = {node style ge},%
             color=white,%
            %
            ] at (8.5,0)
{%
1&2&3\\
2&1&-2\\
-2&3&1\\
}; 

% les barres
\draw[blue] (A-3-1.north) -- (A-1-1.north);
\draw[blue] (A-3-1.east) -- (A-3-3.east);


% les blocs 
\fill[yellow,rounded corners=0.2mm] (A-1-2.north west)
rectangle (A-2-3.south east);
\draw[orange,rounded corners=0.2mm] (A-1-2.north west)
rectangle (A-2-3.south east);


\fill[cyan,rounded corners=0.2mm] (A-3-1.north west)
rectangle (A-3-1.south east);
\draw[blue,rounded corners=0.2mm] (A-3-1.north west)
rectangle (A-3-1.south east);

% les noms
\matrix (A) [matrix of math nodes,%
             nodes = {node style ge},%
             left delimiter  = |,%
             right delimiter = |] at (8.5,0)
{%
1&2&3\\
2&1&-2\\
-2&3&1\\
}; 
\end{tikzpicture} 
\end{center}

\normalsize

C'est-à-dire~:

\begin{align*}
\det(A)&=
1\times\begin{vmatrix}1&-2\\ 
       3& 1\end{vmatrix}-
2\times\begin{vmatrix}2&3\\ 
       3& 1\end{vmatrix}+
(-2)\times\begin{vmatrix}2&3\\ 
       1& -2\end{vmatrix}\\
&=(1+6)-2(2-9)-2(-4-3)\\
&=7+14+14\\
&=35
\end{align*}





\begin{lstlisting}[caption={}]
# det entier [[1;2;3];[2;1;-2];[-2;3;1]];;
- : int = 35
\end{lstlisting}



\begin{recherche}
  

Appliquez la même méthode pour calculer de tête le déterminant de la matrice suivante:

$$M=
\begin{pmatrix}
  1&17&32&49\\
  0&5&0&3\\
  0&39&2&-49\\
  0&7&0&1
\end{pmatrix}
$$

\end{recherche}





\begin{propriete}
Le  déterminant  d'une matrice  triangulaire  est  égal  au produit  des
éléments de sa diagonale principale.
\end{propriete}


Sans utiliser cette propriété, calculez de tête le déterminant de la matrice suivante:

$$M=
\begin{pmatrix}
2&32&45&87&987\\
0&-1&568&-542&712\\
0&0&5&741&-12\\
0&0&0&1&-789\\
0&0&0&0&-10
\end{pmatrix}
$$

Prouvez alors cette propriété dans le cas général.


\begin{propriete}\label{prop::swap}
Si la matrice B résulte de  l'échange de deux lignes ou de deux colonnes
d'une matrice A alors $\det B=-\det A$
\end{propriete}

On admettra cette propriété.


Calculez de tête le déterminant de la matrice suivante:

$$M=
\begin{pmatrix}
45&32&2&987&87\\
568&-1&0&712&-542\\
5&0&0&-12&741\\
0&0&0&-789&1\\
0&0&0&-10&0
\end{pmatrix}
$$

\begin{propriete}
  $$\det \left(\transp{A}\right)=\det A$$
\end{propriete}

Démontrez cette propriété. 

\begin{propriete}
Le déterminant d'une matrice comportant  une ligne (ou une colonne) de 0
est nul.
\end{propriete}

Démontrez cette propriété.


\begin{propriete}
Soit B  la matrice  obtenue à partir  de A en  effectuant $L_i\leftarrow
\lambda L_i$, alors $\det B = \lambda \det A$.
\end{propriete}

Démontrez cette propriété.


\begin{propriete}
$$\det (\lambda A) = \lambda^n\det A$$
\end{propriete}

Démontrez cette propriété.

Si A  est une matrice carrée d'ordre  5 dont le déterminant  vaut 4, que
vaut $\det(-2A)$?

Démontrez    que   le    déterminant   d'une    matrice   antisymétrique
(i.e. $\transp{A}=-A$) d'ordre 37 est nul.

\begin{propriete}
Le  déterminant  d'une  matrice  comportant deux  lignes  (ou  colonnes)
identiques est nul.
\end{propriete}


Démontrez cette propriété en utilisant la propriété\vref{prop::swap}.


\begin{propriete}
Le déterminant d'une matrice qui comporte deux lignes (ou colonnes) dont
l'une est multiple de l'autre est nul.
\end{propriete}

Démontrez cette propriété.




\begin{propriete}
Soit B  la matrice  obtenue à partir  de A en  effectuant $L_i\leftarrow
 L_i+\lambda L_j$, alors $\det B = \det A$.
\end{propriete}


Démontrez cette  propriété. Utilisez-la pour calculer  le déterminant de
la matrice suivante:

$$M=
\begin{pmatrix}
 1&3&2&-1\\
 -1&-2&2&6\\
 2&4&-3&2\\
 -2&-7&4&1
\end{pmatrix}
$$




Estimez le  nombre d'opérations nécessaires pour effectuer  le calcul du
déterminant  d'une matrice  de  taille $n$  en  utilisant uniquement  la
définition.

Faites de même lorsqu'on utilise l'algorithme Fang Tcheng %\begin{CJK}{UTF8}{song}  方程 \end{CJK} ^J.

En juin 2012, un ordinateur américain de la firme \textsc{Ibm} a établi un nouveau record
de vitesse de calcul de 16,32 péta-flops, soit $16,32\times 10^{16}$ opérations
mathématiques  à  virgule  flottante  par seconde.  En  comparaison,  un
ordinateur individuel standard a une puissance d'environ 100 giga-flops.
L'ordinateur utilisé  compte  $\numprint{ 1572864 }$  c\oe urs. 
Combien de temps  lui faudra-t-il environ pour effectuer  le calcul d'un
déterminant de taille 30 à l'aide de la définition? Avec l'algorithme Fang Tcheng %\begin{CJK}{UTF8}{song}  方程 \end{CJK} ^J
?

Il  est  à noter  que  le  test de  performance  servant  à classer  les
superordinateurs est le LINPACK: il mesure le temps mis pour résoudre un
système dense (sans zéros) de $n$ équations à $n$ inconnues en utilisant
l'algorithme Fang Tcheng %\begin{CJK}{UTF8}{song}  方程 \end{CJK} ^J.



\begin{propriete}
  Soit  A  et B  deux  matrices  carrées  de  même taille  alors  $$\det
  (A\times B)=\det A \cdot \det B$$
\end{propriete}




\section{Rotations}



\subsection{Approche intuitive}

Une    rotation    vectorielle    est   une    application    linéaire
particulière. Elle sert à décrire le mouvement qui correspond à ce que
vous  avez étudié  dans  le secondaire  dans le  plan  affine mais  le
généralise  en  dimension  quelconque   et  surtout,  les  objets  \og
déplacés\fg{} sont des  vecteurs, ce qui est un peu  plus abstrait que
les points ou les solides...

Plus  étrange encore,  nous ne  définirons les  rotations vectorielles
qu'à  la fin  de ce  chapitre. Nous  partirons d'abord  d'une approche
intuitive.


Nous travaillerons la plupart du temps dans $\bbr^3$, l'espace usuel de
dimension 3.  Une rotation sera  alors caractérisée  par un axe  et un
angle \og autour\fg{} duquel les vecteurs \og tournent\fg{}...




Dans un premier temps, nous étudierons une rotation d'axe $\ve{e_3}$.




\begin{figure}
\begin{center}
  \includegraphics[height=7cm]{rotation2}
\caption{Rotation d'un vecteur}\label{rot2}
\end{center}
\end{figure}





Nous  avons  vu   au  module  précédent  que   pour  caractériser  une
application linéaire (ici une rotation),
il suffit de déterminer les images de chaque vecteur de base.

On observe que ${e_3}$ est invariant
car il a la même direction que l'axe de rotation.

Il  suffit  donc  de  se  placer  dans le  plan  $\pav{e_1,e_2}$  et  de
déterminer les images des deux vecteurs de base:



\begin{figure}
\begin{center}
  \includegraphics[height=5cm]{rotation3}
\caption{Projection orthogonale de la rotation d'un vecteur}\label{rot3}
\end{center}
\end{figure}



Si vous avez quelques souvenirs trigonométriques de collège ou de lycée, vous ne serez
pas surpris par les résultats suivants~:

\begin{center}
\begin{align*}
\ve{e'_1}&=\cos\theta \ve{e_1}+\sin\theta \ve{e_2}\\
\ve{e'_2}&=\cos\pav{\theta+\frac{\pi}{2}}\ve{e_1}+\sin\pav{\theta+\frac{\pi}{2}}\ve{e_2}=-\sin\theta\ve{e_1}+\cos\theta \ve{e_2}\\
\end{align*}
\end{center}



Ce qui donne pour notre matrice, en se souvenant que $\ve{e'_3}=e_3$~:


$$ \begin{blockarray}{cccc}
     r\pav{\ve{e_1}}&  r\pav{\ve{e_2}}  &  r\pav{\ve{e_3}}  \\
        \begin{block}{(ccc)c}
        \cos\theta & -\sin\theta & 0   & \ve{e_{1}}  \\
        \sin\theta & \cos\theta  & 0   & \ve{e_{2}} \\
        0          &          0  & 1   & \ve{e_{3}} \\
        \end{block}
        \end{blockarray}
        $$

\subsection{Détermination de l'image d'un vecteur}


Soit  $\ve{u}$ un vecteur  de coordonnées  $(x,y,z)$. Cela  signifie que
$\ve{u}=x \ve{e_1}+y \ve{e_2}+z \ve{e_3}$.

Soit $r$ la rotation d'axe $\ve{e_3}$ et d'angle $\theta$.




On obtient alors que~:
\begin{center}
  \begin{align*}
    r(\ve{u})&=x r\pav{\ve{e_1}}+y r\pav{\ve{e_2}}+z r\pav{\ve{e_3}}\\
             &=x
             \pav{\cos(\theta)\ve{e_1}+\sin(\theta)\ve{e_2}}+y\pav{-\sin(\theta)\ve{e_1}+\cos(\theta)\ve{e_2}}+z
             \ve{e_3}\\
            &=(x\cos(\theta)-y\sin(\theta))\ve{e_1}+(x\sin(\theta)+y\cos(\theta))\ve{e_2}+z \ve{e_3}
  \end{align*}
\end{center}



Notons     $R$     la     matrice     de    $r$     dans     la     base
canonique
et  $U$ la  matrice colonne  des coordonnées  de $\ve{u}$  dans  la base
canonique.
Calculons $R\times U$~:


\begin{promat}
promat([[cos(theta),-sin(theta),0],[sin(theta),cos(theta),0],[0,0,1]],[[x],[y],[z]],[["R","U","R\\times U"]])
\end{promat}

Miracle~! $R\times U$ est en  fait la matrice colonne des coordonnées de
$r\pav{\ve{u}}$. Un problème de  transformation géométrique se règle par
de simples  multiplications : la  puissance des mathématiques  en marche
grâce à  une notion fondamentale, l'\textit{isomorphie}. On  trouve un \og
corps mathématiques\fg{} tout à fait  similaire à celui étudié mais dans
lequel il est plus aisé de travailler...


\begin{remarque}[Espaces isomorphes]
    
Ainsi,   il  existe  de   telles  \textit{isomorphismes}   entre  l'Espace
géométrique de dimension 3,  l'ensemble $\bbr^3$ de leurs coordonnées et
$\mathcal{M}_{3,1}(\bbr)$, l'ensemble des matrices à coefficients réels
ayant  trois lignes  et une  colonne. On  parlera souvent  de  l'un pour
l'autre.

   \end{remarque}




\subsection{Généralisation}



On peut alors admettre la généralisation suivante~:

\begin{propriete}[Expression matricielle de l'image d'un vecteur]\label{prop:mu}
    Soit M la matrice d'un déplacement dans une certaine base $\BC$ de
    $\bbr^3$.

Soit  $U$  la  matrice  colonne  des coordonnées  d'un  certain  vecteur
$\ve{u}$ dans cette base.

Alors la  matrice colonne des coordonnées de  $f\pav{\ve{u}}$ dans cette
base vaut~:
$${\rm mat}_{\BC}f\pav{\ve{u}}=M\times U$$
   \end{propriete}









\subsection{Matrice d'une composée de déplacements}


On  est  souvent  amené  à  décomposer  le  mouvement  d'un  système  en
mouvements   simples.   Pour  obtenir   les
coordonnées finales  à partir des initiales, il  faut ensuite recomposer
les mouvements.

Étudions le cas de la composée de deux déplacements.


\begin{remarque}[composée d'applications]
    On note  $\varphi  \circ  g$ l'application composée  de $g$ suivie  de $f$
    (attention à l'ordre~!).

Ainsi,  $\varphi   \circ  g(x)=f\big(g(x)\big)$~:~on  calcule $g(x)$  puis  on
calcule l'image par $f$ du vecteur obtenu.
   \end{remarque}


Considérons deux déplacements $f$ et $g$. Notons $M={\rm mat}_{\BC}f$, $N={\rm mat}_{\BC}g$ et 
$U={\rm mat}_{\BC}\ve{u}$. Or 
$$f\circ g\pav{\ve{u}}=f\Big(g\pav{\ve{u}}\Big)$$

donc, point de vue matrice:

$${\rm mat}_{\BC}f\circ g\pav{\ve{u}}=M\times (N\times   U)=(M\times N)\times U$$

On en déduit la propriété suivante~:



\begin{propriete}[Expression matricielle de la composée de deux applications linéaires]\label{prop:fog}
    Soit M la matrice d'un déplacement dans une certaine base $\BC$ de
    $\bbr^3$.

 Soit N la matrice d'un déplacement dans la même  base.



Alors~:
$${\rm mat}_{\BC}f\circ g=M\times N$$

En particulier, avec les notations habituelles, 


$${\rm mat}_{\BC}f\circ g\pav{\ve{u}}=(M\times N)\times U$$

   \end{propriete}




\section{Produit scalaire - Matrices orthogonales}
\subsection{Produit scalaire de deux vecteurs}


 Nous rappellerons juste la définition vue en Terminale~:


\begin{definition}[produit scalaire]
    Dans  un repère orthonormé  de $\bbr^3$,  deux vecteurs  $\ve{v}$ et
    $\ve{v'}$   ont   pour    coordonnées   respectives   $(x,y,z)$   et
    $(x',y',z')$. 

On appelle \textit{produit  scalaire} de $\ve{v}$ et $\ve{v'}$  et on note
$\psv{v}{v'}$ le nombre réel~:


$$\psv{v}{v'}=xx'+yy'+zz'$$

   \end{definition}


%\pagebreak

\subsection{Représentation matricielle}


Nous aurons  besoin pour  le reste de  notre étude  la \textit{transposée}
d'une matrice.

\begin{definition}[matrice transposée]
    On appelle transposée de la matrice $A$ et on note $\vphantom{}^{\rm
      t}A$
    la matrice obtenue en échangeant lignes et colonnes.
   \end{definition}


Par  exemple, si $A=\left(\begin{smallmatrix}1&2&3\\4&5&6\\7&8&9\\  \end{smallmatrix}\right)$, alors
$\vphantom{}^{\rm t}A=\left(\begin{smallmatrix}1&4&7\\2&5&8\\3&6&9\\ \end{smallmatrix}\right)$


Soit $\ve{v}$ et $\ve{v'}$ deux vecteurs de représentations matricielles
respectives $V$ et $V'$ dans une certaine base orthonormée.

Pour obtenir  matriciellement le produit scalaire des  deux vecteurs, on
effectue le produit $V\times\tr V'$.


% Par exemple~:


%  \begin{promat}
%  promat([[1,2,3]],[[4],[5],[6]],[[]])
%  \end{promat}

Nous aurons besoin enfin de cette importante définition~:

\begin{definition}[vecteurs orthogonaux]
    Deux  vecteurs sont orthogonaux  si, et  seulement si,  leur produit
    scalaire est nul.
   \end{definition}


%\subsection{Vecteurs orthogonaux}

\subsection{Norme d'un vecteur}

Il s'agit tout  simplement de la racine carrée  du produit scalaire d'un
vecteur par lui-même.

\begin{definition}[norme d'un vecteur]
    Soit $\ve{v}$  un vecteur.  On  appelle norme de $\ve{v}$  le nombre
    noté $\nov{v}$ et défini par~:

$$\nov{v}=\sqrt{\psv{v}{v}}$$
   \end{definition}



Ainsi,  si  $\ve{v}$  a   pour  coordonnées  $(x,y,z)$  dans  un  repère
orthonormé,  alors   $\nov{v}=\sqrt{x^2+y^2+z^2}$.  Cela  vous  rappelle
sûrement un vieux théorème de collège...




\begin{figure}
\begin{center}
  \includegraphics[width=0.7\linewidth]{figIni3d5}\caption{\label{norme}norme
    d'un vecteur}
\end{center}
\end{figure}




\subsection{Matrices orthogonales}

Nous allons enfin pouvoir revenir  à nos transformations de l'espace. Il
nous faut d'abord donner une nouvelle définition...


\begin{definition}[matrice orthogonale]
     Une  matrice  de $  \mathcal{M}_3(\bbr)$  est  orthogonale si,  et
     seulement si, elle est inversible et $A^{-1}=\tr A$
   \end{definition}

Voici qui  est bien pratique  : pour inverser  ce genre de  matrices, il
suffit de  les transposer. Il nous  reste à découvrir  qui sont vraiment
ces matrices...


\begin{theoreme}[caractérisation d'une matrice orthogonale]
    Une matrice de $ \mathcal{M}_3(\bbr)$ est orthogonale si, et seulement si, ses colonnes
    forment une base orthonormée de $\bbr^3$.
   \end{theoreme}



Une nouvelle  fois, nous ne démontrerons  pas ce théorème (  car nous ne
sommes pas vraiment mathématiciens... ). 

Utilisons-le  cependant  dès  maintenant.  Reprenons  la  matrice  d'une
rotation d'angle  $\theta$ et d'axe  $(Oz)$ et appelons $C_1$,  $C_2$ et
$C_3$ ses colonnes~:


$$ R=\begin{blockarray}{ccc}
     C_1& C_2  &  C_3  \\
        \begin{block}{(ccc)}
        \cos\theta & -\sin\theta & 0     \\
        \sin\theta & \cos\theta  & 0    \\
        0          &          0  & 1    \\
        \end{block}
        \end{blockarray}
        $$


Alors    la     norme    du    vecteur    associé     à    $C_1$    vaut
$\sqrt{\cos^2\theta+\sin^2\theta+0^2}=1$. Il en va de même pour $C_2$ et
$C_3$.

Formons à présent les produits scalaires~:

$$C_1\times \tr C_2=-\cos\theta\sin\theta+\sin\theta\cos\theta+0=0$$

Il en va de même pour $C_1$ et $C_3$ ainsi que pour $C_2$ et $C_3$.

La matrice de cette rotation est donc orthogonale.

\subsection{Quelques propriétés des matrices orthogonales}


Nous  allons  d'abord  donner,  une  nouvelle  fois  sans  preuve,  deux
propriétés importantes des déterminants~:

\begin{propriete}[déterminant d'une transposée et d'un produit ]
    $$\det \tr A=\det A$$

$$\det A\times B=\det A\cdot \det B$$
   \end{propriete}

cela va nous permettre d'établir le théorème suivant~:

\begin{theoreme}[déterminant d'une matrice orthogonale]
    Une matrice orthogonale a pour déterminant 1 ou $-1$
   \end{theoreme}

Allez, pour le plaisir, au moins une preuve dans ce cours....

On a d'une part $\det (A\times \tr A)=\det A\cdot\det \tr A=(\det A)^2$.

D'autre part $\det (A\times \tr A)=\det(I_3)=1$.

Finalement, $(\det A)^2=1$, c'est-à-dire $\det A=\pm1$.

Bon, ce n'était pas méchant...



\begin{theoreme}[Détermination de l'axe d'une rotation]
    Si A est une matrice orthogonale de $ \mathcal{M}_3(\bbr)$ différente de
    l'identité et  dont le  déterminant vaut 1,  alors A est  la matrice
    d'une rotation autour d'un axe.

La direction de l'axe est donnée en déterminant un vecteur invariant.
   \end{theoreme}

%\pagebreak

Voilà pour l'axe. En ce qui concerne l'angle, nous aurons besoin...d'une
nouvelle définition~!


\begin{definition}[trace d'une matrice carrée]
    La  trace  d'une matrice,  notée  ${\rm  tr}(A)$  est la  somme  des
    éléments de sa diagonale.
   \end{definition}

Par exemple, la trace de la matrice  $\begin{pmatrix}
        \cos\theta & -\sin\theta & 0     \\
        \sin\theta & \cos\theta  & 0    \\
        0          &          0  & 1    \\
        \end{pmatrix}$ est $2\cos\theta+1$.



Or il  existe une  belle propriété qui  dit que  la trace ne  change pas
lorsqu'on effectue des changements de base et donc...

\begin{theoreme}[détermination du cosinus de l'angle d'une rotation]
    Soit $r$  une rotation  de matrice A  dans une certaine  base. Alors
    l'angle $\theta$ de la rotation vérifie~:

$$\cos\theta=\frac{{\rm tr }(A)-1}{2}$$
   \end{theoreme}

ce qui est \og magique\fg{},  c'est qu'on va ainsi pouvoir déterminer la
rotation quelque soit la base.


\subsection{Produit vectoriel}

Nous  avons parlé du  produit scalaire  qui à  deux vecteurs  associe un
nombre réel (un scalaire).  Nous allons maintenant introduire un nouveau
produit qui à deux vecteurs associe un troisième vecteur.


\begin{definition}[produit vectoriel]
    Soit $\ve{v}$ et $\ve{v'}$ deux vecteurs de coordonnées $(x,y,z)$ et
    $(x',y',z')$ dans une base orthonormée directe.

On  appelle  produit vectoriel  de  $\ve{v}$  et  $\ve{v'}$ et  on  note
$\ve{v}\wedge \ve{v'}$ le vecteur dont les coordonnées sont~:

$$
\left(\begin{vmatrix}y & z\\y' & z'\end{vmatrix},-\begin{vmatrix}x & z\\x' & z'\end{vmatrix},\begin{vmatrix}x & y\\x' & y'\end{vmatrix}\right)
$$


   \end{definition}




On peut vérifier assez facilement que le \textit{vecteur} $v\wedge v'$ est
orthogonal à la fois à $\ve{v}$ et à $\ve{v'}$.





\begin{figure}
\begin{center}
  \includegraphics[height=8cm]{figIni3d6}\caption{\label{pv}produit vectoriel}
\end{center}
\end{figure}




On montre aussi le résultat important suivant~:

$$
\DecalNorme{\ve{v}\wedge \ve{v'}}=\nov{v}\times\nov{v'}\times\left|\sin \left(\ve{v},\ve{v'}\right)\right|
$$

\begin{remarque}[disposition pratique]
    Une méthode  peu orthodoxe  mais pratique de  retenir la  formule de
    calcul du produit  scalaire est de le disposer  comme un déterminant
    d'une matrice de taille 3~:

$$\ve{v}\wedge \ve{v'}=\begin{vmatrix}
\ve{e_1}&\ve{e_2}&\ve{e_3}\\
x&y&z\\
x'&y'&z'\\
\end{vmatrix}
$$

puis de développer par rapport à la première ligne~:

$$
\ve{v}\wedge \ve{v'}=\begin{vmatrix}y & z\\y' & z'\end{vmatrix}\ve{e_1}-\begin{vmatrix}x & z\\x' & z'\end{vmatrix}\ve{e_2}+\begin{vmatrix}x & y\\x' & y'\end{vmatrix}\ve{e_3}
$$
\end{remarque}

On peut donc montrer que $\ve{v}\wedge \ve{v'}=-\ve{v'}\wedge \ve{v}$


    \begin{remarque}[règle du tire-bouchon]
      Très  grossièrement, quand  on  \og tourne\fg{}  de $\ve{v}$  vers
      $\ve{v'}$, on \og monte le long \fg{} de $\ve{v}\wedge \ve{v'}$ et
      \sout{vis} vice-versa
      \end{remarque}
    

\subsection{Exemple de détermination d'une rotation}


On  connaît la  matrice  d'une certaine  application  dans une  certaine
base~:


$$
A=\begin{pmatrix}
\frac{2}{3} & -\frac{1}{3} & -\frac{2}{3} \\
\frac{2}{3} & \frac{2}{3} & \frac{1}{3} \\
\frac{1}{3} & -\frac{2}{3} & \frac{2}{3}
\end{pmatrix}
$$

\begin{enumerate}
\item Vérifiez que la matrice est orthogonale.

\item Vérifiez que $\det(A)=1$~:~il s'agit donc d'une rotation.

\item Pour déterminer l'axe, on va chercher un vecteur de représentation
  matricielle  $V=\begin{pmatrix}x\\y\\z\end{pmatrix}$ invariant  par la
  rotation donc  tel que  $A\times V-V$ soit  égal à la  matrice colonne
  nulle. On obtient après simplification (faites le calcul...)~:

$$
\begin{pmatrix}
\frac{-x-y-2 z}{3} \\
\frac{2 x-y+z}{3} \\
\frac{x-2 y-z}{3}
\end{pmatrix}=\begin{pmatrix}0\\0\\0\end{pmatrix}
$$


cela revient à résoudre le système~:


$$
\bsys
\frac{-x-y-2 z}{3}=0 \\
\frac{2 x-y+z}{3}=0 \\
\frac{x-2 y-z}{3}=0
\esys
$$
 

Ce système admet une infinité  de solutions car en additionnant les deux
premières lignes on obtient la troisième. On choisit une des inconnues
comme paramètre  (par exemple  $z$) et on  résout le  système résultant
ayant maintenant deux équations et deux inconnues.

On obtient $x=-z$ et $y=-z$.

L'axe  de la  rotation est  donc la  droite vectorielle  dirigée  par le
vecteur $\ve{v}$ de coordonnées $(1,1,-1)$.


\item    Pour    l'angle,    on    sait    que    $\cos\theta=\frac{{\rm
      tr }(A)-1}{2}=\frac{2-1}{2}=\frac{1}{2}$.

On obtient donc  que $\theta=\pm \frac{\pi}{3}$ à un  multiple de $2\pi$
près.



Pour  déterminer le  signe, il  nous faut  un  autre renseignement~:~nous
allons utiliser le produit vectoriel. Nous allons déterminer un vecteur $\ve{n}$
orthogonal  à $\ve{v}$.  Il faut  donc  s'arranger pour  que le  produit
scalaire de $\ve{n}$ et $\ve{v}$ soit nul. 

Si   nous   posons  $(x,y,z)$   les   coordonnées   de  $\ve{n}$   alors
$\psv{v}{n}=x+y-z$.

Nous pouvons donc choisir $(1,0,1)$ pour les coordonnées de $\ve{n}$.

\medskip

Déterminons à présent l'image de $\ve{n}$ par la rotation~:

\begin{promat}
promat([[2/3,-1/3,-2/3],[2/3,2/3,1/3],[1/3,-2/3,2/3]],[[1],[0],[1]],[["A","N"]])
\end{promat}

Donc $r\pav{\ve{n}}$ a pour coordonnées $(0,1,1)$.

Calculons   à   présent   le   produit   vectoriel   de   $\ve{n}$   par
$r\pav{\ve{n}}$~:


$$\ve{n}\wedge r\pav{\ve{n}}=\begin{vmatrix}
\ve{e_1}&\ve{e_2}&\ve{e_3}\\
1&0&1\\

0&1&1\\
\end{vmatrix}=-\ve{e_1}-\ve{e_2}+\ve{e_3}=-\ve{v}$$




Si  nous  en  avions  le  loisir, nous  pourrions  montrer  le  résultat
suivant~:

\begin{propriete}[rotation et produit vectoriel]
    Si l'axe d'une rotation $r$ est dirigé par un vecteur $\ve{v}$ et si
    $\ve{n}$ est un vecteur du plan orthogonal à $\ve{v}$ alors 
$$\ve{n}\wedge r\pav{\ve{n}}=\frac{\nov{n}\times\DecalNorme{r\pav{\ve{n}}}}{\nov{v}}\times\sin(\theta)\cdot\ve{v}$$
   \end{propriete}

Ainsi,                                      $-\ve{v}=\frac{\sqrt{2}\times
  \sqrt{2}}{\sqrt{3}}\times\sin(\theta)\cdot \ve{v}$.
Nous    en   déduisons    que    $\sin(\theta)=-\frac{\sqrt{3}}{2}$   or
$\cos(\theta)=\frac{1}{2}$.

Finalement, A est la matrice dans la base canonique de la rotation d'axe
dirigé par $\ve{v}$ de coordonnées $(1,1,-1)$ et d'angle $-\frac{\pi}{3}$.



\begin{figure}
\begin{center}
  \includegraphics[height=8cm]{figIni3d7}\caption{\label{rotA}rotation
    de matrice A}
\end{center}
\end{figure}


\end{enumerate}




\section{Changement de base}

\subsection{Le problème}

On connaît la matrice A d'une rotation relativement à une certaine base,
généralement une base orthonormée dont un des vecteurs dirige l'axe de la
rotation.

On  voudrait   alors  connaître  la  matrice  de   cette  rotation  mais
relativement à une autre base...

\subsection{Matrice de passage}


\begin{definition}[matrice de passage]
    Soit $\BC$ et  $\BC\,'$ deux bases de $\bbr^3$.  On appelle matrice de
    passage  de  $\BC$  à  $\BC\,'$   et  on  note  
    $\PC_{\BC,\BC\,'}$  la  matrice de  \mn  dont  les  colonnes sont  les
    vecteurs de $\BC\,'$ exprimés dans $\BC$~:


$$ \begin{blockarray}{cccc}
     \ve{e_1'}&  \ve{e_2'}  & \ve{e_3'}  \\
        \begin{block}{(ccc)c}
        \times & \times & \times   & \ve{e_{1}}  \\
        \times & \times & \times   & \ve{e_{2}} \\
        \times & \times & \times   & \ve{e_{3}} \\
        \end{block}
        \end{blockarray}
        $$

{\bf À  noter}~: si  les bases sont  \textit{orthonormées} alors les  matrices de
passages seront \textit{orthogonales}.

   \end{definition}



Nous retiendrons alors la propriété importante suivante~:


 \begin{propriete}[matrice de passage inverse]
$$\PC_{\BC\,',\BC}=\PC_{\BC,\BC\,'}^{-1}$$      

En particulier, si les bases sont \textit{orthonormées}~:


$$\PC_{\BC\,',\BC}=\tr \PC_{\BC,\BC\,'}$$ 
\end{propriete}


\subsection{Changement de coordonnées d'un vecteur}


Soit $\ve{v}$  un vecteur  dont les coordonnées  dans une  certaine base
$\BC$ sont $(x,y,z)$.  

On peut donc associer une matrice  colonne V à ce
vecteur~:
$V=\mat \ve{v}=\coordpp{x}{y}{z}$


{\bf ATTENTION~! 
    À  un même  vecteur  correspond une  infinité  de vecteurs  colonnes
    différents selon la base choisie~!
}

Notons maintenant $V'=\mat[\,'] \ve{v}$ alors~:

\begin{propriete}[changement de coordonnées d'un vecteur]
    $$V=P_{\BC,\BC\,'}\times V'$$
   \end{propriete}

Notez bien que cette formule donne les anciennes coordonnées en fonction
des nouvelles~!

\begin{remarque}[]
    On peut en fait retenir que les \og primes\fg{} sont du côté des \og primes\fg{}.

   \end{remarque}


Cette formule n'est donc pas  pratique sous cette forme mais sachant que
$V=\PC_{\BC,\BC\,'}V'$, alors $$V'=\PC_{\BC,\BC\,'}^{-1}\times V$$

et  comme   nous  travaillerons   dans  des  bases   orthonormées,  nous
utiliserons le plus souvent~:

 $$V'=\tr\PC_{\BC,\BC\,'}\times V$$


\subsection{Relation de Chasles}


Considérons 3 bases. Avec des notations standard on a
 $$V''=\PC_{\BC\,'',\BC}\times V$$

Mais on a aussi $V'=\PC_{\BC\,',\BC}\times V$ et $V''=\PC_{\BC\,'',\BC\,'}\times V'$ donc 

$$V''=\PC_{\BC\,'',\BC\,'}\times \PC_{\BC\,',\BC}\times V$$

Finalement~:
\begin{propriete}[relation de Chasles]
$$\PC_{\BC\,'',\BC}=\PC_{\BC\,'',\BC\,'}\times \PC_{\BC\,',\BC}$$
\end{propriete}


\subsection{Rotation et changement de base}


Soit A la matrice d'une rotation $r$ dans une certaine base. Notons toujours
$V=\mat  \ve{v}$  et  $W=\mat   r\pav{\ve{v}}$  et  leurs  pendants  \og
primés\fg{}.


Nous  avons vu  que  $W=A\times V$.  D'après  ce que  nous  avons vu  au
paragraphe précédent, cela donne~:

$$\PC_{\BC,\BC\,'}\times W'=A\times \PC_{\BC,\BC\,'}\times V'$$

et donc 


$$ W'=\left(\,\tr\PC_{\BC,\BC\,'}\times A\times \PC_{\BC,\BC\,'}\right)\times V'$$


On en déduit que $A'=\tr\PC_{\BC,\BC\,'}\times A\times \PC_{\BC,\BC\,'}$


\begin{theoreme}[transformation orthogonale et changement de base]
    $$\mat[\,']f=\tr\PC_{\BC,\BC\,'}\times \mat f\times \PC_{\BC,\BC\,'} $$
   \end{theoreme}

Il sera  pratique de  retenir le schéma  suivant (attention au  sens des
flèches)~:



\begin{remarque}[schéma du changement de base]
    
$$
% \begin{CD}
% \psovalbox{\BC}\ \bbr^3 @>{f}>{\psframebox*[fillcolor=yellow]{\ds A}}> \bbr^3\ \psovalbox{\BC}\\
% @V{\psdiabox*[fillcolor=yellow]{\PC_{\BC,\BC\,'}}}VV @VV{\psdiabox*[fillcolor=yellow]{\PC_{\BC,\BC\,'}}}V\\
%  \psovalbox{\BC\,'}\ \bbr^3 @>{f}>{\ds\textcolor{blue}{A'}}> \bbr^3\ \psovalbox{\BC\,'}\\
% \end{CD}
\begin{CD}
\BC\ \bbr^3 @>{f}>{{\ds A}}> \bbr^3\ \BC\\
@V{{\PC_{\BC,\BC\,'}}
}VV @VV{{\PC_{\BC,\BC\,'}}}V\\
 {\BC\,'}\ \bbr^3 @>{f}>{\ds\textcolor{blue}{A'}}> \bbr^3\ {\BC\,'}\\
\end{CD}
$$
   \end{remarque}








\section{Projection orthogonale} 


\subsection{Projection orthogonale sur une droite orthogonale}
La figure clé qui guidera notre intuition est celle-ci:

\begin{center}
\begin{tikzpicture}

\draw[->,very thick] (0,0) --node[above=2pt] {$\pi_v(u)$} (3,0);
\draw[->,dashed,gray!70] (0,0) --node[below=2pt,gray!70] {$v$} (7,0);
\draw[->,very thick,blue] (3,0) --node[right=2pt,blue] {$u-\pi_v(u)$} (3,2);
\draw[->,very thick, gray] (0,0) --node[above=2pt,gray] {$u$} (3,2);

\end{tikzpicture}
\end{center}

Elle correspond à la définition suivante:

\begin{definition}[projection orthogonale sur une droite vectorielle]
  La  projection  orthogonale de  $u$  sur  $v$  est le  vecteur  noté
  $\pi_v(u)$ défini par:

$$
\pi_v(u)= \frac{\langle  u,v\rangle}{||v||^2} v
$$
\end{definition}

Nous démontrerons en exercice que:

\begin{propriete}\label{prop::upiu}
  Le vecteur $u-\pi_v(u)$ est orthogonal à $v$.
\end{propriete}


et également:

\begin{propriete}[Inégalité de Cauchy-Schwarz]\label{prop::cs}
$$
\left|\langle u,v\rangle\right| \leqslant ||u||\cdot ||v||
$$
\end{propriete}

ce  qui permet  d'obtenir la  confirmation de  ce qui  se voit  sur le
dessin:


\begin{propriete}\label{prop::piinfu}
  $$
||\pi_v(u) \leqslant ||u||
$$
\end{propriete}

\subsection{Projection orthogonales sur un sev}


On  peut  montrer que  les  composantes  d'un  vecteur dans  une  base
orthogonale $(e_1,e_2,...,e_n)$ est:

\begin{eqnarray*}
u&=& \pi_{e_1}e_1+\pi_{e_2}e_2+\cdots+\pi_{e_n}e_n\\
&=&\frac{\langle       u,e_1\rangle}{||e_1||^2}      e_1+\frac{\langle
  u,e_2\rangle}{||e_2||^2} e_2+\cdots \frac{\langle  u,e_n\rangle}{||e_n||^2} e_n
\end{eqnarray*}

et si la base est orthonormale:

$$
u = \rangle u,e_1\langle e_1+\rangle u,e_2\langle e_2+\cdots \rangle u,e_n\langle e_n
$$

On admettra alors le théorème suivant:


\begin{theoreme}
  Soit W un  sev de V et $(e_1,e_2,\cdots,e_n)$  une base orthonormale
  de  W. Alors  tout vecteur  $u$  de V  peut s'écrire  sous la  forme
  $u=w_1+w_2$  avec  $w_1$ un  vecteur  de  $W$  et $w_2$  un  vecteur
  orthogonal à W (i.e. orthogonal à tous les vecteurs de base de W).
Alors:

$$
w_1=\rangle u,e_1\langle e_1+\rangle u,e_2\langle e_2+\cdots \rangle u,e_n\langle e_n
$$

On appelle $w_1$ la projection orthogonale de $u$ sur W.

\end{theoreme}


\subsection{Procédé d'orthonormalisation de Gram-Schmidt}

Nous  aurons besoin  pour compresser  nos  images en  niveaux de  gris
d'orthonormaliser  une base  donnée.  Nous admettrons  que le  procédé
suivant répond à notre problème.

On part  d'une base $(e_1,...,e_n)$  quelconque et on veut  en déduire
une base $(u_1,...,u_n)$ orthonormale. Il suffit de prendre:

\begin{eqnarray*}
  u_1&=& \frac{w_1}{||w_1||} , \text{ où } w_1=e_1\\
  u_2&=&  \frac{w_2}{||w_2||} ,  \text{  où  } w_2=e_2-  \frac{\langle
    e_2,w_1\rangle}{||w_1||^2} w_1\\
  &\vdots& \\
  u_n&=& \frac{w_n}{||w_n||} ,  \text{  où  } w_n=e_n -\frac{\langle e_n,w_1\rangle}{||w_1||^2} w_1-\frac{\langle e_n,w_2\rangle}{||w_1||^2} w_2-\cdots-\frac{\langle e_n,w_{n-1}\rangle}{||w_{n-1}||^2} w_{n-1}
\end{eqnarray*}


Les utilisations de ce procédé  sont très nombreuses dans des domaines
très divers.


\section{Décomposition en valeurs singulières (SVD)}

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. Nous
passerons  outre  la  plupart  des  démonstrations  mais,  en  bon(ne)
informaticien(ne) nous  essaierons de comprendre le  mécanisme général
pour   mieux   appréhender  son   utilisation   \og   dans  la   vraie
vie\fg{}.  C'est  également  une  nouvelle preuve  des  liens  étroits
existants entre informatique et mathématique...

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).


\subsection{Valeurs et vecteurs propres}

\subsubsection{Généralités}

Un  \textit{vecteur   propre} $v$ (\textit{eigenvector} en anglais de
spécialité ;-)) d'un  endomorphisme  $f$   d'un  $\bbk$-espace
vectoriel E est un vecteur non nul satisfaisant l'équation:

$$f(v)=\lambda v$$

avec  $\lambda$ un  élément  de $\bbk$  appelé \textit{valeur  propre}
(\textit{eigenvalue}) associée au vecteur propre $v$.

Cela se traduit matriciellement dans une certaine base $\BC$. Si A est
la matrice de $f$ dans $\BC$ et $V$ le vecteur colonne des coordonnées
de $v$ dans $\BC$, on a:

$$A\times V = \lambda \cdot V$$

Comme $f$ est un endomorphisme, A est une matrice carrée.

\subsubsection{Un exemple}

Considérons par exemple une matrice $A=
\begin{pmatrix}
  2&1\\
  1&2
\end{pmatrix}
$.

Posons $V=
\begin{pmatrix}
  x\\
  y
\end{pmatrix}
$.

On recherche donc $x$ et $y$ ainsi qu'un scalaire $\lambda$ vérifiant:

$$\begin{pmatrix}
  2&1\\
  1&2
\end{pmatrix}\times \begin{pmatrix}
  x\\
  y
\end{pmatrix} =\lambda\cdot \begin{pmatrix}
  x\\
  y
\end{pmatrix}$$

C'est un simple petit système linéaire:


$$
(S_\lambda):
\begin{cases}
  2x+y=\lambda x\\
  x+2y=\lambda y
\end{cases}
$$

qui est équivalent au système:

$$
(S_\lambda)\Leftrightarrow
\begin{cases}
  (2-\lambda)x+y=0\\
  x+(2-\lambda)y=0
\end{cases}
$$

Ce système  admet au  moins une solution  (laquelle?...) mais  cela ne
nous arrange pas. Pour  que $v$ soit un vecteur propre,  il faut et il
suffit que le déterminant de ce système soit nul (pourquoi?). Or:


$$
\begin{vmatrix}
  (2-\lambda) & 1\\
  1& (2-\lambda)
\end{vmatrix}
=0 \Leftrightarrow \lambda^2-4\lambda+3=0
$$

Cette équation  admet exactement deux solutions,  3 et 1 qui  sont les
valeurs propres de A.

Il  reste  à  déterminer   des  vecteurs  propres  associés  (sont-ils
uniques?).

Remplaçons pour cela $\lambda$ par 3 dans l'équation.

Le système devient:




$$
(S_3)\Leftrightarrow
\begin{cases}
  -x + y =0\\
  x - y=0 
\end{cases} \Leftrightarrow x=y
$$

Un vecteur propre de A associé à $3$ est donc par exemple $(1,1)$ mais
également tous ses multiples.

Le \textit{sous-espace propre} $E_3$ associé à 3 (c'est-à-dire l'ensemble
des vecteurs propres associé à $\lambda$) est donc ${\rm Vect}
\bigl\{ (1,1) \bigr\}$.

On trouve de même que $E_1={\rm Vect} \bigl\{ (1,-1) \bigr\}$.

Si la  somme des dimensions  des sous-espaces  propres est égale  à la
dimension    de   l'espace    E,   alors    on   dit    que   A    est
\textsc{diagonalisable} et peut s'écrire sous la forme:

$$A = P\times \Delta\times P^{-1}$$

avec P la matrice de passage de $\BC$ vers la base de vecteurs propres
et $\Delta$  une matrice diagonales  dont les éléments  diagonaux sont
les valeurs propres de A.

Il est  à noter que toute  matrice n'est pas diagonalisable.  C'est un
problème important  qui rend  de nombreux  services dans  des domaines
très variés quand il est résolu.

\subsection{Décomposition en valeurs singulières}

\subsubsection{Valeurs et vecteurs singuliers}


Nous   venons   d'étudier   les   éléments   propres   d'une   matrice
\textit{carrée}. Les  éléments singuliers  en sont  une généralisation
aux matrices de taille quelconque.

Soit  A  la  matrice  d'une  application linéaire  d'un  espace  E  de
dimension $m$ dans un espace F de dimension $n$.
Alors A est rectangulaire. 

Un réel \textit{positif} $\sigma$ est une valeur singulière associée à
A si, et seulement  si, il existe un vecteur orthonormé  $u$ dans E et
un vecteur orthonormé $v$ dans F tels que (avec les notations usuelles):

$$A\times V  =\sigma\cdot U \qquad \text{et}  \qquad \tr A \times  U =
\sigma \cdot V$$

On dit que $u$ ($v$) est un vecteur singulier à gauche (à droite) pour $\sigma$.

\subsubsection{La SVD}

Un beau  théorème 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.

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.


Cependant,  la   décomposition  en  éléments  singuliers   utilise  la
décomposition en éléments propres comme nous le verrons en exercice



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 une  application importante  en
informatique comme nous le verrons en exercice...






\vfill

\eject


\haskell

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\modeexercice
\section{RECHERCHES}

\subsection{Types}


\begin{exercice}
  Quelle est la signature et le rôle de cette fonction:

\begin{haskellcode}
mystere f s []     = s
mystere f s (x:xs) = f x (mystere f s xs)
\end{haskellcode}

Que donne:

\begin{haskellcode}
mystere (:) " Papa" "Maman"
\end{haskellcode}

Que pensez-vous de:

\begin{haskellcode}
foldl (:) " Papa" "Maman"
\end{haskellcode}


Comment obtenir \Colorbox{blue!10}{\lstinline{<polyline points="1,2 3,4 5,6"/>}} sous
forme de chaîne de caractères à partir de 
\Colorbox{blue!10}{\lstinline{[(1,2),     (3,4),    (5,6)]}}     en    utilisant
\Colorbox{blue!10}{\lstinline{mystere}}? En utilisant \Colorbox{blue!10}{\lstinline{foldl}}?



\end{exercice}


\begin{exercice}
Encore une fonction mystère:

\begin{haskellcode}
mystere' f p [] = []
mystere' f p (x:xs)
  | p x       = f x : mystere' f p xs
  | otherwise = [] 
\end{haskellcode}


Signature? Résultat de:

\begin{haskellcode}
mystere' (2+) (>7) [8,12,7,13,16]  
\end{haskellcode}

Comparez avec:

\begin{haskellcode}
mystere'' f p = foldr (\x acc -> if p x then (f x) : acc else acc) []  
\end{haskellcode}



 
\end{exercice}



\begin{exercice}
  Donnez deux \textit{one liners} qui concatènent deux listes.
  La  première  utilisera  \Colorbox{blue!10}{\lstinline{foldr}} et  la  seconde
  \Colorbox{blue!10}{\lstinline{foldl}} 
 
  Comparez leur complexité. Pouvez-vous améliorer la moins efficace?
\end{exercice}

\begin{exercice}
  \begin{enumerate}
  \item Créez un \textit{one liner} qui additionne les éléments d'une paire dans une liste:
\begin{haskellcode}
> ajoutePaires [(1,2), (3,4)]   
[3,7]
\end{haskellcode}

\item Définissez un \textit{one liner} \Colorbox{blue!10}{\lstinline{extremList}} qui,
  selon le premier argument, renvoie le maximum ou le minimum d'une liste. Votre
  définition doit s'écrire avec une commande de 6 caractères. Jeu du pendu:

\begin{haskellcode}
extremList = ......
\end{haskellcode}



\item Définissez un \textit{one liner} qui additionne les éléments d'une liste de paires
  par composante:

\begin{haskellcode}
> ajouteParComposante [(1,2), (3,4), (5,6)]
(9,12)
\end{haskellcode}

\item Un caractère a une représentation unicode 32 bits en Haskell. C'est un peu
  beaucoup pour Joe le crapaud qui n'a  pas un gros cerveau. Il veut communiquer
  secrètement avec  Josette la  reinette sans  se faire repérer  par la  NSA. Il
  augmente donc  chaque code  des caractères  de son message  d'une unité  en se
  limitant  aux  caractères   de  0  à  255.  Fournissez  à   Joe  une  fonction
  \Colorbox{blue!10}{\lstinline{chiffre}}    et   à    Josette   une    fonction
  \Colorbox{blue!10}{\lstinline{dechiffre}}.

  Vous pourrez  utiliser les  fonctions \Colorbox{blue!10}{\lstinline{fromEnum}}
  et  \Colorbox{blue!10}{\lstinline{toEnum}}  qui  permettent  de  convertir  un
  entier en caractère et vice-versa. 

\item Vous voulez créer  une fonction qui prend une somme  d'argent et une liste
  de montants  de pièces et renvoie  la liste des nombres  de pièces nécessaires
  pour rendre la monnaie. Vous utiliserez un algorithme glouton.

  \end{enumerate}
\end{exercice}

\begin{exercice}
  On  définit un  type \Colorbox{blue!10}{\lstinline{Naturel}}  pour représenter
  les nombres naturels de la sorte: 

\begin{haskellcode}
type Naturel a = (a -> a) -> (a -> a)
\end{haskellcode}

Le naturel $n$ est donc représenté par \og applique l'argument $n$ fois\fg{}.
On définit par exemple les fonctions suivantes:

\begin{haskellcode}
zero f  = id
un f    = f
deux f  = f.f
trois f = f.f.f
\end{haskellcode}

\begin{enumerate}
\item Quel est le type de \Colorbox{blue!10}{\lstinline{zero, un, deux, trois}}? 
\item Quel
est le rôle de \Colorbox{blue!10}{\lstinline{f}} dans les définitions précédentes?

On peut visualiser un entier avec la fonction:

\begin{haskellcode}
ent n = n (+1) 0  
\end{haskellcode}



\item Quelle est la signature de \Colorbox{blue!10}{\lstinline{ent}}? 
\item Donnez la trace de \Colorbox{blue!10}{\lstinline{ent trois}}.
\item Définissez les fonctions suivantes:

\begin{haskellcode}
suc :: Naturel a -> Naturel a
-- renvoie la representation du successeur de n

plus :: Naturel a -> Naturel a -> Naturel a
-- renvoie la representation de la somme des deux premiers arguments

fois :: Naturel a -> Naturel a -> Naturel a
-- renvoie la representation du produit des deux premiers arguments
\end{haskellcode}


\end{enumerate}






\end{exercice}




\begin{exercice}
  On considère les types et classes suivants:

\begin{haskellcode}
data Vecteur = Vec Float Float

data Point = Point Float Float

data Figure = Ligne Point Point | Cercle Point Float 

class Bougeable a where
  bouge  :: Vecteur -> a -> a -- translation  
  symX   :: a -> a -- symetrie par rapport a axe abscisses
  symY   :: a -> a -- symetrie par rapport a axe ordonnees
  rot180 :: a -> a -- rotation de 180 deg par rapport a origine
\end{haskellcode}

Faites de Point et Figure une instance de Bougeable.

Si a est Bougeable, faites de [a] une instance de Bougeable.


\end{exercice}


\begin{exercice}[bind]

Rappel:

\begin{haskellcode}
m >>= f =
   do
     res <- m
     f res  
\end{haskellcode}

et 

\begin{haskellcode}
action1 >> action2 =
   do
     action1
     action2
\end{haskellcode}

Quelle est le type de \Colorbox{blue!10}{\lstinline{<-}}

Le type de \Colorbox{blue!10}{\lstinline{>>=}} est:

\begin{haskellcode}
λ> :t (>>=)
(>>=) :: Monad m => m a -> (a -> m b) -> m b  
\end{haskellcode}



Considérons la monade IO et les \textit{actions}:

\begin{haskellcode}
return    :: a -> IO a 
putStr    :: String -> IO () -- renvoie une chaine dans la sortie standard
getLine   :: IO String  -- lit une chaine depuis l'entree standard
getChar   :: IO Char
writeFile :: FilePath -> String -> IO ()
\end{haskellcode}

sachant que \Colorbox{blue!10}{\lstinline{FilePath}} est un synonyme de \Colorbox{blue!10}{\lstinline{String}}.

Par exemple:

\begin{haskellcode}
echo :: IO ()
echo =
  do
   ligne <- getLine
   writeFile "monFichier.txt" ligne
   putStrLn ("Ligne lue : " ++ ligne)
\end{haskellcode}

\begin{enumerate}

\item Écrivez echo avec \Colorbox{blue!10}{\lstinline{>>=}} donc sans \Colorbox{blue!10}{\lstinline{do}}.


\item Quelle est la signature de \Colorbox{blue!10}{\lstinline{putStrLn . show}}? Son rôle?


\item Rappel sur la classe \Colorbox{blue!10}{\lstinline{Read}}:

\begin{haskellcode}
read :: read a => String -> a  
\end{haskellcode}

Par exemple:

\begin{haskellcode}
λ> read "4" :: Int
4
λ> read "4" :: Float
4.0  
\end{haskellcode}

Créez alors une fonction \Colorbox{blue!10}{\lstinline{getInt :: IO Integer}}

\item Créez une fonction qui  lit des entiers jusqu'à lire un  zéro et ensuite affiche
la somme.


\item Créez  une fonction  wc  qui copie  l'entrée  tant que  cette  entrée n'est  pas
vide. Ce programme  doit également afficher le  nombre de lignes, de  mots et de
caractères affichés. 



\item Créez une fonction:

\begin{haskellcode}
fmapio :: (a -> b) -> IO a -> IO b
\end{haskellcode}

En fait, il existe une classe \Colorbox{blue!10}{\lstinline{Functor}}:

\begin{haskellcode}
class Functor ft where
   fmap :: (a -> b) -> ft a -> ft b
\end{haskellcode}

\item Quelle   lien   peut-on   créer  entre   \Colorbox{blue!10}{\lstinline{IO}}   et
\Colorbox{blue!10}{\lstinline{Functor}}?

En fait, la classe \Colorbox{blue!10}{\lstinline{Monad}} est définie ainsi:

\begin{haskellcode}
class Monad m where
   (>>=)  :: m a -> (a -> m b) -> m b
   return :: a -> m a
\end{haskellcode}

\item Quel   lien   peut-on    créer   entre   \Colorbox{blue!10}{\lstinline{IO}}   et
\Colorbox{blue!10}{\lstinline{Monad}}? 

\item On crée le type:

\begin{haskellcode}
data Erreur a = OK a | Erreur String
\end{haskellcode}

Peut-il avoir une structure de monade?

\item Une action est une valeur comme une autre. On peut en particulier en faire une liste:

\begin{haskellcode}
listeAction = [putStr "Bonjour Monde\n", writeFile "fichierTest.txt" "Bonjour système de fichier"]
\end{haskellcode}

Ces actions ne font rien en elles-mêmes : ce sont juste des valeurs. On pourrait
utiliser un \Colorbox{blue!10}{\lstinline{do}} mais il est plus pratique parfois
d'utiliser  la fonction  \Colorbox{blue!10}{\lstinline{sequence_}}  qui est  une
sorte de \og mappage\fg{} de do.

\begin{haskellcode}
λ> :t sequence_
sequence_ :: Monad m => [m a] -> m ()  
\end{haskellcode}

Redéfinissez   alors   \Colorbox{blue!10}{\lstinline{putStr}}    à   l'aide   de
\Colorbox{blue!10}{\lstinline{sequence_}},   \Colorbox{blue!10}{\lstinline{map}}
et \Colorbox{blue!10}{\lstinline{putChar}}.


\item L'opérateur  \Colorbox{blue!10}{\lstinline{>>}} prononcé \textit{sequence}
  peut être défini par:

\begin{haskellcode}
m >> k = m >>= \ _ -> k
\end{haskellcode}

Quelle est la signature de \Colorbox{blue!10}{\lstinline{(>>)}}? 



\end{enumerate}

\end{exercice}




\begin{exercice}[Dessin]

Nous allons utiliser le SVG pour tracer quelques lignes simples.

Complétez le module suivant:

\begin{haskellcode}
module ImagesSVG where

import System.IO
        
-- Coordonnées sont des paires (x,y) d'entiers
--
--  o------> axe x 
--  |
--  |
--  V
-- axe y 

type Pixel = Float

data Point = Pt Pixel Pixel

data Vecteur = Vec Pixel Pixel

data Figure = Ligne [Point] | Ellipse Point Pixel Pixel 

class Bougeable a where
  bouge  :: Vecteur -> a -> a -- translation  
  symV   :: Pixel -> a -> a -- symetrie par rapport a axe vertical
  symH   :: Pixel -> a -> a -- symetrie par rapport a axe horizontal

instance Bougeable Point where
  ???

iso :: (Point -> Point) -> Figure -> Figure
-- applique une isometrie f sur une figure
????

instance Bougeable Figure where
   ???    

-- si a est une instance de Bougeable, [a] instance de Bougeable ?

cercle :: Point -> Pixel -> Figure
-- definit un cercle par son centre et son rayon 
???


type Graphique = String


toSVG :: Figure -> Graphique
toSVG (Ligne ps) =  "polyline points=\"" ++
                (foldr (\ (Pt x y) acc -> (show x) ++ "," ++ (show y) ++ " " ++ acc ) "\" " ps) 
???
-- consulter la doc svg pour l'ellipse

data Style = Trait | Remplit | EpTrait | Transp

svgStyle :: Style -> String
svgStyle    Trait   = "stroke"
svgStyle    Remplit = "fill"
svgStyle    EpTrait = "stroke-width"
svgStyle    Transp  = "fill-opacity"
           
optionGr :: Style -> String -> String
optionGr st op = (svgStyle st) ++ "=\"" ++ op ++ "\" "

addOpt :: Figure -> [(Style,String)] -> Graphique
-- rajoute une liste d'options à une figure et renvoie un graphique
???
         
crochet :: [Graphique] -> String
-- entoure une liste de graphiques de leurs crochets xml
???
      
type Dim = (Int,Int)

                
exportSVG :: [Graphique] -> Dim -> String -> IO ()
exportSVG (grs) (w,h)  nom =
    let fichier = "<svg width=\"" ++ show w ++  "\" height=\"" ++ show h ++ "\" version=\"1.1\"\n"
                  ++ "xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n"
                         ++ crochet grs ++ "\n</svg>"
    in
      do
        sortie <- openFile (nom ++ ".svg") WriteMode
        hPutStrLn sortie fichier
        hClose sortie

cercles :: Point -> Pixel -> Pixel -> Pixel -> [Figure]
-- liste de n cercles concentriques et de rayons variant de rmin a rmax 
???

cols :: [String]
-- liste de couleurs svg
cols = cycle ["red","blue","yellow","pink", "green", "peru", "khaki", "indigo", "orange", "salmon", "gainsboro"]

cible :: Point -> Pixel -> Pixel -> Pixel -> [Graphique]
-- la cible

\end{haskellcode}

Essayez:

\begin{haskellcode}
λ> let e = Ellipse (Pt 100 200) 50 75
λ> let ee = bouge (Vec 50 20) e
λ> let eee = symV 200  e
λ> exportSVG [addOpt e [(Remplit,"yellow"), (Trait,"red"), (Transp, "0.6")], addOpt ee [(Remplit,"pink"), (Trait,"blue"), (Transp, "0.7")], addOpt eee [(Trait, "black"), (Remplit,"gray")]] (500,500) "ellipse"  
\end{haskellcode}

Dessinez aussi une cible de tir à l'arc:


%\begin{figure}
\begin{center}
  \includegraphics[height=6cm]{cible}
\end{center}
%\end{figure}

ou un triangle se \textsc{Sierpinski}:


%\begin{figure}
\begin{center}
  \includegraphics[height=7cm]{sierp}
\end{center}
%\end{figure}


\end{exercice}

\subsection{Transformations}



 \begin{exercice}
     On travaille dans l'ev $\mathbb{R}^{2}$ :
\begin{enumerate}
\item $u=\left( 6,-9\right) $\ et $v=\left( -10,15\right) .$\ Donner des CL
de la famille $\left( u\right) ,$\ de la famille $\left( u,v\right) .$

\item Que repr\'{e}sente ${\rm Vect}\left( \mathcal{F}\right) $\ avec $%
\mathcal{F}=\left( u,v\right) $ ?

\item D\'{e}montrer que $w=\left( 2,-3\right) \in {\rm Vect}\left( 
\mathcal{F}\right) .$

\item $u$\ et $v$\ sont-ils colin\'{e}aires ?

\item $\mathcal{F}$\ est-elle libre ou li\'{e}e ?

\item D\'{e}montrer que ${\rm Vect}\left( \mathcal{F}\right) ={\rm Vect}%
\left( w\right) .$

\item D\'{e}montrer que $\left( 1,2\right) \notin {\rm Vect}\mathcal{F}.$

\item $t=\left( 1,2\right) ,$\ et $\mathcal{F}^{\prime }=\left( w,t\right) $%
\ ; d\'{e}montrer que ${\rm Vect}\left( \mathcal{F}^{\prime }\right) =%
\mathbb{R}^{2}.$
\end{enumerate}

   \end{exercice}







  \begin{exercice}
     On sait que $\bbr^{2\times 2}$, l'ensemble des
matrices carr\'{e}es d'ordre 2 \`{a} coefficients r\'{e}els, est un espace
vectoriel sur $\mathbb{R}$ avec les deux op\'{e}rations: addition de deux
matrices et la multiplication d'une matrice par un r\'{e}el (scalaire). On
consid\`{e}re%
\begin{equation*}
F=\left\{ \left( 
\begin{array}{cc}
a & b \\ 
b & a%
\end{array}%
\right) \mid \left( a,b\right) \in \mathbb{R}^{2}\right\}
\end{equation*}%
D\'{e}montrer que $F$ est un sev de $E$ puis d\'{e}terminer deux matrices $%
M_{1}$ et $M_{2}$ v\'{e}rifiant $F={\rm Vect}\left( \mathcal{F}\right) $
avec $\mathcal{F}=\left( M_{1},M_{2}\right)$.

Cette famille est-elle libre? A-t-elle d'autres propriétés?

   \end{exercice}






 \begin{exercice}
     \begin{enumerate}
     \item D\'{e}montrer que toute \og sous famille\fg{} d'une famille libre est libre.
     \item D\'{e}montrer que toute \og sur famille\fg{} d'une famille li\'{e}e est li\'{e}e.

     \end{enumerate}
   \end{exercice}




\begin{exercice}
     Dire si les familles $\mathcal{F}=\left( u_{i}\right) $ suivantes de $%
     \mathbb{R}^{3}$ sont libres ou li\'{e}es:
     \begin{enumerate}
     \item $u_{1}=(1,1,0),u_{2}=(1,0,2)$
     \item $u_{1}=(1,1,0),u_{2}=(1,0,2),u_{3}=(0,1,-2)$
     \item $u_{1}=(1,1,0),u_{2}=(1,0,2),u_{3}=(0,1,-1)$
     \item $u_{1}=(1,1,0),u_{2}=(1,0,2),u_{3}=(0,1,-1),u_{4}=\left(
         12,155,703\right) $
     \end{enumerate}
   \end{exercice}


\begin{exercice}
     Dire si les familles $\mathcal{F}=\left( u_{i}\right) $ suivantes de $%
     \mathbb{R}^{3}$ sont libres ou li\'{e}es:
     \begin{enumerate}
     \item $u_{1}=(1,1,0),u_{2}=(1,0,2)$
     \item $u_{1}=(1,1,0),u_{2}=(1,0,2),u_{3}=(0,1,-2)$
     \item $u_{1}=(1,1,0),u_{2}=(1,0,2),u_{3}=(0,1,-1)$
     \item $u_{1}=(1,1,0),u_{2}=(1,0,2),u_{3}=(0,1,-1),u_{4}=\left(
         12,155,703\right) $
     \end{enumerate}
   \end{exercice}







  \begin{exercice}
     Dire si les familles $\mathcal{F}=\left( u_{i}\right) $ suivantes de $%
     \mathbb{R}^{3}$ sont libres ou li\'{e}es:
     \begin{enumerate}
     \item $u_{1}=(1,1,0),u_{2}=(1,0,2)$
     \item $u_{1}=(1,1,0),u_{2}=(1,0,2),u_{3}=(0,1,-2)$
     \item $u_{1}=(1,1,0),u_{2}=(1,0,2),u_{3}=(0,1,-1)$
     \item $u_{1}=(1,1,0),u_{2}=(1,0,2),u_{3}=(0,1,-1),u_{4}=\left(
         12,155,703\right) $
     \end{enumerate}
   \end{exercice}




 \begin{exercice}
    \begin{enumerate}
\item $\mathcal{F}%
_{1}=(u_{1,}u_{1}+u_{2},u_{1}+u_{2}+u_{3},u_{1}+u_{2}+u_{3}+u_{4})$ est-elle
une base de\textit{\ }$\mathbb{R}^{4}?$

\item $\mathcal{F}_{2}=(u_{1}+u_{2},u_{2}+u_{3},u_{3}+u_{4},u_{4}+u_{1})$%
\textit{\ }est-elle une base de\textit{\ }$\mathbb{R}^{4}$\textit{\ ?}
\end{enumerate}
  \end{exercice}






 \begin{exercice}
    \begin{enumerate}
\item On note $H=\left\{ \left( x,y,z\right) \in \mathbb{R}^{3}\mid
x+2y+3z=0\right\} ,$\ d\'{e}montrer que $H$\ est un sev de $\mathbb{R}^{3}$
en d\'{e}terminant $u$\ et $v,$\ deux vecteurs de $\mathbb{R}^{3},$\ de
sorte que $H=\limfunc{Vect}\left( u,v\right) .$

\item Donner une famille g\'{e}n\'{e}ratrice de $H.$

\item La famille $\left( u,v\right) $\ est-elle libre ?

\item Donner une base de $H.$

\item Quelle est la dimension de $H$\ ?

\item On note $w=(1,2,3)$, d\'{e}montrer que $w\notin H.$

\item On note $K=\limfunc{Vect}(w).$\ Donner une base de $K.$

\item Quelle est la dimension de $K$\ ?

\item D\'{e}montrer que $\left( u,v,w\right) $ est une base de $\mathbb{R}%
^{3}.$
\end{enumerate}
  \end{exercice}





\begin{exercice}
    \begin{enumerate}
    \item D\'{e}montrer que $H=\left\{ \left( x,y,z\right) \in \mathbb{R}^{3}\mid
        x-z=0\right\} $ est un sev de $\mathbb{R}^{3}$ et en donner une base.
    \item D\'{e}montrer que $H=\left\{ \left( x,y,z\right) \in \mathbb{R}^{3}\mid
        x=0\right\} $ est un sev de $\mathbb{R}^{3}$ et en donner une base.
    \item   $H=\left\{   \left(  x,y,z\right)   \in   \mathbb{R}^{3}\mid
          ax+by+cz=0\right\} $ o\`{u} $a$, $b$ et $c$ sont des r\'{e}els
          fix\'{e}s.   Dans  quel   cas   a-t-on  $H=\mathbb{R}^{3}$   ?
          D\'{e}montrer que $H$ est un sev de $\mathbb{R}^{3}$.  
    \end{enumerate}
  \end{exercice}




 \begin{exercice}
    On travaille dans $\mathbb{R}^{3}:$
    \begin{enumerate}
    \item R\'{e}soudre le syst\`{e}me $\left\{ 
        \begin{array}{l}
          x+2y+3z=0 \\ 
          2x+y-z=0%
        \end{array}%
      \right. $\ par la m\'{e}thode de la $\ell$-r\'{e}duite \'{e}chelonn\'{e}e.
    \item On note $H=\left\{ \left( x,y,z\right) \in \mathbb{R}^{3}\mid
        x+2y+3z=0\right\} $\ et $K=\left\{ \left( x,y,z\right) \in \mathbb{R}%
        ^{3}\mid 2x+y-z=0\right\} .$\ D\'{e}terminer une base de $H\cap K.$
    \end{enumerate}
  \end{exercice}





 \begin{exercice}
    On travaille dans $\mathbb{R}^{3}$ et on note $u=\left( 1,2,2\right)
    $ et $v=\left( -2,1,2\right)$. D\'{e}terminer des r\'{e}els $a$, $b$
    et                   $c$                  pour                   que
    $\limfunc{Vect}\left(  u,v\right)=\left\{  \left(  x,y,z\right)  \in
    \mathbb{R}^{3}\mid ax+by+cz=0\right\}$. 
  \end{exercice}





 \begin{exercice}
    \begin{enumerate}
    \item $\mathcal{B}$  et $\mathcal{B}^{\prime  }$ sont deux  bases de
      $\mathbb{K}^{n}.$ 
      Qu'appelle-t-on la  matrice de passage de  $\mathcal{B}$ \`{a}
      $\mathcal{B}^{\prime  }$ ?  On note  $P$ cette  matrice, \`{a}
      quoi sert-elle ?  
    \item $\mathcal{B}$ et $\mathcal{B}^{\prime }$ sont des bases de
      $\mathbb{R}^{3}$    et    $A$    est   la    matrice    de
      $\mathcal{B}^{\prime       }$      dans       la      base
      $\mathcal{B}$. D\'{e}montrer que le rang  de $A$ est 3. La
      matrice $A$ est-elle inversible ? 
    \end{enumerate}
  \end{exercice}







 \begin{exercice}
    $u_{1}=(1,2)$    et   $u_{2}=(2,3)$    sont    deux   vecteurs    de
    $\mathbb{R}^{2},$  $\mathcal{B}=(e_{1},e_{2})$  d\'{e}signe la  base
    canonique de $\mathbb{R}^{2}$. 
    \begin{enumerate}
    \item Expliciter la base canonique.
    \item Quelles sont les coordonn\'{e}es de $u_{2}$\ dans $\mathcal{B}$\ ?
    \item Quelles sont les coordonn\'{e}es de $e_{1}$\ dans $\mathcal{B}$\ ?
    \item D\'{e}montrer que la famille $\mathcal{F}=(u_{1},u_{2})$\ est une base
      de $\mathbb{R}^{2}.$
    \item D\'{e}terminer la matrice $P$\ de passage de $\mathcal{B}$\ \`{a} $%
      \mathcal{F}.$
    \item D\'{e}terminer la matrice de passage de $\mathcal{F}$\ \`{a} $B.$\ Que
      repr\'{e}sentent les colonnes de cette matrice ?
    \item D\'{e}terminer  les coordonn\'{e}es  de $u_{1}$\ dans  la base
      $\mathcal{F}$. 
    \item D\'{e}terminer  les coordonn\'{e}es  de $e_{1}$\ dans  la base
      $\mathcal{F}$. 
    \item  $x=(-1,5),$\ d\'{e}terminer  les coordonn\'{e}es  de $x$\
      dans   la   base   $\mathcal{B}$\    et   dans   la   base
      $\mathcal{F}$. 
    \item  D\'{e}terminer  les  coordonn\'{e}es  de $x$\  dans  la  base
      $\mathcal{B}^{\prime }=(-3u_{2},7u_{1})$. 
    \end{enumerate}
  \end{exercice}






  \begin{exercice}
    On note $\mathcal{B}=\left( e_{1},e_{2},e_{3}\right) $ la base canonique de $%
    \mathbb{R}^{3}$. 
    \begin{enumerate}
    \item $x=\left( 2,3,-5\right) ,$\ d\'{e}terminer les coordonn\'{e}es de $x$\
      dans $\mathcal{B}.$
    \item $u=\left( 1,1,-1\right) ,$\ $v=\left( 1,-1,2\right)$, $w=\left(
        2,0,2\right)$. D\'{e}terminer les coordonn\'{e}es des vecteurs
      $u,$\ $v$ et $w$ dans la base $B$\ ainsi que la matrice $A$ de la
      famille $F=\left(u,v,w\right)$ dans $B$. 
    \item  $\limfunc{Vect}\left( \mathcal{F}\right)$  est-il  un sev  de
      $\mathbb{R}^{3}$ ? 
    \item D\'{e}terminer la LR\'{E} de $A$. Quel est le rang de $A$ ?
    \item D\'{e}montrer que $\mathcal{F}$ est libre.
    \item D\'{e}montrer que $\mathcal{F}$ est une base de $\mathbb{R}^{3}.$
    \item Est-il vrai que $\mathbb{R}^{3}=\limfunc{Vect}\mathcal{F}$?
    \item D\'{e}terminer la matrice $A^{\prime }$\ de la famille $\mathcal{B}$
      dans la base $\mathcal{F}$.
    \item D\'{e}terminer la matrice de $\mathcal{F}$\ dans la base $\mathcal{F}$
      et la matrice de $\mathcal{B}$\ dans la base $\mathcal{B}.$
    \item D\'{e}terminer les coordonn\'{e}es de $x$\ dans la base $\mathcal{F}.$
    \item D\'{e}montrer de plusieurs fa\c{c}ons que $\mathcal{G}=\left(
        u,v\right) $\ n'est pas une base de $\mathbb{R}^{3}.$
    \end{enumerate}
  \end{exercice}



  \begin{exercice}
    $f\in \mathcal{L}\left( \mathbb{R}^{3}\right) ,$ $\mathcal{B=}\left(
e_{1},e_{2},e_{3}\right) $ est une base de $\mathbb{R}^{3},$ $A=\left( 
\begin{array}{ccc}
1 & 1 & 0 \\ 
1 & 0 & 1 \\ 
1 & 1 & 1%
\end{array}%
\right) =\func{Mat}_{\mathcal{B}}\left( f\right) .$




\begin{enumerate}
\item $f$\ est-il un endomorphisme de $\mathbb{R}^{3}$\ ?

\item Quelles sont les coordonn\'{e}es de $e_{1}$\ dans la base $\mathcal{B}$%
\ ?

\item Quelles sont les coordonn\'{e}es de $f\left( e_{2}\right) $\ dans la
base $\mathcal{B}$ ?

\item Quelles sont les coordonn\'{e}es de $f\left( x\right) $\ dans la base $%
\mathcal{B}$\ si $x=e_{1}+e_{2}-2e_{3}$\ ?

\item Qu'est $\ker f$\ ?
\end{enumerate}





  \end{exercice}







  \begin{exercice}
    On travaille dans l'espace vectoriel $\mathbb{R}^{3}$ rapport\'{e} \`{a} la
base canonique $\mathcal{B}=\left( e_{1},e_{2},e_{3}\right) .$ On donne : 
\begin{equation*}
\text{la lr\'{e} de }\left( 
\begin{array}{ccc}
0 & 1 & 1 \\ 
1 & 2 & 1 \\ 
-1 & 1 & 2%
\end{array}%
\right) =\left( 
\begin{array}{ccc}
1 & 0 & -1 \\ 
0 & 1 & 1 \\ 
0 & 0 & 0%
\end{array}%
\right)
\end{equation*}%
On consid\`{e}re la famille $\mathcal{F}\mathbf{=}\left(
u_{1},u_{2},u_{3}\right) $ avec 
\begin{equation*}
u_{1}\left( 
\begin{array}{c}
0 \\ 
-1 \\ 
1%
\end{array}%
\right) _{\mathcal{B}},u_{2}\left( 
\begin{array}{c}
1 \\ 
1 \\ 
2%
\end{array}%
\right) _{\mathcal{B}},u_{3}\left( 
\begin{array}{c}
1 \\ 
2 \\ 
1%
\end{array}%
\right) _{\mathcal{B}}\vspace{0.5cm}
\end{equation*}




\begin{enumerate}
\item D\'{e}terminer la matrice $A$\ de la famille $\mathcal{F}$\ dans la
base $B$.

\item Donner la lr\'{e} de $A$.

\item On note $f$\ l'endomorphisme de $\mathbb{R}^{3}$\ dont la matrice dans
la base $\mathcal{B}$\ est $A.$

\begin{enumerate}
\item Que repr\'{e}sentent les colonnes de $A$\ ?

\item D\'{e}terminer $\mathcal{B}$\ la matrice de la famille $\left( f\left(
u_{1}\right) ,f\left( u_{2}\right) ,f\left( u_{3}\right) \right) $\ dans la
base $\mathcal{B}.$

\item On note $\ker \left( f\right) $\ le noyau de $f,$\ d\'{e}finir $\ker
\left( f\right) .$

\item On note $x=\left( x_{1},x_{2},x_{3}\right) $\ un vecteur quelconque de 
$\mathbb{R}^{3}.$\ D\'{e}terminer les coordonn\'{e}es de $f\left( x\right) $%
\ dans la base $\mathcal{B}.$

\item D\'{e}terminer une base de $\ker \left( f\right) $, on notera $%
\mathcal{F}_{\ker }$\ cette famille.

\item Donner une famille g\'{e}n\'{e}ratrice de $\func{Im}\left( f\right) .$

\item D\'{e}terminer une base de $\func{Im}\left( f\right) .$\ On notera $%
\mathcal{F}_{\func{Im}}$\ cette famille.
\end{enumerate}

\item On note $\mathcal{B}^{\prime }=\left( e_{1}^{\prime },e_{2}^{\prime
},e_{3}^{\prime }\right) $\ la famille obtenue en juxtaposant le ou les
vecteurs de $\mathcal{F}_{\func{Im}}$\ et le ou les vecteurs de $\mathcal{F}%
_{\ker }$. On admet que $\mathcal{B}^{\prime }$\ est une base (il suffit de v%
\'{e}rifier qu'elle est libre) ; $x_{1}^{\prime },x_{2}^{\prime }$\ et $%
x_{3}^{\prime }$\ d\'{e}signent les coordonn\'{e}es d'un vecteur $x$\ de $%
\mathbb{R}^{3}$\ dans cette base.

\begin{enumerate}
\item D\'{e}terminer $H$\ la matrice de passage de $\mathcal{B}$\ \`{a} $%
\mathcal{B}^{\prime }$.

\item On note $U$\ la matrice de $f$\ relativement ou dans la base $\mathcal{%
B}^{\prime },$\ $U=\func{Mat}_{\mathcal{B}^{\prime }}\left( f\right) ,$\
exprimer $U$\ en fonction des matrices $H$\ et $A.$
\end{enumerate}

\item On note $g$\ l'application de $\mathbb{R}^{3}$\ dans $\mathbb{R}^{3}$\
d\'{e}finie par :%
\begin{equation*}
x\left( 
\begin{array}{c}
x_{1}^{\prime } \\ 
x_{2}^{\prime } \\ 
x_{3}^{\prime }%
\end{array}%
\right) _{\mathcal{B}^{\prime }}\rightarrow g\left( x\right) \left( 
\begin{array}{c}
x_{1}^{\prime } \\ 
x_{2}^{\prime } \\ 
0%
\end{array}%
\right) _{\mathcal{B}^{\prime }}
\end{equation*}%
et $g$\ est manifestement un endomorphisme de $\mathbb{R}^{3}.$

\begin{enumerate}
\item D\'{e}terminer $V$\ la matrice de $g$\ dans la base $\mathcal{B}%
^{\prime }.$

\item D\'{e}terminer une base de $\ker \left( g\right) .$

\item D\'{e}terminer une base de\ $\func{Im}\left( g\right) .$

\item Exprimer en fonction de $V$\ et de $H$\ la matrice de $g$\ dans la
base $\mathcal{B}.$

\item Exprimer \`{a} l'aide "de lettres" la matrice de $g\circ f$\ dans la
base $\mathcal{B}^{\prime }.$
\end{enumerate}
\end{enumerate}














  \end{exercice}










  \begin{exercice}
    $\mathcal{B}=\left( u,v,w\right) $ est une base de l'e.v. $\mathbb{R}^{3}$, $%
f$ est un automorphisme de $\mathbb{R}^{3}$ et $A=\func{Mat}_{\mathcal{B}%
}\left( f\right) .$






\begin{enumerate}
\item D\'{e}montrer que $\mathcal{F}=\left( f\left( u\right) ,f\left(
v\right) ,f\left( w\right) \right) $\ est une famille libre et donc que
c'est une base de $\mathbb{R}^{3}.$

\item D\'{e}terminer la matrice de $f$\ dans la base $\mathcal{F}.$
\end{enumerate}





  \end{exercice}



  \begin{exercice}
    $A=\left( 
\begin{array}{lll}
1 & 0 & 1 \\ 
0 & 0 & 1 \\ 
1 & 1 & 1 \\ 
0 & 1 & 0 \\ 
1 & 1 & 0%
\end{array}%
\right) $ est la matrice de l'application lin\'{e}aire $\varphi $ de $%
\mathbb{F}_{2}^{3}$ dans $\mathbb{F}_{2}^{5}$ relativement aux bases
canoniques.




\begin{enumerate}
\item D\'{e}montrer que $\varphi $\ est injective. D\'{e}terminer $\ker
\varphi .$

\item D\'{e}terminer une base de $\func{Im}\varphi .$\ Quelle est la
dimension de $\func{Im}\varphi $\ ? $\varphi $\ est-elle surjective ? Donner
une matrice g\'{e}n\'{e}ratrice de $\func{Im}\varphi $\ dans la base
canonique de $\mathbb{F}_{2}^{5}.$

\item Quelle est la dimension de $\func{Im}\varphi $\ ?
\end{enumerate}





  \end{exercice}










\begin{exercice}[Reconnaître une fonction linéaire]
  
   On  rappelle qu'une  fonction linéaire  est une  fonction totale $f$ sur un
    $\bbk$-espace  vectoriel   $E$  qui  vérifie   $$∀x,y  \in  E^2.∀   λ  \in
    \bbk. f(λx+y)=λf(x)+f(y)$$

 Est-ce  que  l'application  $\colon\begin{array}{rll}  \bbr^3  &\longrightarrow  &
    \bbr^3\\ \ve{x} &  \longmapsto & \ve{x}+\ve{a}\end{array}$ avec $\ve{a}$
  un vecteur fixe est linéaire~?

 
\end{exercice}







\begin{exercice}
$f\in \mathcal{L}\left( \mathbb{R}^{3}\right) ,$ $\mathcal{B=}\left(
e_{1},e_{2},e_{3}\right) $ est une base de $\mathbb{R}^{3},$ $A=\left( 
\begin{array}{ccc}
1 & 1 & 0 \\ 
1 & 0 & 1 \\ 
1 & 1 & 1%
\end{array}%
\right) =\mathbf{Mat}_{\mathcal{B}}\left( f\right) .$


\begin{enumerate}
\item $f$\ est-il un endomorphisme de $\mathbb{R}^{3}$\ ?

\item Quelles sont les coordonn\'{e}es de $e_{1}$\ dans la base $\mathcal{B}$%
\ ?

\item Quelles sont les coordonn\'{e}es de $f\left( e_{2}\right) $\ dans la
base $\mathcal{B}$ ?

\item Quelles sont les coordonn\'{e}es de $f\left( x\right) $\ dans la base $%
\mathcal{B}$\ si $x=e_{1}+e_{2}-2e_{3}$\ ?

\item Qu'est $\ker f$\ ?
\end{enumerate}
\end{exercice}




\begin{exercice}
$f\in \mathcal{L}\left( \mathbb{R}^{p},\mathbb{R}^{n}\right) ,$ d\'{e}%
montrer :%
\begin{equation*}
\ker f=\left\{ 0_{\mathbb{R}^{p}}\right\} \Leftrightarrow f\text{ est
injective}
\end{equation*}
\end{exercice}






\begin{exercice}[détermination d'une rotation à partir d'une matrice]
On donne la matrice $A=\frac{1}{3}\begin{pmatrix}
                                1&2&2\\
                                -2&2&-1\\
                                -2&-1&2\\
                       \end{pmatrix}$ d'une  certaine transformation $f$
                       de $\bbr^3$ dans lui-même.
Décrivez $f$ le plus précisément possible.

Faites de même avec la matrice
$B=\frac{1}{3}\begin{pmatrix}
  2&1&2\\
  -2&2&1\\
  1&2&-2\\
\end{pmatrix}
$
\end{exercice}




\begin{exercice}[matrice d'une rotation]
On  considère la rotation  $u$ d'angle  $\frac{\pi}{4}$ autour  de l'axe
dirigé     par     le      vecteur     $\ve{v_1}$     de     coordonnées
$\left(\frac{1}{3},\frac{2}{3},\frac{2}{3}\right)$    dans    la    base
canonique $\BC_0$.
\begin{enumerate}
\item       Montrez       que       $\ve{v_2}$      de       coordonnées
  $\left(\frac{2}{3},-\frac{2}{3},\frac{1}{3}\right)$  dans  $\BC_0$ est
  orthogonal à $\ve{v_1}$.
\item     Déterminez      un     vecteur     $\ve{v_3}$      tel     que
  $(\ve{v_1},\ve{v_2},\ve{v_3})$ soit une base orthonormée directe.
\item Déterminez $\mat[_0] u$.
\end{enumerate}

\end{exercice}




\begin{exercice}[composée de rotations]
  Dans  $\bbr^3$, soit  $R_x$ la  rotation  autour de  l'axe dirigé  par
  $\ve{e_1}$ et d'angle $\frac{\pi}{2}$, soit $R_y$ la rotation autour
  de  l'axe dirigé  par $\ve{e_2}$  et d'angle  $\frac{\pi}{2}$  et soit
  $R_z$ la  rotation autour  de l'axe dirigé  par $\ve{e_3}$  et d'angle
  $\frac{\pi}{2}$ .

  Décrivez $R_x\circ R_z$.

\end{exercice}

















\begin{exercice}
On travaille dans $\mathbb{R}^{3}$ et $\mathcal{B}=\left( i,j,k\right) $ est
une $BOND$. Dans ce qui suit, pour les repr\'{e}sentations, on choisira une
mesure d'angle peu diff\'{e}rente de $\frac{\pi }{6}$ ou $\frac{\pi }{3}.$


\begin{enumerate}
\item {On consid\`{e}re la rotation }${\rm Rot}_{1}\left( i,\alpha \right) $%
{\ qui transforme }$\mathcal{B}${\ en }$\mathcal{B}_{1}=\left(
i_{1},j_{1},k_{1}\right) ,${\ repr\'{e}senter }$\mathcal{B}${\
et }$\mathcal{B}_{1}${\ et d\'{e}terminer la matrice }$R_{1}${%
\ de }${\rm Rot}_{1}\left( i,\alpha \right) ${\ dans la base }$\mathcal{B}.$

\item {On consid\`{e}re la rotation }${\rm Rot}_{2}\left( j,\beta \right) $%
{\ qui transforme }$\mathcal{B}${\ en }$\mathcal{B}_{2}=\left(
i_{2},j_{2},k_{2}\right) ${, repr\'{e}senter }$\mathcal{B}${\
et }$\mathcal{B}_{2}${\ et d\'{e}terminer la matrice }$R_{2}${%
\ de }${\rm Rot}_{2}\left( j,\beta \right) ${\ dans la base }$\mathcal{B}.$

\item {On consid\`{e}re la rotation }${\rm Rot}_{3}\left( k,\gamma \right) $%
{\ qui transforme }$\mathcal{B}${\ en }$\mathcal{B}_{3}=\left(
i_{3},j_{3},k_{3}\right) ${,\ repr\'{e}senter }$\mathcal{B}${\
et }$\mathcal{B}_{3}${\ et d\'{e}terminer la matrice }$R_{3}${%
\ de }${\rm Rot}_{3}\left( k,\gamma \right) ${\ dans la base }$\mathcal{B}.$

\item {D\'{e}terminer la matrice de }${\rm Rot}_{3}\left( k,\gamma \right) $%
{\ dans la base }$\mathcal{B}_{3}.$

\item {D\'{e}terminer la matrice de }${\rm Rot}_{3}\left( k,\gamma \right) $%
{\ dans la base }$\mathcal{B}_{2}.$

\item {D\'{e}terminer la matrice de }${\rm Rot}_{2}\left( j,\beta \right) $%
{\ dans la base }$\mathcal{B}_{2}.$

\item {D\'{e}terminer la matrice de }${\rm Rot}_{2}\left( j,\beta \right) $%
{\ dans la base }$\mathcal{B}_{3}.$

\item {On consid\`{e}re la rotation }${\rm Rot}_{4}\left( j_{3},\varphi
\right) ${\ qui transforme la base }$\mathcal{B}_{3}=\left(
i_{3},j_{3},k_{3}\right) ${\ en la base }$\mathcal{B}_{4}=\left(
i_{4},j_{4},k_{4}\right) .$

\begin{enumerate}
\item {D\'{e}terminer la matrice de }${\rm Rot}_{4}\left( j_{3},\varphi
\right) ${\ dans la base }$\mathcal{B}_{3}.$

\item {D\'{e}terminer la matrice de }${\rm Rot}_{4}\left( j_{3},\varphi
\right) ${\ dans la base }$\mathcal{B}.$
\end{enumerate}

\item {D\'{e}terminer la matrice }${\rm Rot}_{1}\circ {\rm Rot}_{2}\circ {\rm Rot}_{3}$%
{\ dans la base }$\mathcal{B}_{2}.$

\item {D\'{e}tertminer la matrice de }${\rm Rot}_{2}\circ {\rm Rot}_{4}\circ
{\rm Rot}_{2}\circ {\rm Rot}_{3}\circ {\rm Rot}_{2}${\ dans la base }$\mathcal{B}_{4}.$

\item {D\'{e}terminer la matrice de passage de }$\mathcal{B}_{2}$%
{\ \`{a} }$\mathcal{B}_{4}.$

\item {D\'{e}terminer la matrice de passage de }$\mathcal{B}_{4}$%
{\ \`{a} }$\mathcal{B}_{3}.$
\end{enumerate}



\end{exercice}









\begin{exercice}
$\mathcal{B}=\left( i,j,k\right) $ est une \textbf{BOND }\ de $\mathbb{R}%
^{3},$ $r_{1}$ est la rotation d'axe $j$ et d'angle de mesure $\alpha \in %
\left[ 0,\frac{\pi }{2}\right] $ qui transforme la BOND $\mathcal{B}$ en la
BOND $\mathcal{B}_{1}=\left( i_{1},j_{1},k_{1}\right) .$


\begin{enumerate}
\item {Faire un dessin clair repr\'{e}sentant }$\mathcal{B}${\
et }$\mathcal{B}_{1}${.}

\item {Donner }$R${\ la matrice de }$r_{1}${\ dans la
base }$\mathcal{B}.$

\item $r_{2}${\ est la rotation d'axe }$i_{1}${\ qui
transforme la BOND }$\mathcal{B}_{1}${\ en la BOND }$\mathcal{B}_{2}$%
{\ et }$r_{3}${\ est la rotation d'axe }$k${\ qui
transforme la BOND }$\mathcal{B}${\ en la BOND }$\mathcal{B}_{3}.$%
{\ On note }$S${\ la matrice de }$r_{2}${\ dans la base 
}$\mathcal{B}_{1}${\ et }$T${\ la matrice de }$r_{3}${\
dans la base }$\mathcal{B}.${\ Donner la matrice de }$r_{2}\circ
r_{1}\circ r_{3}\circ r_{1}\circ r_{2}${\ dans la base }$B_{3}.$
\end{enumerate}
\end{exercice}



\begin{exercice}
$\mathcal{B}=\left( i,j,k\right) $ est une \textbf{BOND }\ de $\mathbb{R}%
^{3},$ on consid\`{e}re les vecteurs $u$ et $v$ :%
\begin{equation*}
u\left( 
\begin{array}{c}
1 \\ 
2 \\ 
2%
\end{array}%
\right) _{\mathcal{B}}v\left( 
\begin{array}{c}
-2 \\ 
0 \\ 
1%
\end{array}%
\right)_{\mathcal{B}}
\end{equation*}%
et il est manifeste que $u$ et $v$ sont orthogonaux. D\'{e}terminer des
vecteurs $a,b$ et $c$ v\'{e}rifiant : $a$ colin\'{e}aire \`{a} $u,$ $c$ colin%
\'{e}aire \`{a} $v$ et $\left( a,b,c\right) $ est une BOND.
\end{exercice}


\begin{exercice}[Théorème de Pythagore]
  Démontrez que $u$ et $v$ sont orthogonaux si, et seulement si, $$||u+v||^2=||u||^2+||v||^2$$
\end{exercice}


%\subsection{Projections}


\begin{exercice}
  \begin{enumerate}
  \item Démontrez la propriété \vref{prop::upiu}.
  \item  Démontrez  la  propriété \vref{prop::cs}.  Pour  cela,  vous
    commencerez  par   développer  $||u+xv||^2$   avec  $x$   un  réel
    quelconque. Vous obtenez alors un polynôme du second degré en $x$:
    quel est son signe? Qu'en déduit-on concernant son discriminant? Concluez.
\item Démontrez la propriété \vref{prop::piinfu}

  \end{enumerate}
\end{exercice}

\begin{exercice}[Niveaux de gris]
Un pixel, en  général, est représenté par un  vecteur (R,V,B), chacune
des composante pouvant prendre 256 valeurs  entre 0 et 255. Cela donne
un échantillon de $2^{24}$ couleurs...

L'espace  des couleurs  est alors  l'intérieur  d'un cube  de côté  de
longueur 256.


Lors de  la conversion en niveau  de gris, on veut  obtenir un nouveau
vecteur  gris  (i.e.  avec  trois  composantes  égales)  le  plus  \og
proche\fg{} possible du pixel en couleur.

\begin{enumerate}
\item Donnez une base de \og l'espace des gris\fg{}.
\item Expliquez intuitivement quelle est la plus petite distance entre
  le point de coordonnées (R,V,B) et la droite des gris dans un repère
  bien choisi.
\item Déduisez-en  une formule  permettant de  convertir une  image en
  niveau de gris connaissant sa matrice \og en couleur\fg{}.
\end{enumerate}
  
\end{exercice}

%\subsection{Diagonalisation et SVD}

\begin{exercice}[Calcul manuel de la SVD]
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?
\item  Montrez que  $A\times  \tr  A$ est  diagonalisable  et que  les
  colonnes de U en forment une base orthonormée de vecteurs propres.

Montrez de  même que les  colonnes de V  forment une base orthonormée de vecteurs
propres de $\tr A\times A$.
\item Calculez (à la main...) la SVD de $A=
  \begin{pmatrix}
    2&-2\\
    1&1
  \end{pmatrix}
$.

On aura besoin d'orthogonaliser la base de vecteurs propres obtenue...

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




\begin{exercice}[Transformations affines]

Sans trop rentrer  dans les détails, on désignera par  espace affine un ensemble
de points \og associés\fg{} à un espace vectoriel. C'est ce qui est concrètement
utilisé en infographie : on peut effectuer  des opérations sur les points et les
vecteurs.

Par exemple, dans un \textbf{repère} $\oij$:

\begin{itemize}
\item $A + \ve{AB}=B$
\item $B-A=\ve{AB}$
\item $A = O + \ve{OA}$
\item $2A + 3B= O + 2\ve{OA}+3\ve{OB}$
\item etc.
\end{itemize}
  
On  peut  composer des  fonctions  linéaires  (vectorielles)  dans une  base  en
multipliant  les matrices  de ces  applications dans  cette base  mais quid  des
transformations affines qui ne sont pas vectorielles?

Il existe une \og ruse\fg{} que nous  ne détaillerons pas mais qui est largement
utilisé en  infographie (SVG, Blender,  Illustrator\c, etc.) qui consiste  à \og
plonger\fg{} les objets  2D dans la 3D mais en  gardant la troisième coordonnées
fixe.

Ainsi,  un point  de  coordonnées $(x,y)$  dans $\oij$  sera  représenté par  la
matrice
$\left(
\begin{smallmatrix}
x\\y\\1 
\end{smallmatrix}
\right)
$


\begin{enumerate}
\item Comment sera représentée une symétrie d'axe $(Ox)$? d'axe $(Oy)$?
\item Comment sera représentée une rotation de centre O et d'angle $α$?
\item  Comment  sera   représentée  une  translation  de   vecteur  $\ve{u}$  de
  coordonnées $(v_x,v_y)$?
\item Comment sera représentée la fonction qui tranforme le point $P(x,y)$ en le
  point $P'(λx,y)$? En le point $P''(x,λy)$?
\item Étudiez                      la                     doc                      SVG
\href{http://www.w3.org/TR/SVG/coords.html}{http://www.w3.org/TR/SVG/coords.html}.
\item  Une  couleur  peut  être  représentée  par  un  vecteur  RVBA  de  quatre
  dimensions.  Une transformation  de  couleurs est  alors  représentée par  une
  matrice.

Quel est l'action de cette matrice:

$$
\begin{pmatrix}
1/3&1/3&1/3&0\\
  1/3&1/3&1/3&0\\
  1/3&1/3&1/3&0\\
  0&0&0&1
\end{pmatrix}
$$

\item Étudiez \href{http://www.w3.org/TR/SVG/filters.html\#feColorMatrixElement}{http://www.w3.org/TR/SVG/filters.html\#feColorMatrixElement}
\item Faites de jolis dessins...

\end{enumerate}


Expliquez, développez, améliorez le module suivant:

\begin{haskellcode}
module PicturesSVG where

import System.IO

data Picture 
 = Img Image 
 | Sur Picture Picture
 | Acote Picture Picture
 | Sous Picture Picture
 | SymH Picture
 | SymV Picture
 | Negative Picture
   deriving (Show)

type Point = (Int,Int)

data Image = Image Name Point
             deriving (Show)

data Name  = Name String
             deriving (Show)


sur, aCote, sous :: Picture -> Picture -> Picture 

sur  = Sur
aCote = Acote
sous   = Sous
 

symH, symV, negative :: Picture -> Picture 

symH (Sur pic1 pic2)  = (symH pic2) `Sur` (symH pic1)
symH (Acote pic1 pic2) = (symH pic1) `Acote` (symH pic2)
symH (Sous pic1 pic2)   = (symH pic1) `Sous` (symH pic2)
symH pic                = SymH pic

symV (Sur pic1 pic2)  = (symV pic1) `Sur` (symV pic2)
symV (Acote pic1 pic2) = (symV pic2) `Acote` (symV pic1)
symV (Sous pic1 pic2)   = (symV pic1) `Sous` (symV pic2)
symV pic                = SymV pic

negative = Negative

invertColour = Negative

img :: Image -> Picture 

img = Img


width,height :: Picture -> Int

width (Img (Image _ (x,_))) = x 
width (Sur pic1 pic2)     = max (width pic1) (width pic2)
width (Acote pic1 pic2)    = (width pic1) + (width pic2)
width (Sous pic1 pic2)      = max (width pic1) (width pic2)
width (SymH pic)           = width pic
width (SymV pic)           = width pic
width (Negative pic)        = width pic

height (Img (Image _ (x,y))) = y 
height (Sur pic1 pic2)     = (height pic1) + (height pic2)
height (Acote pic1 pic2)    = max (height pic1) (height pic2)
height (Sous pic1 pic2)      = max (height pic1) (height pic2)
height (SymH pic)           = height pic
height (SymV pic)           = height pic
height (Negative pic)        = height pic


data Filter = Filter {fH, fV, neg :: Bool}
              deriving (Show)

newFilter = Filter False False False

data Basic = Basic Image Point Filter
             deriving (Show)


flatten :: Point -> Picture -> [Basic]

flatten (x,y) (Img image)        = [Basic image (x,y) newFilter] 
flatten (x,y) (Sur pic1 pic2)  = flatten (x,y) pic1 ++ flatten (x, y + height pic1) pic2
flatten (x,y) (Acote pic1 pic2) = flatten (x,y) pic1 ++ flatten (x + width pic1 , y) pic2
flatten (x,y) (Sous pic1 pic2)   = flatten (x,y) pic1 ++ flatten (x,y) pic2
flatten (x,y) (SymH pic)        = map symFH $ flatten (x,y) pic
flatten (x,y) (SymV pic)        = map symFV $ flatten (x,y) pic
flatten (x,y) (Negative pic)     = map symNeg $ flatten (x,y) pic


symFH (Basic img (x,y) f@(Filter {fH=boo}))   = Basic img (x,y) f{fH = not boo}
symFV (Basic img (x,y) f@(Filter {fV=boo}))   = Basic img (x,y) f{fV = not boo}
symNeg (Basic img (x,y) f@(Filter {neg=boo})) = Basic img (x,y) f{neg = not boo}


convert :: Basic -> String

convert (Basic (Image (Name name) (width, height)) (x,y) (Filter fH fV neg))
  = "\n  <image x=\"" ++ show x ++ "\" y=\"" ++ show y ++ "\" width=\"" ++ show width ++ "\" height=\"" ++
    show height ++ "\" xlink:href=\"" ++ name ++ "\"" ++ symPart ++ negPart ++ "/>\n"
        where
          symPart 
              = if      fH && not fV 
                then " transform=\"translate(0," ++ show (2*y + height) ++ ") scale(1,-1)\" " 
                else if fV && not fH 
                then " transform=\"translate(" ++ show (2*x + width) ++ ",0) scale(-1,1)\" " 
                else if fV && fH 
                then " transform=\"translate(" ++ show (2*x + width) ++ "," ++ show (2*y + height) ++ ") scale(-1,-1)\" " 
                else ""
          negPart 
              = if neg 
                then " filter=\"url(#negative)\"" 
                else "" 



render :: Picture -> IO ()

render pic 
 = 
   let
       picList = flatten (0,0) pic
       svgString = concat (map convert picList)
       newFile = preamble ++ svgString ++ postamble
   in
     do
       outh <- openFile "svgOut.xml" WriteMode
       hPutStrLn outh newFile
       hClose outh



preamble
 = "<svg width=\"100%\" height=\"100%\" version=\"1.1\"\n" ++
   "xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n" ++
   "<defs>" ++
   "<filter id=\"negative\">\n" ++
   "<feColorMatrix  in=\"SourceGraphic\" type=\"matrix\"\n"++
   "values=\"-1 0  0  0  0  0 -1  0  0  0  0  0 -1  0  0  1  1  1  0  0\" />\n" ++
   "</filter>\n"++
   "<filter id=\"greyscale\">\n" ++
   "<feColorMatrix in=\"SourceGraphic\" type=\"matrix\"\n" ++
   "values=\".33 .33 .33 0 0 .33 .33 .33 0 0 .33 .33 .33 0 0 0 0 0 1 0\"/>\n" ++
   "</filter>\n" ++
   "</defs>\n"

postamble
 = "\n</svg>\n"


conan = Img $ Image (Name "Conan.jpg") (357,266)

test = (conan `aCote` (symV $ negative conan)) 
                      `sur` 
       ((symH $ negative conan) `aCote` (symH $ symV conan))

test2 = test `aCote` symV test  
\end{haskellcode}



\end{exercice}

\modenormal
%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "moduleImages"
%%% End: 
