Page d'accueil | Description du projet |
Tout d'abord : les sources en tar.gz : Sources
Ensuite : accès à l'ensemble du code : Index (Ensemble généré par gnathtml.pl (GNATMAKE 3.12p (19990629) Copyright 1995-1999 Free Software Foundation, Inc.)
Enfin, personne ne me croira jamais : la première version de la représentation des matrices a été faite avec CAML 0.71 pour Windows. Les graphiques en CAML, c'est très très lent mais si on est patient, ça marche...
Bon, le but est assez simple : calculer les valeurs propres d'une
matrice par un algorithme itératif et représenter
l'évolution de l'algorithme sur les différentes
itérations.
Nous avons choisi de représenter les
matrices en 3 dimensions comme ci-dessous.
Honnêtement, je n'en sais rien :-)
Alors là, le mieux est de vous réferer au rapport qu'on avait fait à l'époque : Version PDF. De façon simplifiée : on part d'une matrice A quelconque (aléatoire dans notre étude). On pose A0 = A. Et on cherche la décomposition QR de A0.
A0 = Q0 * R0
On en déduit la matrice A1 :
A1 = R0 * Q0 = Q1 * R1
On en déduit A2 etc... Petit à petit, la suite (An) converge vers une matrice diagonale dont les valeurs propres sont les mêmes que celle de A0.
Pour la représentation, j'ai utilisé un petit algorithme inspiré du ray-tracing : les couleurs des faces sont issues d'une fonction linéaire de l'angle entre les rayons lumineux (issus d'une source ponctuelle) et la normale à une face.
Itération 0 : Au départ, on part d'une matrice 25x25 dont les coefficients sont choisis de façon aléatoire (répartition uniforme dans [-1..1]).
Itération 2 : Peu à peu, la diagonale de valeurs propres apparaît.
Itération 5 :
Itération 10 :
Itération 20 : Les coefficients de la diagonale sont déjà presque tous stabilisés, les derniers vont mettre plus de 1000 itérations pour passer en-dessous du seuil de négligeabilité (représenté par la transparence).
Itération 1190 : Tous les coefficients sont là, le calcul a pris 2h sur un P167 ; le code n'était pas optimisé mais bon ...