Découvrir Scilab/Matrices creuses

Table des matièresIndex



4. Matrices creuses


Qu'est-ce qu'une matrice creuse ?

modifier

Une matrice creuse est une matrice dont seuls les éléments non nuls sont stockés en mémoire, par opposition à une matrice pleine dont tous les termes sont rangés en mémoire. Dans le cas de matrices diagonales, ou de matrices ne comportant qu'un faible nombre d'éléments non nuls, l'économie en terme de mémoire peut être considérable.

Outre cette économie en terme de mémoire, l'utilisation de matrices creuses peut accélérer fortement certains calculs.

Création d'une matrice creuse

modifier

La fonction sparse permet de créer des matrices creuses, ou de convertir une matrice pleine en matrice creuse.

Syntaxe Description Exemple
sparse (A)
Transforme la matrice A en une matrice creuse
-->A = [0, 1; 2, 0]
 A  =
 
    0.    1.  
    2.    0.  
 
-->sparse (A)
 ans  =
 
(    2,    2) sparse matrix
 
(    1,    2)        1. 
(    2,    1)        2.
sparse (ij, v [,mn])
Crée une matrice creuse :
  • ij : matrice à deux colonnes donnant la position des éléments non nuls ;
  • vv : vecteur donnant la valeur des éléments non nuls ;
  • nm : vecteur à deux éléments donnant la dimension de la matrice.
-->A = sparse ([1, 2; 4, 3], [1, 1])
 A  =
 
(    4,    3) sparse matrix
 
(    1,    2)        1. 
(    4,    3)        1. 
 
-->full (A)
 ans  =
 
    0.    1.    0.  
    0.    0.    0.  
    0.    0.    0.  
    0.    0.    1.
sparse ([], [], [n, m])
Crée une matrice creuse "vide" de dimension n*m. Équivalent au code matlab :
sparse (n, m)
-->A = sparse ([], [], [2, 3])
 A  =
 
(    2,    3) zero sparse matrix
 
 
-->full (A)
 ans  =
 
    0.    0.    0.  
    0.    0.    0.

Matrice diagonale

modifier

La fonction Matlab spdiags n'existe pas sous scilab. Pour créer une matrice diagonale, il faut passer par la fonction générique sparse de création d'une matrice creuse :

sparse ([1:n; 1:n]', d)
  • n : dimension de la matrice;
  • d : vecteur des valeurs de la diagonale.

Exemple :

d = [1, 5, 2, 4]
 d  =
 
    1.    5.    2.    4.
A = sparse ([1:4; 1:4]', d)
 A  =
 
(    4,    4) sparse matrix
 
(    1,    1)        1. 
(    2,    2)        5. 
(    3,    3)        2. 
(    4,    4)        4.
full (A)
 ans  =
 
    1.    0.    0.    0.  
    0.    5.    0.    0.  
    0.    0.    2.    0.  
    0.    0.    0.    4.


Voir aussi

modifier

Liens externes

modifier

Calcul numérique < > Graphiques et sons