Fattorizzazione LU ed eliminazione gaussiana

annuncio pubblicitario
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
Scarica