Il metodo di Eliminazione di Gauss con la tecnica del pivoting

27
Pivoting e stabilit` a 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

Transcript of Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Page 1: Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Pivoting e stabilitaLa fattorizzazione LU

Metodo di CholeskyLe function Matlab

Corso di Matematica per la Chimica

Dott.ssa Maria Carmela De Bonisa.a. 2013-14

Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Corso di Matematica per la Chimica

Page 2: Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Pivoting e stabilitaLa fattorizzazione LU

Metodo di CholeskyLe function Matlab

Pivoting e stabilita

Se la matrice A non appartiene a nessuna delle categorie precedentipuo accadere che al k−esimo passo risulti a(k)k,k = 0, e quindi ilmetodo di Gauss, cosı com’e stato descritto, non puo proseguire.

Tuttavia se a(k)k,k = 0 necessariamente qualche altro elemento

a(k)i,k , i = k + 1, . . . , n, della colonna k−esima della matrice deicoefficienti deve essere non nullo, altrimenti la matrice dei coefficientisarebbe singolare.

Se, ad esempio, a(k)r,k 6= 0, basta scambiare l’equazione k−esima con lar−esima e poi procedere con le eliminazioni.

Dunque ogni sistema non singolare, mediante opportuni scambi dirighe, puo essere sempre ricondotto alla forma triangolare superiorecon il metodo di Gauss.

Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Corso di Matematica per la Chimica

Page 3: Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Pivoting e stabilitaLa fattorizzazione LU

Metodo di CholeskyLe function Matlab

Discutiamo ora della stabilita del metodo di Gauss.

E possibile provare che l’esistenza di pivot molto piccoli (in valoreassoluto) rispetto all’ordine di grandezza degli elementi della matricee causa di cancellazione numerica e quindi di instabilita.

Dunque per assicurare una migliore stabilita numerica al metodo dieliminazione di Gauss e possibile permutare l’ordine delle equazionianche quando l’elemento pivot non e nullo ma e “piccolo”.

Tale strategia algoritmica e detta pivoting.

Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Corso di Matematica per la Chimica

Page 4: Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Pivoting e stabilitaLa fattorizzazione LU

Metodo di CholeskyLe function Matlab

Il pivoting consiste nello scegliere, al generico passo k−esimo,l’elemento pivot in maniera ottimale.

Le due strategie di pivoting piu utilizzate sono le seguenti:

pivoting parziale: si sceglie r uguale al piu piccolo intero ≥ ktale che

|a(k)r,k | = maxk≤i≤n

|a(k)i,k |

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

|a(k)r,s | = maxk≤i,j≤n

|a(k)i,j |

e si scambiamo l’equazione k−esima con l’r−esima el’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

Page 5: Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Pivoting e stabilitaLa fattorizzazione LU

Metodo di CholeskyLe function Matlab

La strategia del pivoting totale combinata con il metodo di Gaussassicura la stabilita dell’algoritmo complessivo.

Tuttavia essa puo risultare molto costosa.

La strategia di pivoting parziale e meno “costosa” e, poiche, ingenerale, risulta soddisfacente nella maggior parte dei casi, essa e lastrategia piu utilizzata.

Osservazione

Il metodo di eliminazione di Gauss senza pivoting e comunquenumericamente stabile quando:

la matrice A del sistema e a diagonale dominante per colonne (inquesto caso la strategia di pivot non produce scambi);

la matrice A del sistema e simmetrica e definita positiva (inquesto caso la strategia effettua scambi ma non producemiglioramenti).

Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Corso di Matematica per la Chimica

Page 6: Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Pivoting e stabilitaLa fattorizzazione LU

Metodo di CholeskyLe function Matlab

Esempio

Consideriamo il sistema lineare Ax = b di ordine n = 18, dove

ai,j = cos((j− 1)

2i− 12n

π

), i, j = 1, . . . , n,

e

bi =

n∑j=1

ai,j, i = 1, . . . , n,

la cui soluzione esatta e x = (1, 1, . . . , 1)T .

Tale matrice e ben condizionata, risultando

cond(A) = ‖A‖∞‖A−1‖∞ = 16.90251471518910

Risolvendo il sistema con il metodo di eliminazione di Gauss senza econ 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

Page 7: Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Pivoting e stabilitaLa fattorizzazione LU

Metodo di CholeskyLe function Matlab

Gauss Gauss + pivoting parziale9.999999968425205e-001 9.999999999999993e-0011.000000005848771e+000 1.000000000000000e+0009.999999953310822e-001 1.000000000000001e+0001.000000003291504e+000 1.000000000000001e+0009.999999977773912e-001 9.999999999999997e-0011.000000001703849e+000 1.000000000000000e+0009.999999983501708e-001 1.000000000000000e+0001.000000001767299e+000 1.000000000000001e+0009.999999982508074e-001 9.999999999999998e-0011.000000001433063e+000 9.999999999999999e-0019.999999991425489e-001 9.999999999999993e-0011.000000000200525e+000 1.000000000000000e+0001.000000000347843e+000 9.999999999999996e-0019.999999993163441e-001 9.999999999999990e-0011.000000000800448e+000 9.999999999999996e-0019.999999992564082e-001 1.000000000000000e+0001.000000000564552e+000 1.000000000000000e+0009.999999996959291e-001 9.999999999999999e-001

Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Corso di Matematica per la Chimica

Page 8: Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Pivoting e stabilitaLa fattorizzazione LU

Metodo di CholeskyLe function Matlab

La fattorizzazione LU

Il metodo di eliminazione di Gauss, dal punto di vista matriciale, puoessere 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 nuovotermine noto.

Le matrici della successione sono tra loro legate da unatrasformazione del tipo

[A(k+1)|b(k+1)] = M(k)[A(k)|b(k)], k = 1, . . . , n− 1

Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Corso di Matematica per la Chimica

Page 9: Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Pivoting e stabilitaLa fattorizzazione LU

Metodo di CholeskyLe function Matlab

dove

M(k) =

1 0 . . . . . . 0

0 1 0...

.... . . . . . . . .

0 0 1...

0 0 mk+1,k 1. . .

0 0 mk+2,k 0. . .

......

......

. . . . . . 00 . . . 0 mn,k 0 . . . 0 1

e detta matrice elementare di Gauss.

Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Corso di Matematica per la Chimica

Page 10: Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Pivoting e stabilitaLa fattorizzazione LU

Metodo di CholeskyLe function Matlab

Si ha quindi che

A = [M(1)]−1A(2) = [M(1)]−1[M(2)]−1A(3) = · · ·= [M(1)]−1 · · · [M(n−1)]−1A(n)

eb = [M(1)]−1 · · · [M(n−1)]−1b(n).

Ponendo

L = [M(1)]−1 · · · [M(n−1)]−1, U = A(n) e y = b(n),

si ottieneA = LU e b = Ly,

dove U e la matrice triangolare superiore che si ottiene alla fine delmetodo di eliminazione di Gauss e L e una matrice triangolareinferiore (e prodotto di inverse di matrici triangolari inferiori).

Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Corso di Matematica per la Chimica

Page 11: Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Pivoting e stabilitaLa fattorizzazione LU

Metodo di CholeskyLe function Matlab

La matrice L e definita come

L =

1 0 . . . . . . 0

−m2,1 1 0...

.... . . . . . . . .

. . . 1...

... −mk+1,k 1. . .

−mk+2,k. . . . . .

......

. . . 1 0−mn,1 . . . . . . −mn,k . . . . . . −mn,n−1 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

Page 12: Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Pivoting e stabilitaLa fattorizzazione LU

Metodo di CholeskyLe function Matlab

schema algoritmo

for k=1:n-1for i=k+1:n

ai,k = ai,k/ak,k; costruzione matrice Lfor j=k+1:n

ai,j = ai,j − ai,k ∗ ak,j; costruzione matrice Uend

endendL=eye(n)+tril(A,-1)U=triu(A)

Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Corso di Matematica per la Chimica

Page 13: Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Pivoting e stabilitaLa fattorizzazione LU

Metodo di CholeskyLe function Matlab

Dunque, con piccoli accorgimenti algoritmici, dal metodo di Gauss epossibile calcolare le due matrici L ed U tali che

A = LU.

Si effettua in tal modo una decomposizione della matrice A dettafattorizzazione LU di A.

Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Corso di Matematica per la Chimica

Page 14: Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Pivoting e stabilitaLa fattorizzazione LU

Metodo di CholeskyLe function Matlab

Calcolate le matrici L e U, il sistema Ax = b, puo essere risoltomediante 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 e che, invece di farlocontestualmente alla riduzione in forma triangolare, tale calcolo vieneeffettuato in modo indipendente.

Il costo computazionale complessivo ammonta dunque a n3

3 + n2 dicui n3

3 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

Page 15: Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Pivoting e stabilitaLa fattorizzazione LU

Metodo di CholeskyLe function Matlab

Le fattorizzazioni di matrici hanno diversi utilizzi.

Nel caso specifico della fattorizzazione LU la prima immediataapplicazione e il calcolo del determinante di A.

Infatti

det(A) = det(LU) = det(L) det(U) = det(U) =

n∏i=1

ui,i.

Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Corso di Matematica per la Chimica

Page 16: Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Pivoting e stabilitaLa fattorizzazione LU

Metodo di CholeskyLe function Matlab

Un’altra possibile applicazione scaturisce dall’esigenza di risolvere psistemi che hanno tutti la stessa matrice dei coefficienti A, cioe

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 eogni sistema viene poi risolto mediante 2 algoritmi di sostituzione,per un costo computazionale complessivo che si riduce quindi an3

3 + pn2 (contro p(

n3

3 + n2

2

)se si risolvesse ciascun sistema

indipendentemente dagli altri).

Osserviamo infine che se p = n e B = I, risolvere il sistema AX = B,e equivalente a calcolare A−1.

Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Corso di Matematica per la Chimica

Page 17: Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Pivoting e stabilitaLa fattorizzazione LU

Metodo di CholeskyLe function Matlab

Il metodo di Gauss con la variante del pivoting esegue ancora unafattorizzazione di matrice nei seguenti termini

PA = LU e Pb = Ly

dove P ∈ Rn×n, detta matrice di permutazione, contiene leinformazioni relative agli scambi di righe.

Vale il seguente

TeoremaPer ogni matrice A ∈ Rn×n esiste una matrice di permutazioneP ∈ Rn×n tale che

PA = LU.

Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Corso di Matematica per la Chimica

Page 18: Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Pivoting e stabilitaLa fattorizzazione LU

Metodo di CholeskyLe function Matlab

Metodo di Cholesky

Sia A ∈ Rn×n una matrice simmetrica definita positiva.

In questo caso speciale e possibile costruire un algoritmo, antagonistadel metodo di Gauss, e quindi una fattorizzazione alternativa a quellaLU, che e piu conveniente dal punto di vista computazionale.

Vale il seguente

TeoremaSe A ∈ Rn×n e una matrice simmetrica definita positiva esiste ed eunica la fattorizzazione

A = LLT

dove L e una matrice triangolare inferiore con elementi diagonali nonnulli.

Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Corso di Matematica per la Chimica

Page 19: Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Pivoting e stabilitaLa fattorizzazione LU

Metodo di CholeskyLe function Matlab

Posto A = (ai,j)i,j=1,...,n e L = (li,j)i,j=1,...,n, si ha

ai,j =

n∑k=1

li,klTk,j =n∑

k=1

li,klj,k.

Poiche la matrice e simmetrica, possiamo considerare solo glielementi di A con j ≤ i. Otteniamo

ai,j =

j−1∑k=1

li,klj,k + li,jlj,j, i = 1, . . . , n, j = 1, . . . , i− 1

e

ai,i =

i−1∑k=1

l2i,k + l2i,i, i = 1, . . . , n.

Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Corso di Matematica per la Chimica

Page 20: Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Pivoting e stabilitaLa fattorizzazione LU

Metodo di CholeskyLe function Matlab

Da cuil1,1 =

√a1,1

li,j =1lj,j

[ai,j −

j−1∑k=1

li,klj,k

]i = 2, . . . , nj = 1, . . . , i− 1

li,i =

√√√√ai,i −i−1∑k=1

l2i,k

Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Corso di Matematica per la Chimica

Page 21: Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Pivoting e stabilitaLa fattorizzazione LU

Metodo di CholeskyLe function Matlab

schema algoritmo

l1,1 =√a1,1

for i=2:nfor j=1:i-1

li,j = 0;for k=1:j-1

li,j = li,j + li,k ∗ lj,k; j− 1 operazioniendli,j = (ai,j − li,j)/lj,j; 1 operazione

endli,i = 0;for k=1:i-1

li,i = li,i + l2i,k; i− 1 operazioniendli,i =

√ai,i − li,i; 1 operazione

endDott.ssa Maria Carmela De Bonis a.a. 2013-14 Corso di Matematica per la Chimica

Page 22: Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Pivoting e stabilitaLa fattorizzazione LU

Metodo di CholeskyLe function Matlab

costo computazionale

n∑i=1

i +i−1∑j=1

j

+ n2 =

n∑i=1

i +n∑

i=1

i(i− 1)2

+ n2

=

n∑i=1

i +12

n∑i=1

i2 − 12

n∑i=1

i + n2

=12

n∑i=1

i +12

n∑i=1

i2 + n2

=n(n + 1)

4+

(n + 1)n(2n + 1)12

+ n2

=n3

6+

32

n2 +n3' n3

6

Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Corso di Matematica per la Chimica

Page 23: Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Pivoting e stabilitaLa fattorizzazione LU

Metodo di CholeskyLe function Matlab

E possibile provare che l’algoritmo di Cholesky e stabile.

Ricordiamo che, peraltro, anche l’algoritmo di Gauss, senza pivoting,e stabile per le matrici simmetriche definite positive.

Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Corso di Matematica per la Chimica

Page 24: Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Pivoting e stabilitaLa fattorizzazione LU

Metodo di CholeskyLe function Matlab

Molte routine automatiche calcolano R = LT anzicche L, ma eevidente che l’algoritmo e lo stesso (con un attento uso degli indici),data la simmetria della matrice di partenza A.

In tali casi dunque scriveremo

A = RTR.

Osserviamo infine che se si vuole risolvere il sistema

Ax = b

mediante la fattorizzazione di Cholesky bastera, una volta computatala fattorizzazione, e quindi calcolata L ( o rispettivamente R), risolverei seguenti due sistemi

Ly = b, LTx = y (RTy = b, Rx = y rispettivamente)

Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Corso di Matematica per la Chimica

Page 25: Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Pivoting e stabilitaLa fattorizzazione LU

Metodo di CholeskyLe function Matlab

Le function Matlab

Chiudiamo questa carrellata dei principali metodi diretti per larisoluzione di un sistema lineare descrivendo le principali function diMatlab che implementano tali metodi.

Sia allora A una matrice non singolare di ordine n e b un vettorecolonna di ordine n.

risoluzione dei sistemi diagonali: se la matrice dei coefficienti Ae diagonale, A\b risolve il sistema mediante n operazioni didivisione;

risoluzione dei sistemi triangolari: se la matrice dei coefficienti Ae triagolare (superiore o inferiore) A\b risolve il sistemamediante algoritmo di sostituzione (all’indietro o in avanti aseconda struttura della matrice);

Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Corso di Matematica per la Chimica

Page 26: Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Pivoting e stabilitaLa fattorizzazione LU

Metodo di CholeskyLe function Matlab

risoluzione di sistemi con matrice dei coefficienti qualsiasi: A\brisolve il sistema mediante metodo di eliminazione di Gauss (inrealta con la fattorizzazione LU) con pivoting e gli algoritmi disostituzione;

risoluzione di un sistema con matrice simmetrica e definitapositiva: A\b risolve il sistema mediante metodo di Cholesky egli algoritmi di sostituzione;

fattorizzazione LU: il comando [L,U,P] = lu(A) calcola ifattori L, U e la matrice di permutazione P tali che PA = LU;

fattorizzazione di Cholesky: se la matrice A e simmetrica edefinita positiva, il comando R = chol(A) calcola il fattoretriangolare superiore R tale che A = RTR;

Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Corso di Matematica per la Chimica

Page 27: Il metodo di Eliminazione di Gauss con la tecnica del pivoting

Pivoting e stabilitaLa fattorizzazione LU

Metodo di CholeskyLe function Matlab

calcolo del determinante di una matrice: det(A) calcola ildeterminante della matrice non singolare A, utilizzando lafattorizzazione LU;

condizionamento: il comando cond(A,p), con p = 1, 2, inf ,‘fro’, calcola il numero di condizionamento rispettivamente innorma 1, 2, infinito e Frobenius;

inversa di una matrice: inv(A), calcola l’inversa della matriceutilizzando la fattorizzazione LU.

Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Corso di Matematica per la Chimica