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.

Notes modifier


Voir aussi modifier

Liens externes modifier


Calcul numérique < > Graphiques et sons