Matrici di permutazione Si dice matrice di permutazione elementare una matrice ottenuta dall identità scambiando due righe i e j o due colonne i e j. P ij =...... P ij ha come effetto di scambiare le righe i e j di. P ij ha come effetto di scambiare le colonne i e j di. P ij = P T ij. Dunque P ijp ij = I è ortogonale e involutoria. Si dice matrice di permutazione P il prodotto di permutazioni elementari. P = P ij P kl P rs...p uv P T = (P ij P kl P rs...p uv ) T = P uv...p rs P kl P ij...
P P T = P ij P kl P rs...p uv P uv...p rs P kl P ij = I P è ortogonale.
Fattorizzazione di una matrice qualunque con trasformazioni elementari di Gauss Lo scopo è quello di risolvere sistemi in cui, pur essendo non singolare, non è fattorizzabile nella forma LR. = x = b b 2 Se si permutano le due equazioni si ottiene un sistema equivalente e fattorizzabile secondo Gauss. Ciò significa premoltiplicare ambo i membri del sistema per una matrice di permutazione elementare: b P = P x = P b x x 2 = Teorema. Sia una matrice m n. Esiste una matrice di permutazione P m m tale che P = LR ove L è una matrice m m triangolare inferiore con sulla diagonale e R è una matrice m n trapezoidale superiore, tale che rango()=rango(r). Se è quadrata non singolare, anche R è quadrata delle stesse dimensioni, non singolare. La dimostrazione è costruttiva. Consideriamo la prima colonna di. Se c è un elemento a r, si premoltiplica per una matrice di permutazione elementare P che b 2
scambia le righe r e per portare l elemento in posizione perno e poi si esegue una trasformazione elementare di Gauss L che annulla tutti gli elementi della prima colonna al di sotto dell elemento diagonale. Se al contrario tutta la prima colonna è nulla e, in tal caso, si pone P = L = I. L P = 2 Si cerca un elemento non nullo sulla seconda colonna dalla posizione di riga 2 alla riga n. Se esiste tale elemento, si porta in posizione perno, scambiando la seconda riga con la riga in cui sta l elemento (mediante la permutazione P 2 ) e poi si esegue una trasformazione di Gauss L 2 per annullare tutti gli elementi al di sotto della posizione perno. ltrimenti si pone L 2 = P 2 = I e si prosegue. Dopo k = min(m, n) passi si ottiene L k P k...l P = R ove R è una matrice m n, R = k+. Se m n, k = m, R = @ \......... \...... \... Se m > n, k = n, R = \...... \... \ C Gli elementi diagonali di R sono nulli in corrispondenza dei perni nulli.
Per esempio, se è quadrata di ordine n non singolare, esiste ul elemento diverso da sulla prima colonna (altrimenti ci sarebbe una colonna nulla) e pertanto si esegue una permutazione per portarlo in posizione perno e una trasformazione di Gauss: L P = a (2)...... a (2) n......... à 2............ C = 2 Ora nella prima colonna di à 2 esiste almeno un elemento non nullo, altrimenti det( 2 ) =. Ma 2 è prodotto di matrici non singolari e, quindi, è non singolare. l passo j, L j P j...l P = j = a (j)...... a (j) n \...... a (j) jj...... à j C j è non singolare perchè prodotto di matrici non singolari. Uno degli elementi della prima colonna di à j è non nullo, poichè altrimenti det( j ) =. Pertanto in k = n passi si ottiene con R non singolare. L n P n...l P = R
In generale Si pone L k P k...l 2 P 2 L P = R S k j = P k P k...p k j S k j = S k j P k j S k j è invertibile e S k j = P k j...p k. llora, L k P k L k P k L k 2 P k 2...L 3 P 3 L 2 P 2 L P = R L k P k L k S k S kp k L k 2 S k S k P k 2...... L 3 S 4 S 4P 3 L 2 S 3 S 3P 2 L S 2 S 2P = R L k (S k L k S k )(S k L k 2 S k )(S k 2L k 2 S k 2 )...... (S 4 L 3 S 4 )(S 3L 2 S 3 )(S 2L S 2 )S = R Si pone P = S e si osserva che S i L i S i = S i (I m (i ) e T i )S i = I S i m (i ) e T i S i = I m i e T i = L i L i ha la stessa struttura di L i. Infatti S i = P k...p i permuta elementi che stanno dalla posizione i a posizioni superiori. S i m (i ) = m (i ) =. x x C i zeri et i S i = e T i llora L k Lk Lk 2... L P = R
P = L = L Gli m ij sono permutati di righe.... L k L k {z } L...... m ij......... R C Ora, si dimostra che, se rango() = r, rango(r) = r, ossia R ha solo r elementi diagonali non nulli. Infatti rango() = r ha r colonne al più linearmente indipendenti (siano i,..., i r ) λ i + λ 2 i2 +...λ r i r = λ i = λ (P T LR i ) +... + λ r (P T LR i r) = λ i = P T L(λ R i +... + λ r R i r) = λ i = λ R i +... + λ r R i r = λ i = rango(r) = r Il sistema da risolvere x = b diventa, con non singolare, poichè P = LR: Ly = P b Rx = y Inoltre vale che: det() = ( ) σ r...r nn ove σ è il numero di permutazioni effettivamente effettuate sulla ennupla (, 2,..., n). Infatti il determinante di ogni matrice di permutazione elementare diversa dall identità vale -.
ESEMPIO. P = I L = @ @ 2 2 2 2 P 2 = @ L 2 P 2 L P [ b] = R = P = P 2 P = @ 2 2 2 @ L P [ b] = L2 = I @ L P b = x 3 = x 2 = x = @ L = @ @ L = L 2 P 2 L P T 2 = L 2 L L I = @ = P = LR @ @
La presenza di un perno nullo è causa d arresto nell algoritmo di eliminazione di Gauss. Occorre ricorrere alla tecnica di ricerca del perno. Cosa accade in presenza di un perno piccolo? Si consideri: @. 2 2 2 [ 2 b 2 ] = @ x x 2 x 3 = @. Teoricamente si può procedere poichè a (2) 22 : m 32 =. = 4 [ 3 b 3 ] = @ 2 @. 9999 4 Le soluzioni esatte sono x 3 =..., x 2 =..., x =. Usando aritmetica finita con t = 4 cifre decimali: x 3 =. x 2 = ( )/ 4 = x = ( )/ = Gli errori in x 2 e x sono grandi. Si noti che il perno a (2) 22 è piccolo ( 4 ). Se c è un piccolo errore nella determinazione di x 3, questo viene amplificato di 4 nel calcolo di x 2 e, di conseguenza, si ripercuote nella determinazione di x. llora occorre evitare che i perni siano molto piccoli (e i moltiplicatori grandi).
[ 2 b 2 ] = @. 2 2 2 2 @. Si può sfruttare la libertà di scelta del perno per rendere l algoritmo più stabile (ossia meno sensibile agli errori di arrotondamento delle operazioni). P 2 [ 2 b 2 ] = @. m 32 = 4 a (3) 33 = 4 =.9999 b (3) 3 = (R y) = Con t = 4 cifre decimali, @.9999 x 3 =. x 2 = x = Si noti che non c è stato esagerato accrescimento nei valori di R, poichè il moltiplicatore è minore di. Calcolo dei residui. r = @ r = @ 4 Con la strategia che sceglie il perno come l elemento di modulo massimo sulla colonna, il residuo resta piccolo.
Stategia di pivoting parziale Si sceglie come perno l elemento a (k) rk tale che a (k) rk = max i=k,n a (k) ik k =, 2,..., n In tal modo i moltiplicatori m ik, i = k +,..., n; k =, 2,..., n. Con questa strategia, è garantito che il residuo è piccolo. ttenzione! Ciò non implica che la soluzione sia accettabile:.78.563.27.93.659.254 Se si applica il pivoting parziale con t = 3 cifre decimali: m 2 =.78.93.659.254.93 =.854.. x 2 = ; x =.443 r =.46.54 Ma la soluzione esatta è x =. r < 3 Questo è un problema di mal condizionamento che non si risolve anche se si usa un algoritmo stabile. Conclusione: la libertà di scelta del perno è sfruttata per dare maggiore stabilità all algoritmo, limitando l amplificarsi degli errori di arrotondamento nelle operazioni.
Esempio. Si usa t = 3, β =. = 3 = @ @.58..52.56.2.56.2.2.4.58..52.6.58.9 Se si pone ɛ = 3, r ii > ɛ e rango() = 3. Se si pone ɛ = 2. 3, r 33 < ɛ e rango() = 2. Se si pone ɛ =, rango() =. Una piccola variazione di ɛ può generare una grande variazione del numero di elementi che si assumono nulli. Si parla di pseudorango numerico di una matrice.
Stategia di pivoting totale l passo k si sceglie come perno l elemento di modulo massimo della sottomatrice Ãk. a (k) ij = max r,s=k,n a (k) rs k =, 2,..., n Ciò richiede di eseguire lo scambio tra la riga i e la riga k e la colonna j e la colonna k. Questo comporta un riordinamento delle soluzioni dopo aver eseguito l algoritmo. Sono richiesti O( n3 3 ) confronti, anche se l algoritmo è più stabile. L algoritmo si basa sul seguente teorema generale. Teorema. Sia una matrice m n di rango r. llora esistono due matrici di permutazione P e Q di ordine m e n rispettivamente tali che: P Q = LR ove L R m m triangolare inferiore unitaria e R trapezoidale superiore m n di rango r, avente esattamente r righe che al di sopra della diagonale principale compresa possono contenere elementi non nulli: P Q = L @ \...... \... r righe rango() = r Se è non singolare, R è triangolare superiore non singolare.
Esempio. = = 2 = L P Q = 3 = L 2 P 2 L P Q Q 2 = = 4 2 3.7 4.4.8 3 2 3 5 C 5 2 3.6.2.8 2.8.6.7.8.6.8.8.6 3.4 C 5 3 2 3.4.6.8.4765.6353.794.742.9882.2353.588.48.7647 4 = L 3 P 3 L 2 P 2 L P Q Q 2 Q 3 = 5 3 2 3.4.6.8.7647.48.588 rango(r) = 3. In aritmetica finita, si deduce uno pseudorango numerico che non è detto che coincida con il rango teorico e dipende dalla tolleranza scelta. C C
Riduzione in scala Invece del pivoting totale (troppo costoso), si può usare la tecnica di riduzione in scala del sistema x = b Si tratta di costruire un sistema equivalente al dato mediante l uso di matrici diagonali (e quindi facilmente invertibili) in modo da abbassare il numero di condizionamento del sistema: D D 2 D 2 x = D b y = d con = D D 2, D 2 x = y e d = D b. Si vuole che K() < K( ), ove con K() si intende il numero di condizione della matrice. Si tratta di determinare D e D 2 diagonali in modo da abbattere il condizionamento del sistema. E un problema complesso. Si possono usare varie tecniche. Prima Idea. Fare in modo che la matrice trasformata sia tale che max j=,n a ij = i =,..., n; in tal caso si pone D = diag(d (),..., d() n ), D 2 = I, con d () i = max j=,n a ij (scalatura per righe) oppure max i=,n a ij = j =,..., n; in tal caso si pone D 2 = diag(d (2),..., d(2) n ), D = I, con d (2) i = max i=,n a ij (scalatura per colonne).
L idea è quella di calcolare d () i (o d (2) i ) a priori e, senza effettivamente eseguire la scalatura sulla matrice, calcolare il pivot come l elemento tale che a (k) rk a (k) rk max j=,n a rj = a(k) rk d() r = max i=k,n a (k) ik.d() i Seconda Idea. Si effettua la scalatura per righe (per colonne) in modo che nx nx a ij = ( j= i= a ij = ponendo d () i = P nj= a ij (d(2) i = P ni= ). a ij La scalatura altera la scelta del pivot. Non è detto, tuttavia, che ciò comporti un miglioramento significativo nella soluzione. Esempio. @ 2 3 6 2 4 2 La soluzione esatta è x = (...,.4...,.9994...) T. Supponendo di lavorare con aritmetica decimale con t = 3 cifre di precisione, si ha: @ 2 3 6 3 2 5.999.999.99 @ 2 3 6 3 2 5.333.325 La soluzione trovata è x = (.975,.,.5) T. Scalando per righe (prima idea), si calcolano d () = /3, d () 2 =
, d () 3 =. llora, si ottiene: @ /3 2/3 2 2 4 2 Di conseguenza, viene alterata la scelta del pivot: @.333.666 2 2 4 2 @.999.666.66.999.99 @.999.666.66.332.328 La soluzione trovata è x = (.987,.,.) T.
Schwarz suggerisce di non eseguire effettivamente la scalatura, ma di scegliere come pivot a (k) rk tale che a (k) rk P n j=k a(k) rj = max i=k,n a (k) ik P n j=k a(k) ij e di ripetere tale scalatura ad ogni passo. Questa tecnica, più costosa del semplice metodo di Gauss con pivoting parziale fornisce buoni risultati. Esempio @ 2 3 6 2 4 2 La soluzione esatta è x = (...,.4...,.9994...) T. Si pone d = /6, d 2 = /3, d 3 =.499. La scelta del pivot è a 2 : @ 2 3 6 2 4 2 @ 3 2 5.999.99 Ora abbiamo d 2 = /5, d 3 =.5. Il pivot resta a (2) 22 : @ 3 2 5.333.33 La soluzione calcolata è bx = (.99,.,.) T
Matrici a banda Si dice che è una matrice a banda con banda superiore s e banda inferiore r se a ij =, j i > s, i j > r. = a... a s+......... a 2s+2 a r+............ a r+22............... a nn Se non è necessario pivoting, la fattorizzazione = LR produce una matrice L di banda inferiore r e una matrice R di banda superiore s. Si ha dunque minore occupazione di memoria e minore complessità computazionale. L =... l r+... l r+22...... r... r s+...... r 2s+2 R =............... C r nn Se è necessario pivoting parziale, L mantiene banda r, ma R ha banda superiore 2s. Il pivoting parziale distrugge la struttura della matrice. C C
Matrici tridiagonali Si consideri una matrice tridiagonale strettamente diagonale dominante oppure non singolare diagonale dominante o definita positiva. Tre vettori c, d, b sono sufficienti a memorizzare gli elementi non nulli delle tre diagonali di. Supponiamo che si debba risolvere il sistema x = f d b c 2 d 2 b 2......... =............... b n C c n d n ove c 2 = b n =. Poichè è a banda con banda superiore e inferiore, L è triangolare inferiore unitaria con banda inferiore e R è triangolare superiore a banda superiore. = l 2... l n C u s......... s n u n C = LR Si osservi che: b i = a ii+ = (...l i...). s i u i+. C = s i i =,..., n
c i = a ii = (...l i...). b i 2 u i. C = l i u i i = 2,..., n 8 >< >: l i = d = u d i = a ii = (...l i...) c i u i. b i u i. i = 2,..., n C = l i b i + u i i = 2,..., n u = d ; u i = d i l i b i i = 2,..., n I due sistemi triangolare inferiore e superiore si risolvono nel seguente modo: f i = f i l i f i, i = 2,..., n f n = f n /u n ; f i = (f i b i f i+ )/u i i = n,..., Complessità computazionale Fattorizzazione: n divisioni, n somme e n prodotti; Soluzione: n divisioni, 2(n ) somme, 2(n ) prodotti. nche nel caso di matrici di Hessemberg, l applicazione del metodo di Gauss (anche con pivoting) comporta un abbassamento della complessità computazionale. Infatti in totale si eseguono n divisioni per calcolare i moltiplicatori e O(n 2 /2) prodotti e altrettante somme per il calcolo degli elementi di R.
Per matrici sparse, se non si esegue un riordinamento delle righe e colonne, si creano dei riempimenti, detti fill-in, che distruggono la struttura della matrice. Esempio. Il fattore di Cholesky della matrice sparsa è denso. L = = 4 2 /2 2 /2 2 3 /2 5/8 2 6 C 2.5.5.25.25.5.5 2 3 Esistono tecniche che riordinano una matrice per minimizzare il fill-in. Una delle più note è il criterio di Markowitz: seguendo questo criterio, ad ogni passo k si sceglie come perno l elemento della sottomatrice Ãk per cui la seguente quantità è minima: (row i )(col j ) ove row i e col j sono i numeri di elementi non nulli sulla riga i-esima e sulla j-esima colonna di à k. Se una matrice è simmetrica, il criterio di Markowitz equivale al minimum degree ordering. Quest ultima tecnica consiste nel costruire il grafo associato alla matrice: se n è la dimensione della matrice, si considera un grafo di n nodi numerati da a n e poi, per ogni elemento a ij si genera un arco che connette il nodo i al nodo j. C
Si prende come ordinamento quello dal nodo di grado minimo (grado di un nodo=numero di archi che partono da tale nodo) a quelli di grado superiore. Questo è dovuto al fatto che quando si elimina un nodo, tutti i nodi a lui connessi si connettono tra di loro, riflettendo la creazione di elementi non nulli. Pertanto si scelgono i nodi con minori connessioni prima degli altri. 5 4 2 3
In questo caso l ordinamento può essere: 2,3,4,5,, Pertanto P P T = /2 3 2 5/8 /2 6 2 2 /2 2 4 C L = / 2 3 5/(2 2) 4 p 2 2/ 3 2/5 /2 / 6 C Si noti che in questo caso non c è alcun fill-in.