Aller au contenu

Découvrir Scilab/Matrices creuses

Un livre de Wikilivres.

Table des matièresIndex



4. Matrices creuses


Qu'est-ce qu'une matrice creuse ?

[modifier | modifier le wikicode]

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 | modifier le wikicode]

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 | modifier le wikicode]

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.


Liens externes

[modifier | modifier le wikicode]

Calcul numérique < > Graphiques et sons