Corso di Matematica per la Chimica

Transcript

Corso di Matematica per la Chimica
Pivoting e stabilità
La fattorizzazione LU
Metodo di Cholesky
Le function Matlab
Corso di Matematica per la Chimica
Dott.ssa Maria Carmela De Bonis
a.a. 2013-14
Dott.ssa Maria Carmela De Bonis a.a. 2013-14
Corso di Matematica per la Chimica
Pivoting e stabilità
La fattorizzazione LU
Metodo di Cholesky
Le function Matlab
Pivoting e stabilità
Se la matrice A non appartiene a nessuna delle categorie precedenti
(k)
può accadere che al k−esimo passo risulti ak,k = 0, e quindi il
metodo di Gauss, cosı̀ com’è stato descritto, non può proseguire.
(k)
Tuttavia se ak,k = 0 necessariamente qualche altro elemento
(k)
ai,k , i = k + 1, . . . , n, della colonna k−esima della matrice dei
coefficienti deve essere non nullo, altrimenti la matrice dei coefficienti
sarebbe singolare.
(k)
Se, ad esempio, ar,k 6= 0, basta scambiare l’equazione k−esima con la
r−esima e poi procedere con le eliminazioni.
Dunque ogni sistema non singolare, mediante opportuni scambi di
righe, può essere sempre ricondotto alla forma triangolare superiore
con il metodo di Gauss.
Dott.ssa Maria Carmela De Bonis a.a. 2013-14
Corso di Matematica per la Chimica
Pivoting e stabilità
La fattorizzazione LU
Metodo di Cholesky
Le function Matlab
Discutiamo ora della stabilità del metodo di Gauss.
È possibile provare che l’esistenza di pivot molto piccoli (in valore
assoluto) rispetto all’ordine di grandezza degli elementi della matrice
è causa di cancellazione numerica e quindi di instabilità.
Dunque per assicurare una migliore stabilità numerica al metodo di
eliminazione di Gauss è possibile permutare l’ordine delle equazioni
anche quando l’elemento pivot non è nullo ma è “piccolo”.
Tale strategia algoritmica è detta pivoting.
Dott.ssa Maria Carmela De Bonis a.a. 2013-14
Corso di Matematica per la Chimica
Pivoting e stabilità
La fattorizzazione LU
Metodo di Cholesky
Le function Matlab
Il pivoting consiste nello scegliere, al generico passo k−esimo,
l’elemento pivot in maniera ottimale.
Le due strategie di pivoting più utilizzate sono le seguenti:
pivoting parziale: si sceglie r uguale al più piccolo intero ≥ k
tale che
(k)
(k)
|ar,k | = max |ai,k |
k≤i≤n
e, se r 6= 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
(k)
(k)
|ar,s | = max |ai,j |
k≤i,j≤n
e si scambiamo l’equazione k−esima con l’r−esima e
l’incognita k−esima (con il suo coefficiente) con l’s−esima.
Dott.ssa Maria Carmela De Bonis a.a. 2013-14
Corso di Matematica per la Chimica
Pivoting e stabilità
La fattorizzazione LU
Metodo di Cholesky
Le function Matlab
La strategia del pivoting totale combinata con il metodo di Gauss
assicura la stabilità dell’algoritmo complessivo.
Tuttavia essa può risultare molto costosa.
La strategia di pivoting parziale è meno “costosa” e, poiché, in
generale, risulta soddisfacente nella maggior parte dei casi, essa è la
strategia più utilizzata.
Osservazione
Il metodo di eliminazione di Gauss senza pivoting è comunque
numericamente stabile quando:
la matrice A del sistema è a diagonale dominante per colonne (in
questo caso la strategia di pivot non produce scambi);
la matrice A del sistema è simmetrica e definita positiva (in
questo caso la strategia effettua scambi ma non produce
miglioramenti).
Dott.ssa Maria Carmela De Bonis a.a. 2013-14
Corso di Matematica per la Chimica
Pivoting e stabilità
La fattorizzazione LU
Metodo di Cholesky
Le function Matlab
Esempio
Consideriamo il sistema lineare Ax = b di ordine n = 18, dove
2i − 1
ai,j = cos (j − 1)
π , i, j = 1, . . . , n,
2n
e
n
X
bi =
ai,j , i = 1, . . . , n,
j=1
la cui soluzione esatta è x = (1, 1, . . . , 1)T .
Tale matrice è ben condizionata, risultando
cond(A) = kAk∞ kA−1 k∞ = 16.90251471518910
Risolvendo il sistema con il metodo di eliminazione di Gauss senza e
con la strategia di pivoting parziale, si ottengono i seguenti risultati:
Dott.ssa Maria Carmela De Bonis a.a. 2013-14
Corso di Matematica per la Chimica
Pivoting e stabilità
La fattorizzazione LU
Metodo di Cholesky
Le function Matlab
Gauss
9.999999968425205e-001
1.000000005848771e+000
9.999999953310822e-001
1.000000003291504e+000
9.999999977773912e-001
1.000000001703849e+000
9.999999983501708e-001
1.000000001767299e+000
9.999999982508074e-001
1.000000001433063e+000
9.999999991425489e-001
1.000000000200525e+000
1.000000000347843e+000
9.999999993163441e-001
1.000000000800448e+000
9.999999992564082e-001
1.000000000564552e+000
9.999999996959291e-001
Dott.ssa Maria Carmela De Bonis a.a. 2013-14
Gauss + pivoting parziale
9.999999999999993e-001
1.000000000000000e+000
1.000000000000001e+000
1.000000000000001e+000
9.999999999999997e-001
1.000000000000000e+000
1.000000000000000e+000
1.000000000000001e+000
9.999999999999998e-001
9.999999999999999e-001
9.999999999999993e-001
1.000000000000000e+000
9.999999999999996e-001
9.999999999999990e-001
9.999999999999996e-001
1.000000000000000e+000
1.000000000000000e+000
9.999999999999999e-001
Corso di Matematica per la Chimica
Pivoting e stabilità
La fattorizzazione LU
Metodo di Cholesky
Le function Matlab
La fattorizzazione LU
Il metodo di eliminazione di Gauss, dal punto di vista matriciale, può
essere riletto come la costruzione di una successione di matrici
[A|b] = [A(1) |b(1) ], . . . , [A(k) |b(k) ], . . . , [A(n) |b(n) ]
in modo tale che A(n) sia triangolare superiore e b(n) sia il nuovo
termine noto.
Le matrici della successione sono tra loro legate da una
trasformazione del tipo
[A(k+1) |b(k+1) ] = M (k) [A(k) |b(k) ],
Dott.ssa Maria Carmela De Bonis a.a. 2013-14
k = 1, . . . , n − 1
Corso di Matematica per la Chimica
Pivoting e stabilità
La fattorizzazione LU
Metodo di Cholesky
Le function Matlab
dove
M (k)

1
0
...
...








=







0
..
.
1
..
.
0
..
.
..
0
0
1
0
0
mk+1,k
1
0
..
.
0
..
.
mk+2,k
..
.
0
..
.
0 ...
0
mn,k
0
.

0
.. 
. 



.. 

. 

..

.


..

.


.. ..
.
. 0 
... 0 1
è detta matrice elementare di Gauss.
Dott.ssa Maria Carmela De Bonis a.a. 2013-14
Corso di Matematica per la Chimica
Pivoting e stabilità
La fattorizzazione LU
Metodo di Cholesky
Le function Matlab
Si ha quindi che
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) ,
si ottiene
A = LU
e
b = Ly,
dove U è la matrice triangolare superiore che si ottiene alla fine del
metodo di eliminazione di Gauss e L è una matrice triangolare
inferiore (è prodotto di inverse di matrici triangolari inferiori).
Dott.ssa Maria Carmela De Bonis a.a. 2013-14
Corso di Matematica per la Chimica
Pivoting e stabilità
La fattorizzazione LU
Metodo di Cholesky
Le function Matlab
La matrice L è definita come

1
0 ...
...

 −m2,1 1
0

..
.. ..
..

.
.
.
.


..

.
1

L=
..

.
−mk+1,k 1


.

−mk+2,k . .


..
..

.
.
−mn,1 . . . . . .
−mn,k
..
.
..
.
..
.
1
. . . . . . −mn,n−1

0
.. 
. 



.. 

. 







0 
1
e dunque per costruirla basta, ad ogni passo del metodo di Gauss,
memorizzare i moltiplicatori cambiati di segno.
Dott.ssa Maria Carmela De Bonis a.a. 2013-14
Corso di Matematica per la Chimica
Pivoting e stabilità
La fattorizzazione LU
Metodo di Cholesky
Le function Matlab
schema algoritmo
for k=1:n-1
for i=k+1:n
ai,k = ai,k /ak,k ;
costruzione matrice L
for j=k+1:n
ai,j = ai,j − ai,k ∗ ak,j ; costruzione matrice U
end
end
end
L=eye(n)+tril(A,-1)
U=triu(A)
Dott.ssa Maria Carmela De Bonis a.a. 2013-14
Corso di Matematica per la Chimica
Pivoting e stabilità
La fattorizzazione LU
Metodo di Cholesky
Le function Matlab
Dunque, con piccoli accorgimenti algoritmici, dal metodo di Gauss è
possibile calcolare le due matrici L ed U tali che
A = LU.
Si effettua in tal modo una decomposizione della matrice A detta
fattorizzazione LU di A.
Dott.ssa Maria Carmela De Bonis a.a. 2013-14
Corso di Matematica per la Chimica
Pivoting e stabilità
La fattorizzazione LU
Metodo di Cholesky
Le function Matlab
Calcolate le matrici L e U, il sistema Ax = b, può essere risolto
mediante i due sistemi
Ly = b
e Ux = y,
il primo triangolare inferiore e il secondo triangolare superiore.
Risolvere il primo sistema equivale a calcolare il nuovo termine noto.
La differenza con l’algoritmo di Gauss è che, invece di farlo
contestualmente alla riduzione in forma triangolare, tale calcolo viene
effettuato in modo indipendente.
3
Il costo computazionale complessivo ammonta dunque a n3 + n2 di
3
cui n3 per la fattorizzazione LU e n2 per le due sostituzioni
(all’indietro e in avanti).
Dott.ssa Maria Carmela De Bonis a.a. 2013-14
Corso di Matematica per la Chimica
Pivoting e stabilità
La fattorizzazione LU
Metodo di Cholesky
Le function Matlab
Le fattorizzazioni di matrici hanno diversi utilizzi.
Nel caso specifico della fattorizzazione LU la prima immediata
applicazione è il calcolo del determinante di A.
Infatti
det(A) = det(LU) = det(L) det(U) = det(U) =
n
Y
i=1
Dott.ssa Maria Carmela De Bonis a.a. 2013-14
Corso di Matematica per la Chimica
ui,i .
Pivoting e stabilità
La fattorizzazione LU
Metodo di Cholesky
Le function Matlab
Un’altra possibile applicazione scaturisce dall’esigenza di risolvere p
sistemi che hanno tutti la stessa matrice dei coefficienti A, cioè
Ax1 = b1 ,
Ax2 = b2 ,
...,
Axp = bp ,
o in altri termini il sistema
AX = B,
con
A ∈ Rn×n ,
X, B ∈ Rn×p .
Infatti in tal caso la fattorizzazione viene effettuata una sola volta e
ogni sistema viene poi risolto mediante 2 algoritmi di sostituzione,
per un costo computazionale
3
complessivo che si riduce quindi a
n
n2
n3
2
se si risolvesse ciascun sistema
3 + pn (contro p 3 + 2
indipendentemente dagli altri).
Osserviamo infine che se p = n e B = I, risolvere il sistema AX = B,
è equivalente a calcolare A−1 .
Dott.ssa Maria Carmela De Bonis a.a. 2013-14
Corso di Matematica per la Chimica
Pivoting e stabilità
La fattorizzazione LU
Metodo di Cholesky
Le function Matlab
Il metodo di Gauss con la variante del pivoting esegue ancora una
fattorizzazione di matrice nei seguenti termini
PA = LU
e Pb = Ly
dove P ∈ Rn×n , detta matrice di permutazione, contiene le
informazioni relative agli scambi di righe.
Vale il seguente
Teorema
Per ogni matrice A ∈ Rn×n esiste una matrice di permutazione
P ∈ Rn×n tale che
PA = LU.
Dott.ssa Maria Carmela De Bonis a.a. 2013-14
Corso di Matematica per la Chimica
Pivoting e stabilità
La fattorizzazione LU
Metodo di Cholesky
Le function Matlab
Metodo di Cholesky
Sia A ∈ Rn×n una matrice simmetrica definita positiva.
In questo caso speciale è possibile costruire un algoritmo, antagonista
del metodo di Gauss, e quindi una fattorizzazione alternativa a quella
LU, che è più conveniente dal punto di vista computazionale.
Vale il seguente
Teorema
Se A ∈ Rn×n è una matrice simmetrica definita positiva esiste ed è
unica la fattorizzazione
A = LLT
dove L è una matrice triangolare inferiore con elementi diagonali non
nulli.
Dott.ssa Maria Carmela De Bonis a.a. 2013-14
Corso di Matematica per la Chimica
Pivoting e stabilità
La fattorizzazione LU
Metodo di Cholesky
Le function Matlab
Posto A = (ai,j )i,j=1,...,n e L = (li,j )i,j=1,...,n , si ha
ai,j =
n
X
T
li,k lk,j
=
k=1
n
X
li,k lj,k .
k=1
Poiché la matrice è simmetrica, possiamo considerare solo gli
elementi di A con j ≤ i. Otteniamo
ai,j =
j−1
X
li,k lj,k + li,j lj,j ,
i = 1, . . . , n, j = 1, . . . , i − 1
k=1
e
ai,i =
i−1
X
2
2
li,k
+ li,i
,
i = 1, . . . , n.
k=1
Dott.ssa Maria Carmela De Bonis a.a. 2013-14
Corso di Matematica per la Chimica
Pivoting e stabilità
La fattorizzazione LU
Metodo di Cholesky
Le function Matlab
Da cui
l1,1 =
√
a1,1

"
#
j−1
X

1


ai,j −
li,k lj,k
li,j =



lj,j


k=1





v


u

i−1

u
X


t
2

li,k

li,i = ai,i −
i = 2, . . . , n
j = 1, . . . , i − 1
k=1
Dott.ssa Maria Carmela De Bonis a.a. 2013-14
Corso di Matematica per la Chimica
Pivoting e stabilità
La fattorizzazione LU
Metodo di Cholesky
Le function Matlab
schema algoritmo
√
l1,1 = a1,1
for i=2:n
for j=1:i-1
li,j = 0;
for k=1:j-1
li,j = li,j + li,k ∗ lj,k ;
j − 1 operazioni
end
li,j = (ai,j − li,j )/lj,j ; 1 operazione
end
li,i = 0;
for k=1:i-1
2 ; i − 1 operazioni
li,i = li,i + li,k
end p
1 operazione
li,i = ai,i − li,i ;
end
Dott.ssa Maria Carmela De Bonis a.a. 2013-14
Corso di Matematica per la Chimica
Pivoting e stabilità
La fattorizzazione LU
Metodo di Cholesky
Le function Matlab
costo computazionale


n
i−1
n
n
X
X
X
X
i(i − 1)
i +
j + n 2 =
i+
+ n2
2
i=1
j=1
i=1
=
n
X
i=1
i+
i=1
=
=
=
1
2
n
X
i=1
n
n
i=1
i=1
1X 2 1X
i −
i + n2
2
2
i+
1
2
n
X
i2 + n2
i=1
n(n + 1) (n + 1)n(2n + 1)
+
+ n2
4
12
n3
n3 3 2 n
+ n + '
6
6
2
3
Dott.ssa Maria Carmela De Bonis a.a. 2013-14
Corso di Matematica per la Chimica
Pivoting e stabilità
La fattorizzazione LU
Metodo di Cholesky
Le function Matlab
È possibile provare che l’algoritmo di Cholesky è stabile.
Ricordiamo che, peraltro, anche l’algoritmo di Gauss, senza pivoting,
è stabile per le matrici simmetriche definite positive.
Dott.ssa Maria Carmela De Bonis a.a. 2013-14
Corso di Matematica per la Chimica
Pivoting e stabilità
La fattorizzazione LU
Metodo di Cholesky
Le function Matlab
Molte routine automatiche calcolano R = LT anzicché L, ma è
evidente che l’algoritmo è lo stesso (con un attento uso degli indici),
data la simmetria della matrice di partenza A.
In tali casi dunque scriveremo
A = RT R.
Osserviamo infine che se si vuole risolvere il sistema
Ax = b
mediante la fattorizzazione di Cholesky basterà, una volta computata
la fattorizzazione, e quindi calcolata L ( o rispettivamente R), risolvere
i seguenti due sistemi
Ly = b,
LT x = y
(RT y = b,
Dott.ssa Maria Carmela De Bonis a.a. 2013-14
Rx = y rispettivamente)
Corso di Matematica per la Chimica
Pivoting e stabilità
La fattorizzazione LU
Metodo di Cholesky
Le function Matlab
Le function Matlab
Chiudiamo questa carrellata dei principali metodi diretti per la
risoluzione di un sistema lineare descrivendo le principali function di
Matlab che implementano tali metodi.
Sia allora A una matrice non singolare di ordine n e b un vettore
colonna di ordine n.
risoluzione dei sistemi diagonali: se la matrice dei coefficienti A
è diagonale, A\b risolve il sistema mediante n operazioni di
divisione;
risoluzione dei sistemi triangolari: se la matrice dei coefficienti A
è triagolare (superiore o inferiore) A\b risolve il sistema
mediante algoritmo di sostituzione (all’indietro o in avanti a
seconda struttura della matrice);
Dott.ssa Maria Carmela De Bonis a.a. 2013-14
Corso di Matematica per la Chimica
Pivoting e stabilità
La fattorizzazione LU
Metodo di Cholesky
Le function Matlab
risoluzione di sistemi con matrice dei coefficienti qualsiasi: A\b
risolve il sistema mediante metodo di eliminazione di Gauss (in
realtà con la fattorizzazione LU) con pivoting e gli algoritmi di
sostituzione;
risoluzione di un sistema con matrice simmetrica e definita
positiva: A\b risolve il sistema mediante metodo di Cholesky e
gli algoritmi di sostituzione;
fattorizzazione LU: il comando [L,U,P] = lu(A) calcola i
fattori L, U e la matrice di permutazione P tali che PA = LU;
fattorizzazione di Cholesky: se la matrice A è simmetrica e
definita positiva, il comando R = chol(A) calcola il fattore
triangolare superiore R tale che A = RT R;
Dott.ssa Maria Carmela De Bonis a.a. 2013-14
Corso di Matematica per la Chimica
Pivoting e stabilità
La fattorizzazione LU
Metodo di Cholesky
Le function Matlab
calcolo del determinante di una matrice: det(A) calcola il
determinante della matrice non singolare A, utilizzando la
fattorizzazione LU;
condizionamento: il comando cond(A,p), con p = 1, 2, inf ,
‘fro’, calcola il numero di condizionamento rispettivamente in
norma 1, 2, infinito e Frobenius;
inversa di una matrice: inv(A), calcola l’inversa della matrice
utilizzando la fattorizzazione LU.
Dott.ssa Maria Carmela De Bonis a.a. 2013-14
Corso di Matematica per la Chimica