Découvrir Scilab/Matrices creuses
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 :
|
-->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.
|
Notes
[modifier | modifier le wikicode]