lettura facile

Le matrici sparse simmetriche su Octave

In questa lezione ti spiego come creare una matrice sparsa simmetrica su Octave tramite un esempio pratico.

Cos'è una matrice sparsa simmetrica? Una matrice è simmetrica quando gli elementi simmetrici rispetto alla diagonale principale hanno gli stessi valori. Ad esempio
un esempio di matrice simmetrica
E' detta sparsa se sono indicati solo gli elementi non nulli. Ad esempio un esempio di matrice sparsa
Per saperne di più sulle matrici sparse.

Per creare una matrice sparsa simmetrica usa la funzione sprandsim()

>> sprandsym(3,0.5)

La funzione sprandsym ha due parametri

  • Il primo parametro (3) è il numero di righe e colonne della matrice quadrata che vuoi creare. In questo caso è una matrice 3x3
  • Il secondo parametro (0.5) è compreso tra 0 e 1 e indica la densità dei valori non nulli nella matrice. In questo caso è del 50%.

Il risultato in output è una matrice sparsa simmetrica

ans =
Compressed Column Sparse (rows = 3, cols = 3, nnz = 5 [56%])

(3, 1) -> 1.7294
(2, 2) -> 0.92310
(3, 2) -> -0.090084
(1, 3) -> 1.7294
(2, 3) -> -0.090084

I numeri tra parentesi indicano il numero di riga e di colonna dell'elemento.

Ad esempio, l'elemento (3,1) si trova sulla terza riga alla prima colonna.

Prova a ricostruire la matrice a partire dai dati sparsi

$$ \begin{pmatrix} 0 & 0 & 1.7294 \\ 0 & 0.92310 & -0.090084 \\ 1.7294 & -0.090084 & 0 \end{pmatrix} $$

Come puoi vedere è una matrice simmetrica.

Gli elementi simmetrici sopra e sotto la diagonale principali hanno gli stessi valori.

Spiegazione. Due elementi sono simmetrici quando inverti il numero della riga con il numero della colonna. Ad esempio, l'elemento (1,3) si trova sulla prima riga alla terza colonna. L'elemento simmetrico (3,1) si trova sulla terza riga alla prima colonna. Entrambi gli elementi hanno lo stesso valore 1.7294.
quando due elementi sono simmetrici

Se questa lezione di StemKB è utile, continua a seguirci.

 




Se qualcosa non ti è chiaro, scrivi la tua domanda nei commenti.




FacebookTwitterLinkedinLinkedin