• Non ci sono risultati.

Matrici sparse Una matrice si dice sparsa se il numero di elementi non nulli `e piccolo rispetto al numero totale degli elementi della matrice.

N/A
N/A
Protected

Academic year: 2021

Condividi "Matrici sparse Una matrice si dice sparsa se il numero di elementi non nulli `e piccolo rispetto al numero totale degli elementi della matrice."

Copied!
6
0
0

Testo completo

(1)

Matrici sparse

Una matrice si dicesparsase il numero di elementi non nulli `e piccolo rispetto al numero totale degli elementi della matrice.

l o a d w e s t 0 4 7 9 ; % carica il contenuto del file

% west0479.mat in una matrice in formato sparso W = w e s t 0 4 7 9 ; c l e a r w e s t 0 4 7 9

w h o s

N a m e S i z e B y t e s C l a s s A t t r i b u t e s

W 479 x 4 7 9 3 4 0 3 2 d o u b l e s p a r s e

spy( W ) % per vedere il pattern della matrice

A =f u l l( W ); % genera una mat. in formato full

% contenente gli stessi elementi di W w h o s

N a m e S i z e B y t e s C l a s s A t t r i b u t e s

A 479 x 4 7 9 1 8 3 5 5 2 8 d o u b l e

W 479 x 4 7 9 3 4 0 3 2 d o u b l e s p a r s e

(2)

Vantaggi della forma sparsa

1 Risparmio di memoria

2 Risparmio di cpu-time nel calcolo di prodotti matrice-vettore Esempio. Costruire un vettore colonna x di dimensione

n=length(A) di numeri casuali, calcolare 1000 volte i prodotti y=A*x e z=W*x e prendere i tempi di calcolo

tic

for i = 1 : 1 0 0 0 y = A * x ; end toc tic

for i = 1 : 1 0 0 0 z = W * x ; end toc

(3)

Generazione di una matrice in formato sparse

A =s p a r s e( n ); % genera una matrice A (n x n) nulla

% in formato sparse

Esempio: definire una matrice i cui elementi sulla diagonale principale sono uguali a 3, quelli in prima riga e in prima colonna (ad eccezione di a11) siano uguali a 1, mentre i restanti siano nulli.

n = 2 0 ;

A =3*s p e y e( n );

A ( 1 , : ) = 1 ; % prima riga di A <−−− tutti 1 A ( : , 1 ) = 1 ; % prima colonna di A <−−− tutti 1

spy( A ) % visualizzo il pattern

A % visualizzo A a video

(4)

Ordinamento delle diagonali

Le diagonali di una matrice sono ordinate come nella figura qui sotto a sinistra:

−3

−2

−1 3

2

1 0

(5)

Comandi veloci per generare una matrice sparsa definita per diagonali Sia A una matrice quadrata di dimensione 20 di elementi:

2 sulla diagonale principale, 1 sulla diagonale di indice -4, -3 sulla diagonale di indice 10.

I comandi sono:

e=ones(20,1); % e deve essere vettore colonna A=spdiags([e,2*e,-3*e],[-4,0,10],20,20);

−3

−2

−1 3

2

1 0

(6)

Conversione sparse ↔ full

`E possibile convertire una matrice da formato sparso a classico e viceversa:

sparseconvertedouble array in double (sparse) array fullconverte double (sparse) array in double array Se A1 contiente un array di tipo sparso e A un array di tipo classico (full).

AF1 =f u l l( A1 ); % copia A1 (sparse) in AF1 (full)

AS =s p a r s e( A ); % copia A (full) in AS (sparse) Operazioni con matrici sparseLe matrici sparse sono trattate in matlab come le matrici piene, si possono fare le operazioni elementari, applicare lu, meg, \,...

Alle matrici sparse non si possono applicare i seguenti comandi:

c o n d( A )

Riferimenti

Documenti correlati

Nell’applicarla, conviene scegliere la riga o la colonna con il maggior numero di zeri, in modo da ridurre il numero di addendi

[r]

Scrivere una seconda matrice di simmetria M2, che rifletta rispetto ad un piano passante per l’origine e ortogonale a v (esprimere M2 come prodotto di matrici date o note). 2) Sia

Identifichiamo V o 2 ed R 2 fissando nel piano un sistema di riferimento cartesiano ortogo- nale monometrico destrorso (cio` e tale che l’angolo dal primo asse al secondo sia retto

Una matrice quadrata in cui tutti gli elementi con indici diversi sono nulli si dice

Posizione re- ciproca di una retta e di un piano nello spazio.. Posizione reciproca di due piani

 Tutte le applicazioni lineari invertibili

Il prodotto di due matrici invertibili ha determinante