Motivazione:
Fattorizzazioni di matrici
speciali
Diminuire la complessità
computazionale = evitare
operazioni inutili = risparmiare tempo
di calcolo
Diminuire l’occupazione di memoria
Come si fa?
Matrici simmetriche
Si tiene conto delle proprietà della
matrice dei coefficienti note a priori
Definizione:
Occupazione di memoria:
struttura (elementi diversi da zero)
proprietà spettrali (autovalori)
...
Algoritmi di fattorizzazione ad hoc
1
Fattorizzazione di matrici
simmetriche
Si considera una variante della
fattorizzazione di Gauss (Hp: i minori
principali di A sono non nulli)
dove
Fattorizzazione di matrici
simmetriche
Se A è simmetrica (Hp: i minori
principali di A sono non nulli)
Occupazione di memoria: (solo L e
D)
Complessità computazionale: (solo L
e D)
Pivoting?
Se A è simmetrica, PA in generale non lo
è.
Pivoting parziale non direttamente
applicabile al calcolo della
fattorizzazione
Pivoting diagonale per mantenere la
simmetria
Varianti della fattorizzazione (BunchParlett) per avere stabilità
Pro e contro della strategia di
pivoting parziale
Rende stabile
l’algoritmo di
fattorizzazione
Modifica la
struttura delle
matrici (es. perdita
di simmetria)
Ha senso chiedersi se esistono classi di matrici per cui
la condizione di pivoting parziale è sempre soddisfatta
2
Condizioni sufficienti
Esempio
Matrici strettamente a diagonale
dominante
per righe
per colonne
Proprietà:
Non singolare
Tutti i minori principali sono non nulli
Sono fattorizzabili nella forma
non è strettamente diagonale dominante
è strettamente diagonale dominante
Condizioni sufficienti
Si dimostra che se A è strettamente
diagonale dominante per colonne,
nel procedimento di Gauss con
pivoting parziale non avvengono
scambi di righe.
L’algoritmo di fattorizzazione è
stabile
Matrici simmetriche definite positive
Proprietà:
Tutti gli autovalori sono reali positivi
Non singolare
Tutti i minori principali sono positivi
Teorema di Von Neumann-Goldstine
Gli elementi che si incontrano nell’algoritmo non diventano
mai troppo grandi rispetto agli elementi di A
3
Teorema di Cholesky
Una matrice
simmetrica è
definita positiva se e solo se esiste
una e una sola matrice
triangolare inferiore con elementi
diagonali positivi tale che
Fattorizzazione di Cholesky
Si ottiene con metodo di
pavimentazione, ossia sfruttando
l’uguaglianza matriciale enunciata
dal teorema di Cholesky
Fattorizzazione di Cholesky
Caso 3x3
Caso 3x3
Noti gli elementi di A, si vogliono calcolare gli elementi
di L sfruttando la definizione del prodotto righe-colonne
4
Caso 3x3
Caso 3x3
Caso 3x3
Caso 3x3
5
Caso 3x3
=
=
=
6
Algoritmo di Cholesky
Algoritmo di Cholesky
Prodotto scalare delle prime j-1 componenti
della riga j di L con se stessa
Prodotto scalare delle prime j-1 componenti
della riga j di L con la riga i
Esempio
Esempio
?
Dal teorema di Choleski possiamo
concludere che A non è definita positiva
7
Complessità computazionale
Stabilità
Dobbiamo trovare un solo fattore:
La fattorizzazione di Cholesky stabile
nel senso che gli elementi della
matrice triangolare
non
diventano “troppo grandi”.
n estrazioni di radice: per evitarle
Se le quantità sotto radice sono
negative, la matrice non è definita
positiva.
Soluzione di un sistema
Sostituzione all’avanti
Sostituzione all’indietro
Matrici con struttura
Sostituzione all’avanti
Sostituzione all’indietro
8
Matrici a banda
Se non è necessario il pivoting
Caso particolare: matrici
tridiagonali
Supponiamo non sia necessario il pivoting
(Hp: minori principali non nulli).
Minore complessità computazionale
Se è necessario il pivoting la matrice
L ha banda r, ma R ha banda
superiore 2s
9
Si sfruttano le uguaglianze matriciali per ottenere la
fattorizzazione (metodo di pavimentazione), cioè
i-esima riga di L
i-esima riga di L
(i +1)-esima colonna di R
(i -1)-esima colonna di R
Algoritmo di fattorizzazione
per matrici tridiagonali
Complessità computazionale
i-esima riga di L
i-esima colonna di R
10
Soluzione di un sistema
Osservazione
La complessità computazionale
della fattorizzazione e soluzione di
un sistema tridiagonale è
Complessità computazionale
Osservazione
Non è più vero se si effettuano
scambi
Esempio
Matrici sparse
Matrici in cui il numero di elementi
non nulli è piccolo.
Richiedono minore occupazione di
memoria.
Minore complessità computazionale
nelle operazioni (es. prodotto
matrice-vettore).
11
Memorizzazione per colonne
di una matrice sparsa
14 float
2*14 int
oppure
14 + 6 int
elementi
non nulli
4
-1
1
2
5
2
2
2
-1
1
8
3
2
16
indici
di riga
1
2
4
5
1
2
1
5
1
3
4
1
2
5
1
1
1
indici
1
di
colonna 2
2
3
3
4
4
4
5
5
5
oppure
“puntatori”
alle colonne
1
5
7
9
12
15
Gli elementi della fattorizzazione non
sono necassariamente sparsi
L’occupazione di memoria per L e U
potrebbe essere superiore a quella
necessaria per memorizzare A
Esempio
Questo fenomeno si chiama fill-in
(riempimento)
A è sparsa ma i suoi fattori L ed R non lo sono
Esistono tecniche di riordinamento di
una matrice che, permutando righe
e colonne, servono per minimizzare il
fill-in (es. minimum- degree
reordering)
12