%Last modified: <rotations_info2.tex modifié par  Guillaume CONNAN le mercredi 16 janvier 2013 à 11h 27min 50s>
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\chapterimage{lena}

\chaptertext{
L'étude des rotations vectorielles prolonge notre travail sur le calcul
matriciel et les espaces vectoriels. C'est un outil indispensable pour
l'informatique  et les  mathématiques qui  permettent de  modéliser le
mouvement. Les projections  sont elles utilisées de manière beaucoup
plus générale,  par exemple dans  le traitement des images  qui sera
notre  champ   d'action.  Nous  étudierons  un   outil  algébrique  de
compression d'image qui nous fera rentrer dans le monde merveilleux de
la réduction d'endomorphismes...
}

\chapter{Algèbre: niveau 2}

\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
$\mathfrak{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 $\BR$ 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}_{\BR}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}_{\BR}f$, $N={\rm mat}_{\BR}g$ et 
$U={\rm mat}_{\BR}\ve{u}$. Or 
$$f\circ g\pav{\ve{u}}=f\Big(g\pav{\ve{u}}\Big)$$

donc, point de vue matrice:

$${\rm mat}_{\BR}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 $\BR$ de
    $\bbr^3$.

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



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

En particulier, avec les notations habituelles, 


$${\rm mat}_{\BR}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 $  \mathfrak{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 $ \mathfrak{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 $ \mathfrak{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 $\BR$ et  $\BR\,'$ deux bases de $\bbr^3$.  On appelle matrice de
    passage  de  $\BR$  à  $\BR\,'$   et  on  note  $\mat(\BR\,')$  ou  encore
    $\PR_{\BR,\BR\,'}$  la  matrice de  \mn  dont  les  colonnes sont  les
    vecteurs de $\BR\,'$ exprimés dans $\BR$~:


$$ \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]
$$\PR_{\BR\,',\BR}=\PR_{\BR,\BR\,'}^{-1}$$      

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


$$\PR_{\BR\,',\BR}=\tr \PR_{\BR,\BR\,'}$$ 
\end{propriete}


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


Soit $\ve{v}$  un vecteur  dont les coordonnées  dans une  certaine base
$\BR$ 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_{\BR,\BR\,'}\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=\PR_{\BR,\BR\,'}V'$, alors $$V'=\PR_{\BR,\BR\,'}^{-1}\times V$$

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

 $$V'=\tr\PR_{\BR,\BR\,'}\times V$$


\subsection{Relation de Chasles}


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

Mais on a aussi $V'=\PR_{\BR\,',\BR}\times V$ et $V''=\PR_{\BR\,'',\BR\,'}\times V'$ donc 

$$V''=\PR_{\BR\,'',\BR\,'}\times \PR_{\BR\,',\BR}\times V$$

Finalement~:
\begin{propriete}[relation de Chasles]
$$\PR_{\BR\,'',\BR}=\PR_{\BR\,'',\BR\,'}\times \PR_{\BR\,',\BR}$$
\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~:

$$\PR_{\BR,\BR\,'}\times W'=A\times \PR_{\BR,\BR\,'}\times V'$$

et donc 


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


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


\begin{theoreme}[transformation orthogonale et changement de base]
    $$\mat[\,']f=\tr\PR_{\BR,\BR\,'}\times \mat f\times \PR_{\BR,\BR\,'} $$
   \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{\BR}\ \bbr^3 @>{f}>{\psframebox*[fillcolor=yellow]{\ds A}}> \bbr^3\ \psovalbox{\BR}\\
% @V{\psdiabox*[fillcolor=yellow]{\PR_{\BR,\BR\,'}}}VV @VV{\psdiabox*[fillcolor=yellow]{\PR_{\BR,\BR\,'}}}V\\
%  \psovalbox{\BR\,'}\ \bbr^3 @>{f}>{\ds\textcolor{blue}{A'}}> \bbr^3\ \psovalbox{\BR\,'}\\
% \end{CD}
\begin{CD}
\BR\ \bbr^3 @>{f}>{{\ds A}}> \bbr^3\ \BR\\
@V{{\PR_{\BR,\BR\,'}}
}VV @VV{{\PR_{\BR,\BR\,'}}}V\\
 {\BR\,'}\ \bbr^3 @>{f}>{\ds\textcolor{blue}{A'}}> \bbr^3\ {\BR\,'}\\
\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
couleurs.  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 $\BR$. Si A est
la matrice de $f$ dans $\BR$ et $V$ le vecteur colonne des coordonnées
de $v$ dans $\BR$, 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 $\BR$ 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
%%
%
%
%
\section{EXERCICES}

\subsection{Rotations}

\begin{exercice}[reconnaître une application linéaire]
  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 $\BR_0$.
\begin{enumerate}
\item       Montrez       que       $\ve{v_2}$      de       coordonnées
  $\left(\frac{2}{3},-\frac{2}{3},\frac{1}{3}\right)$  dans  $\BR_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}


\subsection{Lena...}

La petite histoire  dit que des chercheurs  américains de l'University
of Southern California étaient pressés de trouver une image de taille
$512\times  512$  pour  leur  conférence.  Passe  alors  un  de  leurs
collègues avec le  dernier Playboy sous le bras.  Ils décidèrent alors
d'utiliser le poster 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}$...


\subsubsection{Python}

Nous   aurions  pu   utiliser   \textsf{Caml } qui   a   un  module   graphique
puissant.  Cependant,  il  code  les  couleurs  sur  24  bits  ce  qui
compliquerait notre approche naïve.

Nous allons donc utiliser \textsf{Python}  qui est très simple d'utilisation,
possède des bibliothèques  très utiles pour illustrer  notre propos et
permet  de retrouver  des  outils fonctionnels  comme \texttt{map}  et
\texttt{lambda} qui correspond au \texttt{fun} de \textsf{Caml}.

Nous  utiliserons \textsf{iPython}  pour dialoguer  avec \textsf{Python}  qu'on
lancera  avec l'option  \texttt{pylab} qui  charge tout  ce dont  nous
aurons besoin.

\shell


\begin{lstlisting}[caption={}]
$ ipython --pylab
\end{lstlisting}

Nous  pouvons travailler  dans emacs  avec un  buffer contenant  notre
fichier \texttt{lena.py} et un  buffer \textsf{shell} dans lequel nous
avons  ouvert  \textsf{iPython}  qui  a  quelques  commandes  magiques
(c'est le terme officiel) comme \lstinline+%paste+ et \lstinline+%run+.
Découvrons d'abord Lena:

\pyth

\begin{lstlisting}[caption={}]
from scipy import misc

l = misc.lena()
imshow(l,cmap=cm.gray)
\end{lstlisting}


%\begin{figure}
\begin{center}
  \includegraphics[width=4.25cm]{lena0}
\end{center}
%\end{figure}


\begin{lstlisting}[caption={}]
In [8]: type(l)
Out[8]: numpy.ndarray

In [9]: shape(l)
Out[9]: (512, 512)
\end{lstlisting}

Ceci indique que \texttt{t} est un tableau de tableaux de taille 512.

Commentez la fonction suivante et le résultat de son utilisation:

\begin{lstlisting}[caption={}]
def tourne(m):
    n = len(m)-1
    return(array([[m[j,i] for j in range(n)] for i in range(n)]))

imshow(tourne(l),cmap=cm.gray)
\end{lstlisting}

Dans  la   suite,  nous  aurons   peut-être  besoin  de   la  fonction
\texttt{map}:

\begin{lstlisting}[caption={}]
In [10]: map(lambda x: x**2, array([1,2,3]))
Out[10]: [1, 4, 9]
\end{lstlisting}

de la  fonction \texttt{dot}  qui multiplie deux  tableaux au  sens du
produit de matrices:

\begin{lstlisting}[caption={}]
In [12]: dot(array([[1,2,3]]) , array([[4],[5],[6]]))
Out[12]: array([[32]])
\end{lstlisting}

du produit d'un scalaire par une matrice:

\begin{lstlisting}[caption={}]
In [13]: 5 * array([[1,2,3]])
Out[13]: array([[ 5, 10, 15]])
\end{lstlisting}

d'une matrice de zéros de taille quelconque:

\begin{lstlisting}[caption={}]
In [14]: zeros((2,3))
Out[14]: 
array([[ 0.,  0.,  0.],
       [ 0.,  0.,  0.]])
\end{lstlisting}


\subsubsection{Manipulations de Lena}

Comment obtenir les images suivantes:


\begin{multicols}{3}
  \includegraphics[height=4.25cm]{lena_miroir}

 \includegraphics[height=4.25cm]{lena_retourne}

 \includegraphics[height=4.25cm]{lena_retourne_miroir}
\end{multicols}


Sachant que la palette  de niveaux de gris en 8 bits  part du 0 (noir)
vers 255 (blanc):


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



On peut  modifier le  contraste en \og  mappant\fg{} par  une fonction
croissante ou bien une fonction décroissante sur [0;255].

On peut  même imaginer  d'autres manipulations  si l'on  dispose d'une
fonction qui applique une fonction sur un tableau, if you see what I mean...
Comment obtenir ces images:



\begin{multicols}{3}
  \includegraphics[height=4.25cm]{lena_contraste_cube}

 \includegraphics[height=4.25cm]{lena_contraste_rac}

 \includegraphics[height=4.25cm]{lena_neg}
\end{multicols}


On peut modifier la taille, dupliquer. Comment obtenir ceci:





\begin{multicols}{3}
  \includegraphics[height=4.25cm]{lena_demi}

 \includegraphics[height=4.25cm]{lena_yeux}

 \includegraphics[height=4.25cm]{lena9}
\end{multicols}





Tout  ceci  prend  un  peu  de  place en  mémoire.  Il  est  temps  de
compresser. Une première  idée est de réduire le nombre  de niveaux de
gris disponibles.

Par exemple, on  peut décider que les  gris de 0 à 63  vaudront 0, les
gris de 63 à 127 vaudront 1, etc.

Créez une  fonction qui permet  d'obtenir les images  suivantes (ayant
respectivement 4 et 32 niveaux de gris):



\begin{multicols}{2}
  \includegraphics[height=5cm]{lena_pauvre64}

 \includegraphics[height=5cm]{lena_pauvre8}
\end{multicols}

On peut être beaucoup plus efficace en utilisant la SVD.
En effet, la matrice image peut être décomposée sous la forme:
$
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
$

avec les $\sigma_i$ de plus en  plus petits. On peut donc approximer A
en ne  gardant que  les premiers  termes de la  somme sachant  que les
derniers sont multipliés par des \og petits\fg{} $\sigma_i$.

Le  problème   est  d'obtenir  cette   décomposition.  \textsf{Python}
heureusement s'en charge:

\begin{lstlisting}[caption={}]
In [17]: U,s,tV = linalg.svd(l)
\end{lstlisting}

La somme  obtenue n'est pas  forcément entière. On utilisera  alors la
fonction \texttt{floor} qui peut s'appliquer à un tableau entier.
Voici  ce   qu'on  obtient  avec  20,   50  et  100  termes   dans  la
suite. Quelles sont les économies réalisées?




\begin{multicols}{3}
  \includegraphics[height=4.25cm]{lena_svd20}

 \includegraphics[height=4.25cm]{lena_svd50}

 \includegraphics[height=4.25cm]{lena_svd100}
\end{multicols}


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