Corso di Calcolo Numerico Dottssa MC De Bonis Università degli Studi della Basilicata, Potenza Facoltà di Ingegneria Corso di Laurea in Ingegneria Meccanica Corso di Calcolo Numerico - Dottssa MC De Bonis
Risoluzione di Sistemi Lineari Vogliamo trovare un approssimazione delle soluzioni di sistemi di n equazioni lineari in n incognite: a 1,1 x 1 +a 1,2 x 2 + +a 1,n x n = b 1 a 2,1 x 1 +a 2,2 x 2 + +a 2,n x n = b 2 a n 1,1 x 1 +a n 1,2 x 2 + +a n 1,n x n = b n 1 a n,1 x 1 +a n,2 x 2 + +a n,n x n = b n (1) Ponendo a 1,1 a 1,2 a 1,n 1 a 1,n a 2,1 a 2,2 a n,n 1 a 2,n A = a n 1,1 a n 1,2 a n 1,n 1 a n 1,n b = b 1 b 2 b n 1 a n,1 a n,2 a n,n 1 a n,n b n e x = [x 1 x 2 x n 1 x n ] T, il sistema (1) diventa: Ax = b, A R n n, b, x R n Corso di Calcolo Numerico - Dottssa MC De Bonis
È noto che il sistema (1) ammette un unica soluzione se e solo se la matrice A è non singolare, cioè det(a) 0 In questo caso possiamo scrivere x = A 1 b Il metodo di risoluzione che certamente conoscete è la Regola di Cramer: x i = det(a i), i = 1,, n, det(a) dove A i denota la matrice ottenuta da A sostituendo la colonna i esima con il vettore b I determinanti coinvolti potrebbero essere calcolati utilizzando la Regola di Laplace scritta nella forma det(a) = n ( 1) j+1 a 1,j det(a 1,j ), j=1 dove A 1,j rappresenta la matrice di ordine n 1 ottenuta da A eliminando la prima e la j esima colonna Corso di Calcolo Numerico - Dottssa MC De Bonis
La Regola di Cramer non è ammissibile come metodo numerico in quanto il suo costo computazionale è dell ordine di [(n + 1)(n 1)n]! Supponendo di poter effettuare ogni operazione moltiplicativa in 7 10 8 secondi, per risolvere un sistema 20 20 occorrono circa 2 10 6 anni!! Si potrebbe pensare di calcolare A 1 e risolvere il sistema utilizzando la formula x = A 1 b Tra tutti i metodi che si conoscono per il calcolo della matrice inversa, quello meno costoso ha un costo computazionale dell ordine di n 3 Inoltre è necessario eseguire il prodotto A 1 b che ha un costo computazionale di n 2 In seguito vedremo dei metodi numerici per la risoluzione di un sistema lineare che sono molto più efficienti dal punto di vista computazionale Corso di Calcolo Numerico - Dottssa MC De Bonis
I metodi numerici per la risoluzione di un sistema lineare si suddividono in due classi: Metodi diretti: in assenza di errori di arrotondamento la soluzione viene calcolata esattamente in un numero finito di passi; Metodi iterativi: attraverso un processo iterativo viene generata una successione infinita di vettori convergente, sotto opportune condizioni, alla soluzione cercata Anche in assenza di errori di arrotondamento non si ottiene mai la soluzione esatta perchè ad un certo punto è necessario arrestare il processo I criteri di scelta di un algoritmo sono: stabilità occupazione di memoria costo computazionale Non esiste un algoritmo migliore degli altri in assoluto La scelta viene fatta in funzione delle caratteristiche della matrice A del sistema ( sparsità, dimensione, struttura) Corso di Calcolo Numerico - Dottssa MC De Bonis
Definizione Una matrice A R n n si dice densa se la maggior parte dei suoi elementi è non nullo Definizione Una matrice A R n n si dice sparsa se il numero dei suoi elementi non nulli è dell ordine di n Osservazione Per memorizzare in un calcolatore una matrice sparsa (soprattutto se n è molto grande) è possibile utilizzare solo tre vettori di lunghezza n: uno per memorizzare gli elementi non nulli, uno per memorizzare i corrispondenti indici di riga ed uno per memorizzare i corrispondenti indici di colonna Corso di Calcolo Numerico - Dottssa MC De Bonis
I metodi diretti risolvono il problema iniziale trasformandolo in problemi equivalenti aventi la stessa soluzione ma matrici dei coefficienti differenti In generale, se la matrice A del sistema è densa i metodi diretti sono più efficienti Se, invece, la matrice A del sistema è sparsa, i metodi diretti non preservano la sparsità delle matrici coinvolte nel procedimento, anzi con il procedere del metodo il numero degli elementi non nulli presenti in queste matrici generalmente cresce e (se n è molto grande) può ben presto saturare la memoria centrale del calcolatore In questi casi è utile e, spesso indispensabile, utilizzare i metodi iterativi perchè, invece, quest ultimi lasciano inalterata la matrice A del sistema Corso di Calcolo Numerico - Dottssa MC De Bonis
Condizionamento del problema Supponiamo di introdurre una perturbazione A R n n sulla matrice A e una perturbazione b R n sul vettore dei termini noti b La soluzione che calcoleremo, supponendo che i numeri siano rappresentabili con infinite cifre e che tutte le operazioni aritmetiche siano fatte esattamente, non sarà x ma y = x + x, x R n, cioè la soluzione sarà a sua volta perturbata Risolveremo allora il sistema (A + A)y = (b + b) Anche se la matrice A è non singolare, A + A potrebbe risultare singolare Tuttavia, supponendo che A + A è non singolare e che A 1 A < 1 2 otteniamo la seguente maggiorazione per l errore relativo indotto sulla soluzione x: δx 2 cond(a) ( δa + δb ), dove cond(a) = A A 1 e denota una fissata norma matriciale indotta Corso di Calcolo Numerico - Dottssa MC De Bonis
La quantità cond(a) viene chiamata indice o numero di condizionamento della matrice A cond(a) rappresenta il coefficiente di amplificazione delle perturbazioni indotte sulla matrice A e sul termine noto b Se cond(a) è piccolo il problema è ben condizionato, altrimenti è mal condizionato Osservazione Per qualunque norma matriciale indotta si ha cond(a) = A A 1 AA 1 = I = 1 Corso di Calcolo Numerico - Dottssa MC De Bonis
Il seguente teorema precisa meglio il significato di cond(a) Teorema Per ogni matrice non singolare A R n n e per ogni norma matriciale indotta, la quantità (cond(a)) 1 rappresenta la distanza relativa minima di A dall insieme di tutte le matrici singolari di ordine n, cioè 1 cond(a) = min { A B A } : B R n n singolare Corso di Calcolo Numerico - Dottssa MC De Bonis
Esempi di matrici mal condizionate sono: Matrici di Hilbert H n = 1 1 2 1 1 2 3 1 1 3 4 1 n 1 n+1 1 1 3 n 1 1 4 1 1 5 n+1 n+2 1 n+2 1 2n 1 Corso di Calcolo Numerico - Dottssa MC De Bonis
Matrici di Vandermonde V n = 1 1 1 1 x 1 x 2 x 3 x n x 2 1 x 2 2 x 2 3 x 2 n x n 1 1 x n 1 2 x3 n 1 xn n 1 x i x j per i j Corso di Calcolo Numerico - Dottssa MC De Bonis
Richiami sulle Norme di Vettori e Matrici Una norma vettoriale è una funzione che associa ad un vettore x R n un numero reale x con le seguenti proprietà: 1 x > 0, x 0 e x = 0 x = 0; 2 cx = c x, c R; 3 x + y x + y, y R n Le norme vettoriali più frequentemente utilizzate sono: norma infinito: x = max 1 i n x i norma 1: norma euclidea: x 1 = n x i i=1 x 2 = ( n i=1 x i 2 ) 1 2 = x T x Corso di Calcolo Numerico - Dottssa MC De Bonis
Analogamente, una norma matriciale è una funzione che associa ad una matrice A R n n il numero reale A tale che 1 A > 0, A 0 e A = 0 A = 0; 2 ca = c A, c R; 3 A + B A + B, B R n n ; 4 AB A B, B R n n Le norme matriciali più note sono: norma infinito: A = max 1 i n norma 1: A 1 = max 1 j n norma spettrale: A 2 = n a i,j j=1 n a i,j i=1 ρ(a T A), dove ρ(a) è il raggio spettrale della matrice A, cioè il modulo massimo degli autovalori di A; 1 2 n n norma di Frobenius: A F = a i,j 2 i=1 j=1 Corso di Calcolo Numerico - Dottssa MC De Bonis
Data una norma vettoriale e una norma matriciale, si dice che le due norme sono compatibili se Ax A x, A R n n, x R n Una norma vettoriale può risultare compatibile con più norme matriciali Ad ogni norma vettoriale possiamo associare una norma matriciale nel seguente modo: A = sup x 0 Ax x = max x =1 Ax Una norma così definita viene chiamata naturale o indotta da quella del vettore Per le norme matriciali naturali abbiamo inoltre I = max Ix = 1 x =1 Le norme matriciali, 1 e 2 sono naturali La norma F non è naturale in quanto I F = n 1 2 Corso di Calcolo Numerico - Dottssa MC De Bonis
Si ha x induce A x 1 induce A 1 x 2 induce A 2 Corso di Calcolo Numerico - Dottssa MC De Bonis
Metodi Diretti Sistemi Triangolari Siano x = (x 1 x 2 x n ) T e b = (b 1 b 2 b n ) T Denotiamo con l 1,1 0 0 0 l 2,1 l 2,2 0 0 L = l n 1,1 l n 1,2 l n 1,n 1 0 l n,1 l n,2 l n,n 1 l n,n matrice triangolare inferiore (Low) Corso di Calcolo Numerico - Dottssa MC De Bonis
e con U = u 1,1 u 1,2 u 1,n 1 u 1,n 0 u 2,2 u 2,n 1 u 2,n 0 0 u n 1,n 1 u n 1,n 0 0 0 u n,n matrice triangolare superiore (Up) Vogliamo risolvere i sistemi Lx = b e Ux = b Osservazione det(l) = l 1,1 l 2,2 l n,n 0 l i,i 0 i = 1,, n det(u) = u 1,1 u 2,2 u n,n 0 u i,i 0 i = 1,, n Corso di Calcolo Numerico - Dottssa MC De Bonis
Algoritmo di sostituzione in avanti (forward substitution) Lx = b l 1,1 x 1 = b 1 l 2,1 x 1 + l 2,2 x 2 = b 2 l 3,1 x 1 + l 3,2 x 2 + l 3,3 x 3 = b 3 l n,1 x 1 + l n,2 x 2 + l n,3 x 3 + + l n,n x n = b n x 1 = b 1 l 1,1 x 2 = b 2 l 2,1 x 1 l 2,2 x 3 = b 3 l 3,1 x 1 l 3,2 x 2 l 3,3 x i = b i i 1 k=1 l i,k x k l i,i, i = 4,, n Corso di Calcolo Numerico - Dottssa MC De Bonis
x 1 = b 1 /l 1,1 ; 1 operazione for i=2:n x i = b i ; for k=1:i-1 x i = x i l i,k x k ; i-1 operazioni end x i = x i /l i,i ; 1 operazione end costo computazionale n i = i=1 n(n + 1) 2 n2 2 Corso di Calcolo Numerico - Dottssa MC De Bonis
Algoritmo di sostituzione all indietro (backward substitution) Ux = b u 1,1 x 1 + u 1,2 x 2 + u 1,3 x 3 + + u 1,n x n = b 1 u 2,2 x 2 + u 2,3 x 3 + + u 2,n x n = b 2 u n 1,n 1 x n 1 + u n 1,n x n u n,n x n = b n 1 = b n x n = b n u n,n x n 1 = b n 1 u n 1,n x n u n 1,n 1 x n 2 = b n 2 u n 2,n 1 x n 1 u n 2,n x n u n 2,n 2 x i = b i n u i,k x k k=i+1 u i,i, i = n 3, n 4,, 2, 1 Corso di Calcolo Numerico - Dottssa MC De Bonis
x n = b n /u n,n ; 1 operazione for i=n-1:-1:1 x i = b i ; for k=i+1:n x i = x i u i,k x k ; n-i operazioni end x i = x i /u i,i ; 1 operazione end costo computazionale 1 n i + 1 = i=n n i = i=1 n(n + 1) 2 n2 2 Corso di Calcolo Numerico - Dottssa MC De Bonis
Osservazione Gli Algoritmi di sostituzione in avanti e all indietro sono ben definiti se le matrici L e U sono non singolari, cioè l i,i 0, u i,i 0, i = 1,, n Corso di Calcolo Numerico - Dottssa MC De Bonis
Metodo di eliminazione di Gauss Sia A R n n una generica matrice di ordine n e x, b R n due vettori colonna di lunghezza n Scriviamo esplicitamente il sistema Ax = b a 1,1 x 1 + a 1,2 x 2 + a 1,3 x 3 + a 1,n x n = b 1 a 2,1 x 1 + a 2,2 x 2 + a 2,3 x 3 + a 2,n x n = b 2 a n,1 x 1 + a n,2 x 2 + a n,3 x 3 + a n,n x n = b n Supponendo che a 1,1 0 Possiamo eliminare l incognita x 1 dalla 2 a, 3 a,, n esima equazione sommando all i esima equazione i = 2,, n la prima equazione moltiplicata per m i,1 = a i,1 a 1,1, i = 2,, n Eseguiamo, cioè, le seguenti combinazioni lineari a (2) i,j = a i,j + m i,1 a 1,j i, j = 2,, n b (2) i = b i + m i,1 b 1 Corso di Calcolo Numerico - Dottssa MC De Bonis
Il nuovo sistema, equivalente a quello precedente, diventa a 1,1 x 1 + a 1,2 x 2 + a 1,3 x 3 + + a 1,n x n = b 1 a (2) 2,2 x 2 + a (2) 2,3 x 3 + + a (2) 2,n x n = b (2) 2 a (2) 3,2 x 2 + a (2) 3,3 x 3 + + a (2) 3,n x n = b (2) 3 a (2) n,2 x 2 + a (2) n,3 x 3 + + a (2) n,nx n = b (2) n Supponendo che a 2,2 0 Possiamo eliminare l incognita x 2 dalla 3 a, 4 a,, n esima equazione sommando all i esima equazione i = 3,, n la seconda equazione moltiplicata per m i,2 = a(2) i,2, i = 3,, n a (2) 2,2 Eseguiamo, cioè, le seguenti combinazioni lineari a (3) i,j = a(2) i,j + m i,2a (2) 2,j i, j = 3,, n b (3) i = b (2) i + m i,2 b (2) 2 Corso di Calcolo Numerico - Dottssa MC De Bonis
Il nuovo sistema, equivalente a quello precedente, diventa a 1,1 x 1 + a 1,2 x 2 + a 1,3 x 3 + + a 1,n x n = b 1 a (2) 2,2 x 2 + a (2) 2,3 x 3 + + a (2) 2,n x n = b (2) 2 a (3) 3,3 x 3 + + a (3) 3,n x n = b (2) 3 a (3) n,3 x 3 + + a (3) n,nx n = b (2) n Gli elementi a 1,1, a (2) 2,2, a(3) 3,3,, che compaiono durante le successive eliminazioni vengono detti elementi pivot Dopo (n 1) passi, supponendo che tutti gli elementi pivot siano non nulli, si ottiene il seguente sistema triangolare superiore equivalente ai precedenti a 1,1 x 1 + a 1,2 x 2 + a 1,3 x 3 + + a 1,n x n = b 1 a (2) 2,2 x 2 + a (2) 2,3 x 3 + + a (2) 2,n x n = b (2) 2 a (3) 3,3 x 3 + + a (3) 3,n x n = b (3) 3 a (n) n,nx n = b (n) n che può essere risolto con l Algoritmo di sostituzione all indietro Corso di Calcolo Numerico - Dottssa MC De Bonis
Esempio Consideriamo il seguente sistema 2x 1 x 2 + x 3 2x 4 = 0 2x 2 x 4 = 1 x 1 2x 3 + x 4 = 0 2x 2 + x 3 + x 4 = 4 applicando il metodo di Gauss con m 2,1 = 0, m 3,1 = 1 2 m 4,1 = 0 si ottiene il sistema 2x 1 x 2 + x 3 2x 4 = 0 2x 2 x 4 = 1 1 2 x 2 5 2 x 3 + 2x 4 = 0 2x 2 + x 3 + x 4 = 4 Corso di Calcolo Numerico - Dottssa MC De Bonis
Con m 3,2 = 1 4 m 4,2 = 1 si ha 2x 1 x 2 + x 3 2x 4 = 0 2x 2 x 4 = 1 Infine, con 5 2 x 3 + 9 4 x 4 = 1 4 x 3 + 2x 4 = 3 m 4,3 = 2 5 si ottiene 2x 1 x 2 + x 3 2x 4 = 0 2x 2 x 4 = 1 5 2 x 3 + 9 4 x 4 = 1 4 29 10 x 4 = 29 10 Da cui, sostituendo all indietro, si ha ( x 4 = 1, x 3 = 1 4 9 ) ( 4 x 4 2 ) = 1, x 2 = 1 + x 4 5 2 = 1, x 1 = x 2 x 3 + 2x 4 2 = 1 Corso di Calcolo Numerico - Dottssa MC De Bonis
Ponendo a i,j = a (1) i,j e b i = b (1) i, i, j = 1,, n, il seguente schema di calcolo riassume il metodo di eliminazione di Gauss: Per k = 1, 2,, n 1 m i,k = a(k) i,k a (k) k,k a (k+1) i,j = a (k) i,j + m i,ka (k) k,j, i, j = k + 1,, n b (k+1) i = b (k) i + m i,k b k Osservazione Il metodo di Gauss si può applicare se e soltanto se ad ogni passo k = 1,, n 1 l elemento pivot a (k) k,k 0 Corso di Calcolo Numerico - Dottssa MC De Bonis
Consideriamo le sottomatrici di A A k = (a i,j ) i,j=1,,k, k = 1,, n, dette matrici principali di testa di A Vale il seguente teorema Teorema Sia A R n n Gli elementi pivot a (k) k,k, k = 1,, n, sono tutti diversi da zero se e soltanto se tutte le matrici principali di testa di A sono non singolari, cioè det(a k ) 0, k = 1,, n Corso di Calcolo Numerico - Dottssa MC De Bonis
Esempi di matrici per le quali la condizione det(a k ) 0, k = 1,, n, è verificata sono: matrici a diagonale dominante per righe, cioè a i,i > n a i,j, i = 1,, n; j=1 j i matrici a diagonale dominante per colonne, cioè a j,j > n a i,j, j = 1,, n, ; i=1 j i matrici simmetriche definite positive, cioè A T = A e x T Ax > 0, x R n, x 0 Corso di Calcolo Numerico - Dottssa MC De Bonis
for k=1:n-1 for i=k+1:n a i,k = a i,k /a k,k ; 1 operazione for j=k+1:n a i,j = a i,j + a i,k a k,j ; n-k operazioni end b i = b i + a i,k b k ; 1 operazione end end U=triu(A); Si risolve il sistema triangolare superiore U x = b con l algoritmo di sostituzione all indietro costo computazionale n 1 [2(n k) + (n k) 2 ] + n2 n 1 2 = 2 i + k=1 n(n 1) = 2 2 + i=1 n(n 1)(2n 1) 6 = n3 3 + n2 5 6 n n3 3 + n2 n3 3 n 1 i=1 + n2 2 i 2 + n2 2 Corso di Calcolo Numerico - Dottssa MC De Bonis
Pivoting e stabilità Se al k esimo passo si trova a (k) k,k = 0, il metodo di Gauss, così come è stato descritto, non può proseguire Se a (k) k,k = 0 necessariamente qualche altro elemento a (k) i,k, i = k + 1,, n, della colonna k esima della matrice dei coefficienti deve essere non nullo, altrimenti la matrice dei coefficienti sarebbe singolare Se, ad esempio, a (k) r,k 0, basta scambiare l equazione k esima con la r esima e poi procedere con le eliminazioni Dunque, ogni sistema non singolare può essere sempre ricondotto alla forma triangolare superiore con il metodo di Gauss più eventuali scambi di equazioni Corso di Calcolo Numerico - Dottssa MC De Bonis
Per assicurare una migliore stabilità numerica al metodo di eliminazione di Gauss è spesso necessario permutare l ordine delle equazioni anche quando l elemento pivot non è esattamente zero, ma è molto piccolo (in valore assoluto) rispetto agli altri elementi Per cercare di evitare catastrofiche propagazioni di errori è di solito necessario scegliere, al generico passo k esimo, l elemento pivot seguendo una delle seguenti strategie: Pivoting parziale: si sceglie r uguale al più piccolo intero k tale che a (k) r,k = max k i n a(k) i,k e, se r k, si scambia l equazione k esima con l r esima; Pivoting totale: si sceglie la coppia (r, s), con r, s k tale che a (k) r,s = max k i,j n a(k) i,j e si scambiamo l equazione k esima con l r esima e l incognita k esima (con il suo coefficiente) con l s esima Corso di Calcolo Numerico - Dottssa MC De Bonis
La strategia di pivoting parziale è la meno costosa e, poichè, in generale, risulta soddisfacente, essa è la strategia più utilizzata Osservazione Il metodo di eliminazione di Gauss senza pivoting è comunque numericamente stabile quando: la matrice A del sistema è simmetrica e a diagonale dominante (la strategia di pivot non produce scambi); la matrice A del sistema è simmetrica e definita positiva Corso di Calcolo Numerico - Dottssa MC De Bonis
Esempio Consideriamo il sistema lineare Ax = b di ordine n = 18, dove ( a i,j = cos (j 1) 2i 1 ) 2n π, i, j = 1,, n, e b i = n a i,j, i = 1,, n, j=1 la cui soluzione esatta è x = (1, 1,, 1) T cond(a) = A A 1 = 1690251471518910 Risolvendo il sistema con il metodo di eliminazione di Gauss senza e con la strategia di pivoting parziale, si ottengono i seguenti risultati: Corso di Calcolo Numerico - Dottssa MC De Bonis
Gauss 9999999968425205e-001 1000000005848771e+000 9999999953310822e-001 1000000003291504e+000 9999999977773912e-001 1000000001703849e+000 9999999983501708e-001 1000000001767299e+000 9999999982508074e-001 1000000001433063e+000 9999999991425489e-001 1000000000200525e+000 1000000000347843e+000 9999999993163441e-001 1000000000800448e+000 9999999992564082e-001 1000000000564552e+000 9999999996959291e-001 Gauss + pivoting parziale 9999999999999993e-001 1000000000000000e+000 1000000000000001e+000 1000000000000001e+000 9999999999999997e-001 1000000000000000e+000 1000000000000000e+000 1000000000000001e+000 9999999999999998e-001 9999999999999999e-001 9999999999999993e-001 1000000000000000e+000 9999999999999996e-001 9999999999999990e-001 9999999999999996e-001 1000000000000000e+000 1000000000000000e+000 9999999999999999e-001 Corso di Calcolo Numerico - Dottssa MC De Bonis
Metodo di Gauss e Fattorizzazione LU Il metodo di eliminazione di Gauss consiste nel costruire una successione di matrici [A b] = [A (1) b (1) ] [A (k) b (k) ] [A (n) b (n) ] in modo tale che, per k = 1,, n 1, [A (k+1) b (k+1) ] = M (k) [A (k) b (k) ] dove M (k) = 1 0 0 0 1 0 0 0 1 0 0 m k+1,k 1 0 0 m k+2,k 0 0 0 0 m n,k 0 0 1 è la matrice elementare di Gauss Corso di Calcolo Numerico - Dottssa MC De Bonis
Si ha A = [M (1) ] 1 A (2) = [M (1) ] 1 [M (2) ] 1 A (3) = = [M (1) ] 1 [M (n 1) ] 1 A (n) e b = [M (1) ] 1 [M (n 1) ] 1 b (n) Ponendo L = [M (1) ] 1 [M (n 1) ] 1, U = A (n) e y = b (n), otteniamo A = LU e b = Ly, dove L è una matrice triangolare inferiore e U è una matrice triangolare superiore Dunque, il sistema diventa Ax = b LUx = Ly e, dopo aver applicato il metodo di eliminazione di Gauss, rimane da risolvere il sistema triangolare superiore Ux = y Corso di Calcolo Numerico - Dottssa MC De Bonis
Osservazione Il metodo di eliminazione di Gauss calcola esplicitamente la matrice U La matrice L è 1 0 0 m 2,1 1 0 1 L = m k+1,k 1 m k+2,k 1 0 m n,1 m n,k m n,n 1 1 Calcolate le matrici L e U, per risolvere il sistema Ax = b, basta risolvere i sistemi Ly = b e Ux = y, il primo triangolare inferiore e il secondo triangolare superiore Il costo computazionale è n3 3 + n2 di cui n3 3 n 3 n3 3 sola fattorizzazione A = LU per la Corso di Calcolo Numerico - Dottssa MC De Bonis
Eseguire la fattorizzazione LU di A può essere utile se: è necessario risolvere p sistemi cioè il sistema Ax 1 = b 1, Ax 2 = b 2,, Ax p = b p, AX = B, con A R n n, X, B R n p ( ) n Il costo computazionale p 3 3 + n2 si riduce a n 3 3 + pn2 Se p = n e B = I, risolvere il sistema AX = B, è equivalente a calcolare A 1 si vuole calcolare il det A Infatti det(a) = det(lu) = det(l) det(u) = det(u) = n u i,i i=1 Corso di Calcolo Numerico - Dottssa MC De Bonis
Il metodo di Gauss con la variante del pivot esegue ΠA = LU e Πb = Ly dove Π R n n, detta matrice di permutazione, contiene le informazioni relative agli scambi di righe Vale il seguente Teorema Per ogni matrice A R n n esiste una matrice di permutazione Π R n n tale che ΠA = LU Corso di Calcolo Numerico - Dottssa MC De Bonis
Metodo di Cholesky Sia A R n n una matrice simmetrica definita positiva Vale il seguente Teorema Se A R n n è una matrice simmetrica definita positiva esiste ed è unica la fattorizzazione A = LL T Posto A = (a i,j ) i,j=1,,n e L = (l i,j ) i,j=1,,n, si ha a i,j = n l i,k lk,j T = k=1 n l i,k l j,k k=1 Poichè la matrice è simmetrica, possiamo considerare solo gli elementi di A con j i Otteniamo e a i,j = j 1 k=1 l i,k l j,k + l i,j l j,j, i = 1,, n, j = 1,, i 1 a i,i = i 1 k=1 l 2 i,k + l 2 i,i, i = 1,, n Corso di Calcolo Numerico - Dottssa MC De Bonis
Da cui l i,i = l i,j = 1 ai,i l j,j [ i 1 k=1 a i,j l 2 i,k j 1 k=1 l i,k l j,k ] i = 1,, n j = 1,, i 1 Corso di Calcolo Numerico - Dottssa MC De Bonis
for i=1:n l i,i = 0; for k=1:i-1 l i,i = l i,i + li,k 2 ; i 1 operazioni end l i,i = a i,i l i,i ; 1 operazione for j=1:i-1 l i,j = 0; for k=1:j-1 l i,j = l i,j + l i,k l j,k ; j 1 operazioni end l i,j = (a i,j l i,j )/l j,j ; 1 operazione end end Si risolve il sistema triangolare inferiore Ly = b con l algoritmo di sostituzione in avanti e il sistema triangolare superiore L T x = y con l algoritmo di sostituzione all indietro Corso di Calcolo Numerico - Dottssa MC De Bonis
Costo computazionale n i + i=1 i 1 j=1 j + n 2 = = = 1 2 = n i + i=1 n i + 1 2 i=1 n i=1 n i + 1 2 i=1 n(n + 1) 4 i(i 1) 2 n i 2 1 2 i=1 + + n 2 n i + n 2 i=1 n i 2 + n 2 i=1 = n3 6 + 3 2 n2 + n 3 n3 6 (n + 1)n(2n + 1) 12 + n 2 Corso di Calcolo Numerico - Dottssa MC De Bonis