Bonjour,

Voici un petit algorithme que j'essaie de comprendre depuis un moment mais sans grand résultats... J'espère que vous pourrez m'éclairer.

1) On a une matrice symétrique W\in \mathbb{R}^{n \times n}.
Ex:
W =
( a , b , c )
( b , d , e )
( c , e , f )

2) On pose W' la partie triangulaire supérieure de la matrice.
W' =
( a , b , c )
( 0 , d , e )
( 0 , 0 , f )

3) On passe la matrice W' en notation sparse (et c'est là que ça devient moins drôle...):
- On pose I un vecteur contenant les indexes des lignes des coefficients non nuls de la matrice (de haut en bas colonne par colonne de gauche à droite).
- On pose J un vecteur de taille n+1 tel que J(k+1)-J(k) soit le nombre de coefficients non nuls sur la k-ème colonne.
- On pose S un vecteur contenant tous les coefficients non nuls de la matrice W' (de gauche à droite et de haut en bas).
Ex:
I = (1,1,2,1,2,3);
J = (0,1,3,6);
S = (a,b,c,d,e,f);

4) On procède finalement à la boucle suivante:

X = (0,0,0);
conteur = 1;

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
for k de 1 à n
    for i de 1 à (J(k+1)-J(k))
        X(I(conteur))= X(I(conter)) + S(conteur);
        conteur = conteur + 1;
    end;
end;
J'avoue ne vraiment pas comprendre ce que cet algorithme calcul exactement... Si quelqu'un à une idée c'est avec plaisir.
Merci d'avance