Fattorizzazione LU ed eliminazione gaussiana Alvise Sommariva Università degli Studi di Padova Dipartimento di Matematica 3 maggio 2015 Alvise Sommariva Fattorizzazione LU ed eliminazione gaussiana 1/ 29 Introduzione Problema. (Sistema lineare) Sia A ∈ Rn×n una matrice a coeff. reali, b ∈ Rn un vettore colonna e supponiamo di dover calcolare un vettore colonna x ∗ ∈ Rn cosicchè A · x ∗ = b. Nota. Come è noto questo problema ha soluzione unica x ∗ se e solo se det (A) 6= 0 (matrice non singolare). Ci porremo di seguito in queste ipotesi. Alvise Sommariva Fattorizzazione LU ed eliminazione gaussiana 2/ 29 Matrici di permutazione Definizione (Matrice di permutazione) Una matrice P si dice di permutazione se si ottiene permutando le righe della matrice identica I . Esempio In questo esempio, P la seconda. 1 0 I = 0 è ottenuta da I scambiando la prima riga con 0 0 1 0 , 0 1 Alvise Sommariva 0 1 0 P= 1 0 0 0 0 1 Fattorizzazione LU ed eliminazione gaussiana 3/ 29 Proprietà della matrice di permutazione Nota. Se P ∈ Rn×n si ottiene dalla matrice identica In ∈ Rn×n scambiando la i-sima riga con la j(i)-sima allora la matrice B = PA si ottiene da A scambiando la j(i)-sima riga con la i-sima. La matrice P ∈ Rn×n è unitaria cioè PP T = P T P = In . Essendo PP T = P T P = In , la matrice P è invertibile e ha inversa P −1 = P T . Ciò implica che det(P) 6= 0. Se A = BC per il teorema di Binet, allora det(A) = det(B) det(C ); 2 det(In ) = 1; 3 det(P) = det(P T ). 1 Quindi 1 = det(In ) = det(PP T ) = det(P) det(P T ) = (det(P))2 ⇒ det(P) = ±1. Alvise Sommariva Fattorizzazione LU ed eliminazione gaussiana 4/ 29 Effetto della matrice di permutazione >> % E f f e t t o d i P s u A i n PA . >> A =[1 2 3 ; 4 5 6 ; 7 8 9 ] A = 1 2 3 4 5 6 7 8 9 >> P =[0 1 0 ; 1 0 0 ; 0 0 1 ] P = 0 1 0 1 0 0 0 0 1 >> P∗A ans = 4 5 6 1 2 3 7 8 9 >> %Vediamo a d e s s o c h e P e ’ u n i t a r i a . >> P∗P ’ ans = 1 0 0 0 1 0 0 0 1 >> P ’ ∗ P ans = 1 0 0 0 1 0 0 0 1 >> d e t ( P ) ans = −1 >> Alvise Sommariva Fattorizzazione LU ed eliminazione gaussiana 5/ 29 Matrici triangolari Definizione (Matrici triangolari) Una matrice A = (ai,j ) si dice triangolare superiore, se ai,j = 0 per i > j; triangolare inferiore, se ai,j = 0 per i < j. >> A =[1 2 3 ; 4 5 6 ; 7 8 9 ] A = 1 2 3 4 5 6 7 8 9 >> L= t r i l ( A ) % TRIANGOLARE INFERIORE L = 1 0 0 4 5 0 7 8 9 >> U= t r i u ( A ) % TRIANGOLARE SUPERIORE U = 1 2 3 0 5 6 0 0 9 >> Alvise Sommariva Fattorizzazione LU ed eliminazione gaussiana 6/ 29 Fattorizzazione LU Problema. (Fattorizzazione LU) Sia A ∈ Rn×n . Determinare, se esistono, L = li,j triangolare inferiore con elementi diagonali uguali a 1, cioè li,i = 1, U triangolare superiore, cosicchè A = LU. Nota. Si osservi che si chiede A = LU e non A = L + U. Alvise Sommariva Fattorizzazione LU ed eliminazione gaussiana 7/ 29 Fattorizzazione LU Teorema (Fattorizzazione LU e submatrici principali) Sia A ∈ Rn×n . Si supponga che tutte le sottomatrici principali di testa A(k) = (ai,j )i,j=1,...,k , k = 1, . . . , n − 1 siano non singolari. Allora esiste ed è unica la fattorizzazione LU di A. Nota. (Controesempio) Non tutte le matrici posseggono la fattorizzazione LU. Un esempio in cui non esistono tali L, U per cui A = LU è la matrice 0 1 A= . 1 0 Alvise Sommariva Fattorizzazione LU ed eliminazione gaussiana 8/ 29 Fattorizzazione PA=LU Teorema (Fattorizzazione PA=LU) Sia A ∈ Rn×n . Allora esiste una matrice di permutazione P tale che PA = LU. Di conseguenza La fattorizzazione A = LU non è sempre possibile. La fattorizzazione PA = LU è sempre possibile. Nota. (Pivoting) Per determinare la fattorizzazione PA = LU si usa una variante dell’algoritmo che determina A = LU (se esistente), ma che utilizza la tecnica del pivoting. Per dettagli, si veda [1, p.511], [2, p.172]. Nota. (Storia) Il metodo di Gauss è stato uno dei primi implementati su un calcolatore (1947). Obiettivo: risolvere un sistema lineare 8 per 8. Alvise Sommariva Fattorizzazione LU ed eliminazione gaussiana 9/ 29 Fattorizzazione PA=LU in Matlab Vediamo di seguito come eseguire la fattorizzazione PA = LU in Matlab. >> h e l p l u lu l u factorization . [ L , U ] = l u ( A ) stores an u p p e r triangular matrix in U and a ” p sy chologically l o w e r triangular matrix ” ( i . e . a product of l o w e r triangular and permutation matrices ) in L , so that A = L∗U . A can be rectangular . [ L , U , P ] = l u ( A ) returns unit l o w e r triangular matrix L , u p p e r triangular matrix U , and permutation matrix P so that P∗A = L∗U . ... >> Dall’help si capisce che [L, U, P] = lu(A) produce la fattorizzazione desiderata. Alvise Sommariva Fattorizzazione LU ed eliminazione gaussiana 10/ 29 Fattorizzazione PA=LU in Matlab, esempio >> A =[1 2 3 ; 4 5 6 ; 7 8 9 ] A = 1 2 3 4 5 6 7 8 9 >> % LA MATRICE E ’ SINGOLARE , RIGHE PROPORZIONALI ! ! >> d e t ( A ) ans = 6 . 6 6 1 3 e−16 >> [ L , U , P]= l u ( A ) L = 1.0000 0 0 0.1429 1.0000 0 0.5714 0.5000 1.0000 U = 7.0000 8.0000 9.0000 0 0.8571 1.7143 0 0 0.0000 P = 0 0 1 1 0 0 0 1 0 >> norm ( P∗A−L∗U ) ans = 0 >> % QUESTO CI DICE CHE P∗A−LU=0. Alvise Sommariva Fattorizzazione LU ed eliminazione gaussiana 11/ 29 Fattorizzazione di Cholesky A = LLT per matrici simmetriche definite positive Teorema (Fattorizzazione di Cholesky A = LLT per matrici simmetriche definite positive) Sia A ∈ Rn×n una matrice simmetrica, cioè A = AT , definita positiva, cioè avente tutti gli n autovalori λk strettamente positivi, cioè λk > 0, per k = 1, . . . , n. Allora esiste ed è unica la fattorizzazione di Cholesky A = LLT con L = (li,j ) matrice triangolare inferiore con elementi principali li,i > 0 per i = 1, . . . , n. Alvise Sommariva Fattorizzazione LU ed eliminazione gaussiana 12/ 29 Fattorizzazione di Cholesky in Matlab, esempio >> h e l p c h o l chol Cholesky factorization . c h o l ( A ) uses only the diagonal and u p p e r triangle of A . The l o w e r triangle is assumed to be the ( complex conjugate ) transpose of the u p p e r triangle . If A is positive definite , then R = c h o l ( A ) produces an u p p e r triangular R so that R ’ ∗ R = A . If A is not positive definite , an e r r o r message is printed . L = c h o l ( A , ’ l o w e r ’ ) uses only the diagonal and the l o w e r triangle of A to produce a l o w e r triangular L so that L∗L ’ = A . If A is not positive definite , an e r r o r message is printed . When A is s p a r s e , this syntax of c h o l is typically faster . ... >> Una galleria di matrici la si può trovare in Matlab con gallery >> h e l p g a l l e r y g a l l e r y Higham test matrices . [ out1 , out2 , . . . ] = g a l l e r y ( matname , param1 , param2 , . . . ) takes matname , a string that is the name of a matrix family , and the family ’ s i n p u t parameters . See the listing below f o r available matrix families . Most of the functions take an i n p u t argument that specifies the order of the matrix , and unless otherwise stated , r e t u r n a single output . ... minij Symmetric positive definite matrix MIN ( i , j ) . ... >> Alvise Sommariva Fattorizzazione LU ed eliminazione gaussiana 13/ 29 Fattorizzazione di Cholesky in Matlab, esempio >> A= g a l l e r y ( ’ m i n i j ’ , 3 ) A = 1 1 1 1 2 2 1 2 3 >> % V e r i f i c a n u m e r i c a c h e t u t t i g l i a u t o v a l o r i s o n o p o s i t i v i . >> e i g ( A ) ans = 0.3080 0.6431 5.0489 >> % c h o l p r o d u c e R t r i a n g o l a r e SUPERIORE , t a l e c h e A=R’ ∗ R ! ! >> R=c h o l ( A ) R = 1 1 1 0 1 1 0 0 1 >> norm ( A−R ’ ∗ R ) ans = 0 >> % c h o l (A , ’ l o w e r ’ ) p r o d u c e L t r i a n g o l a r e INFERIORE , t a l e c h e A=L∗L ’ >> L=c h o l ( A , ’ l o w e r ’ ) L = 1 0 0 1 1 0 1 1 1 >> norm ( A−L∗L ’ ) ans = 0 >> Alvise Sommariva !! Fattorizzazione LU ed eliminazione gaussiana 14/ 29 Eliminazione Gaussiana Si supponga di dover risolvere Ax = b con A ∈ Rn×n , det(A) 6= 0 (cioè A non singolare), b ∈ Rn×1 = Rn . x ∗ unica soluzione del sistema lineare Ax = b, cioè Ax ∗ = b. Se PA = LU allora essendo det(P) 6= 0, abbiamo che Ax ∗ = b ⇔ PAx ∗ = Pb ⇔ LUx ∗ = Pb. Posto y ∗ = Ux ∗ , da LUx ∗ = Pb abbiamo che y ∗ è la soluzione del sistema triangolare inferiore Ly ∗ = Pb. Una volta ottenuto y ∗ , essendo Ux ∗ = y ∗ , x ∗ è la soluzione del sistema triangolare superiore Ux ∗ = y ∗ . Alvise Sommariva Fattorizzazione LU ed eliminazione gaussiana 15/ 29 Eliminazione Gaussiana Questa osservazione suggerisce il seguente metodo per risolvere Ax = b con A non singolare. Metodo (Eliminazione gaussiana) Si determini la fattorizzazione PA = LU di A ∈ Rn×n (costo computazionale O(n3 /3)). Si determini la fattorizzazione c = Pb. Si risolva il sistema triangolare inferiore Ly = c (costo computazionale O(n2 /2)). Si risolva il sistema triangolare superiore Ux = y (costo computazionale O(n2 /2)). Alvise Sommariva Fattorizzazione LU ed eliminazione gaussiana 16/ 29 Eliminazione Gaussiana, esempio in Matlab >> A= g a l l e r y ( ’ m i n i j ’ , 5 ) A = 1 1 1 1 1 1 2 2 2 2 1 2 3 3 3 1 2 3 4 4 1 2 3 4 5 >> x_sol=ones ( 5 , 1 ) ; >> b=A∗ x_sol b = 5 9 12 14 15 >> % Ho un s i s t e m a Ax=b con s o l u z i o n e x s o l =[1 1 1 1 1 ] ’ . >> % APPROSSIMO LA SOLUZIONE COL METODO DI ELIMINAZIONE GAUSSIANA . >> [ L , U , P]= l u ( A ) ; % F a t t o r i z z a z i o n e PA=LU . >> c=P∗b ; % Ax=b a l l o r a PAx=Pb . Pongo Pb=c e r i s o l v o PAx=c . >> y=L\c ; % S o l u z i o n e s i s t e m a t r i a n g o l a r e i n f e r i o r e . >> x=U\y ; % S o l u z i o n e s i s t e m a t r i a n g o l a r e s u p e r i o r e . >> x x = 1 1 1 1 1 >> % Ho c a l c o l a t o c o r r e t t a m e n t e l a s o l u z i o n e i n q u a n t o x s o l = x . Alvise Sommariva Fattorizzazione LU ed eliminazione gaussiana 17/ 29 Eliminazione Gaussiana: A = LU o PA = LU? Problema. Se PA = LU è ottenuta col metodo di pivoting per colonne implementato dal Matlab, esiste pure la fattorizzazione A = LU, quale delle due è da preferire? Per questioni di stabilità è da preferire il metodo tramite pivoting per colonne. Illustriamo questo in un esempio. Alvise Sommariva Fattorizzazione LU ed eliminazione gaussiana 18/ 29 Eliminazione Gaussiana: A = LU o PA = LU? Esempio (Matrice di Hankel) Sia H (n) ∈ Rn×n la matrice di Hankel di ordine n, i cui elementi sono definiti come segue k 2 se k > 0 (n) Hi,n+k−i = 21/(2−k) se k ≤ 0 con i = 1, . . . , n, k = i + 1 − n, . . . , i. La matrice H (n) è invertibile. Sia x ∗ = [1, . . . , 1] ∈ Rn×1 e b = Ax. Ovviamente x ∗ è l’unica soluzione di Ax = b. Sia x LU la soluzione ottenuta con il metodo di Eliminazione gaussiana senza permutazione. Sia x LUP la soluzione ottenuta con il metodo di Eliminazione gaussiana con permutazione (dovuta a pivoting per colonne). Alvise Sommariva Fattorizzazione LU ed eliminazione gaussiana 19/ 29 Eliminazione Gaussiana: A = LU o PA = LU? eLU = kx ∗ − x LU k2 = qP n eLUP = kx ∗ − x LUP k2 = ∗ k=1 (xk qP n − xkLU )2 . ∗ k=1 (xk − xkLUP )2 . Si verifica sperimentalmente che n 1 2 3 4 5 6 7 8 9 10 11 12 eLU 0.00e + 00 1.11e − 16 4.22e − 15 4.22e − 15 1.31e − 14 3.48e − 13 1.24e − 13 1.39e − 12 7.13e − 12 1.05e − 11 1.56e − 11 1.57e − 10 eLUP 0.00e + 00 8.88e − 16 3.00e − 15 4.55e − 15 1.58e − 14 2.60e − 14 3.73e − 14 1.59e − 13 6.02e − 13 3.41e − 13 9.58e − 13 4.13e − 12 Alvise Sommariva n 13 14 15 16 17 18 19 20 21 22 23 24 eLU 1.14e − 09 9.34e − 09 3.96e − 08 2.36e − 07 2.10e − 06 1.18e − 05 4.10e − 05 1.67e − 04 4.39e − 04 2.16e − 02 2.97e − 02 3.65e − 02 eLUP 1.18e − 11 1.26e − 11 4.11e − 11 6.78e − 11 3.23e − 10 3.09e − 10 5.63e − 10 1.26e − 09 3.22e − 09 3.80e − 09 1.03e − 08 1.58e − 08 Fattorizzazione LU ed eliminazione gaussiana 20/ 29 Eliminazione Gaussiana con A simmetrica definita positiva Si supponga di dover risolvere Ax = b con A ∈ Rn×n , simmetrica e definita positiva. b ∈ Rn×1 = Rn . x ∗ unica soluzione del sistema lineare Ax = b, cioè Ax ∗ = b. Se A = LLT allora abbiamo che Ax ∗ = b ⇔ LLT x ∗ = b. Posto y ∗ = LT x ∗ , da L ∗ y ∗ = LLT x ∗ = b abbiamo che y ∗ è la soluzione del sistema triangolare inferiore Ly ∗ = b. Una volta ottenuto y ∗ , essendo LT x ∗ = y ∗ , x ∗ è la soluzione del sistema triangolare superiore LT x ∗ = y ∗ . Alvise Sommariva Fattorizzazione LU ed eliminazione gaussiana 21/ 29 Eliminazione Gaussiana con A simmetrica definita positiva Questa osservazione suggerisce il seguente metodo per risolvere Ax = b con A simmetrica e definita positiva. Metodo (Eliminazione gaussiana se A simmetrica e definita positiva) Si determini la fattorizzazione A = LLT di A ∈ Rn×n (costo computazionale O(n3 /6)). Si risolva il sistema triangolare inferiore Ly = c (costo computazionale O(n2 /2)). Si risolva il sistema triangolare superiore LT x = y (costo computazionale O(n2 /2)). Alvise Sommariva Fattorizzazione LU ed eliminazione gaussiana 22/ 29 Eliminazione Gaussiana, esempio in Matlab >> A= g a l l e r y ( ’ m i n i j ’ , 5 ) A = 1 1 1 1 1 1 2 2 2 2 1 2 3 3 3 1 2 3 4 4 1 2 3 4 5 >> ( e i g ( A ) ) ’ ans = 0.2716 0.3533 0.5830 1.4487 12.3435 >> % A e ’ s i m m e t r i c a d e f i n i t a p o s i t i v a . >> x_sol=ones ( 5 , 1 ) ; b=A∗ x_sol ; >> % Ho un s i s t e m a Ax=b con s o l u z i o n e x s o l =[1 1 1 1 1 ] ’ . >> % APPROSSIMO LA SOLUZIONE COL METODO DI ELIMINAZIONE GAUSSIANA VIA CHOLESKY . >> L=c h o l ( A , ’ l o w e r ’ ) L = 1 0 0 0 0 1 1 0 0 0 1 1 1 0 0 1 1 1 1 0 1 1 1 1 1 >> y=L\b ; >> x=L ’ \ y x = 1 1 1 1 1 >> % Ho c a l c o l a t o c o r r e t t a m e n t e l a s o l u z i o n e i n q u a n t o x s o l = x . Alvise Sommariva Fattorizzazione LU ed eliminazione gaussiana 23/ 29 Esercizi Esercizio Implementare una routine Matlab flag = issymm(A). che calcolando gli autovalori di una matrice A, stabilisca se A è simmetrica definita positiva (se flag=1 allora è simmetrica definita positiva altrimenti non lo è) . Nota: per vedere che è simmetrica basta notare che ciò è vero se norm(A − A0 ) = 0. Alvise Sommariva Fattorizzazione LU ed eliminazione gaussiana 24/ 29 Esercizi Esercizio Implementare una routine Matlab x = linear solver(A, b). che calcoli la soluzione x ∗ mediante l’eliminazione gaussiana via fattorizzazione di Cholesky se A è simmetrica e definita positiva, altrimenti si effettui PA = LU ove U = (ui,j ) e osservato che n Y det(A) = det(P) det(U) = ± uk,k k=1 si verifichi se A è o meno singolare; se A è non singolare, si determini la soluzione x ∗ con l’eliminazione gaussiana via fattorizzazione PA = LU. Alvise Sommariva Fattorizzazione LU ed eliminazione gaussiana 25/ 29 Esercizi Esercizio Testare il codice precedente per risolvere il problema Ax = b dove A = gallery(0 poisson0 , 20); b = ones(size(A, 1)); Testare che soluzione x ottenuta coincida con quella fornita dal Matlab via x sol = A\b; A tal proposito testare che norm(x − x sol); sia molto piccola (ad esempio dell’ordine di 10−15 ). Alvise Sommariva Fattorizzazione LU ed eliminazione gaussiana 26/ 29 Esercizi Esercizio (Facoltativo) Si scarichino i files solve linear LUP.m, solve linear LUP.m, hankel matrix.m, dalla directory del corso. La chiamata x = solve linear LU(A, b); risolve il sistema Ax = b mediante Eliminazione Gaussiana via fattorizzazione A = LU (se esiste!). La chiamata x = solve linear LUP(A, b); risolve il sistema Ax = b mediante Eliminazione Gaussiana via fattorizzazione PA = LU. Alvise Sommariva Fattorizzazione LU ed eliminazione gaussiana 27/ 29 Esercizi La chiamata A = hankel matrix(n) produce una matrice di Hankel A ∈ Rn×n . Sia b = Ax dove A=hankel matrix(20); x=ones(20,1); b=A*x; Si risolva il problema Ax = b mediante solve linear LU e sia x1 la soluzione ottenuta. Si risolva il problema Ax = b mediante solve linear LUP e sia x2 la soluzione ottenuta. Si calcolino gli errori norm(x-x1) e norm(x-x2). I risultati sono analoghi? Quale metodo è da preferire? Alvise Sommariva Fattorizzazione LU ed eliminazione gaussiana 28/ 29 Bibliografia K.E. Atkinson An introduction to Numerical Analysis, Wiley, (1989). D. Bini, M. Capovani, O. Menchi Metodi numerici per l’algebra lineare, Zanichelli, (1988). Alvise Sommariva Fattorizzazione LU ed eliminazione gaussiana 29/ 29