Metodi diretti: generalitàriccardo.broglia/Didattica/AN2004-05... · Metodo di sostituzione: costo...
Transcript of Metodi diretti: generalitàriccardo.broglia/Didattica/AN2004-05... · Metodo di sostituzione: costo...
Metodi diretti: generalità
• Sono basati su una trasformazione del sistema algebrico iniziale in uno equivalente dalla struttura più semplice.
• La soluzione è ottenuta in un numero finito di passi ed in assenza di errori di arrotondamento si otterrebbe lasoluzione esatta.
• Sono applicati a problemi “piccoli” e “densi”.• Efficienza stimata in termini di costo computazionale.
BXABAX ~~=⇔=
Metodi diretti: triangolare superiore• Sistema algebrico triangolare superiore regolare:
• Algoritmo di sostituzione all’indietro:
=
=++
=++++=+++++
⇔=
nnnn
knknkkk
nnkk
nnkk
bxu
bxuxu
bxuxuxubxuxuxuxu
LLLL
LLLLLLLLL
222222
111212111
BUX
( )
−=
−=
=
∑+=
1,,111
Knkxubu
x
ubx
n
kiikik
kkk
nn
nn
Metodi diretti: triangolare inferiore• Sistema algebrico triangolare inferiore regolare:
• Algoritmo di sostituzione in avanti:
=+++
=+++
=+=
⇔=
nnnnnn
kkkkkk
bxlxlxl
bxlxlxl
bxlxlbxl
LLLLLLLL
LLLL
2211
2211
2222121
1111
BLX
=
−=
=
∑−
=
nkxlbl
x
lbx
k
iikik
kkk ,,21 1
1
11
11
K
Metodo di sostituzione: costo• Ad ogni passo del metodo di sostituzione in avanti o
all’indietro ci sono:– n-k moltiplicazioni– 1 divisione
• Costo computazionale:
( ) flops22
122
2
1
nnnnknCn
kc ≈+−≈+−= ∑
=
• Perché è richiesto che U e L siano regolari?
Metodi diretti: eliminazione di Gauss• Trasforma il sistema algebrico originale in un sistema
equivalente triangolare superiore:
• Operazioni “lecite”, cioè che trasformano il sistema originale in uno equivalente:
– scambio tra equazioni– sostituzione di una equazione con una combinazioni
lineare tra la stessa e altre equazioni
• Il metodo opera sulle righe della matrice completa:
BUXBAX ~=⇔=
[ ]
=
nnnnn
n
n
b
bb
aaa
aaaaaa
ML
MLMMLL
2
1
21
22221
11211
B|A
Metodo di eliminazione di Gauss• Il metodo può essere così descritto: detta [A(1)|B(1)] la
matrice completa originale, al passo (k+1) la matrice [A(k+1)|B(k+1)] è ottenuta dalla matrice [A(k)|B(k)] annullando (per mezzo di operazioni “lecite”) tutti gli elementi sottodiagonali dalla colonna 1 alla colonna k.
• Al passo n-esimo il sistema è tridiagonale superiore:
• Il sistema A(n)X=B(n) può essere risolto tramite l’algoritmo delle sostituzioni successive.
[ ]
=
)(
)2(2
)1(1
)(
)2(2
)2(22
)1(1
)1(12
)1(11
00
0
nn
nnn
n
n
b
bb
a
aaaaa
M
L
MLMM
L
L
B|A
[ ]
=
)1(4
)1(3
)1(2
)1(1
)1(44
)1(43
)1(42
)1(41
)1(34
)1(33
)1(32
)1(31
)1(24
)1(23
)1(22
)1(21
)1(14
)1(13
)1(12
)1(11
11
bbbb
aaaaaaaaaaaaaaaa
)()( B|A
Eliminazione di Gauss: esempio con n=4; k=1
==
njni
,1,2
[ ]
=
)2(4
)2(3
)2(2
)1(1
)2(44
)2(43
)2(42
)2(34
)2(33
)2(32
)2(24
)2(23
)2(22
)1(14
)1(13
)1(12
)1(11
22
bbbb
aaaaaaaaaaaaa
)()( B|A
−=−=
)1(11
)1()2(
)1(11
)1()2(
bmbbamaa
iii
jiijij)1(
11
)1(1
1 aam i
i =con:per:
000
⇓
⇓
Eliminazione di Gauss: esempio con n=4; k=2
==
njni
,2,3
[ ]
=
)3(4
)3(3
)2(2
)1(1
)3(44
)3(43
)3(34
)3(33
)2(24
)2(23
)2(22
)1(14
)1(13
)1(12
)1(11
33
000
bbbb
aaaaaaaaaaa
)()( B|A
−=−=
)2(22
)2()3(
)2(22
)2()3(
bmbbamaa
iii
jiijij)2(
22
)2(2
2 aam i
i =con:per:
00
⇓
⇓
[ ]
=
)2(4
)2(3
)2(2
)1(1
)2(44
)2(43
)2(42
)2(34
)2(33
)2(32
)2(24
)2(23
)2(22
)1(14
)1(13
)1(12
)1(11
22
000
bbbb
aaaaaaaaaaaaa
)()( B|A
Eliminazione di Gauss: esempio con n=4; k=3
==
njni
,3,4
[ ]
=
)4(4
)3(3
)2(2
)1(1
)4(44
)3(34
)3(33
)2(24
)2(23
)2(22
)1(14
)1(13
)1(12
)1(11
44
0000
0
bbbb
aaaaaaaaaa
)()( B|A
−=−=
)3(33
)3()4(
)3(33
)3()4(
bmbbamaa
iii
jiijij)3(
33
)3(3
3 aam i
i =con:per:
⇓
⇓
[ ]
=
)3(4
)3(3
)2(2
)1(1
)3(44
)3(43
)3(34
)3(33
)2(24
)2(23
)2(22
)1(14
)1(13
)1(12
)1(11
33
0000
0
bbbb
aaaaaaaaaaa
)()( B|A
0
Eliminazione di Gauss: esercizio
[ ]
−−−
−−−
=
1224
041044/32/31
52/1322524
B|A
• Risolvere il sistema seguente tramite il metodo di eliminazione di Gauss:
• Soluzione:
[ ]
−−
−−−
=
10/21104
20/510002/1500
43202524
)4()4( B|A
Eliminazione di Gauss: applicabilità
−=−=
+
+
)()()1(
)()()1(
kkik
ki
ki
kkjik
kij
kij
bmbbamaa
=+=nkj
nki,
,1per:
• Le quantità: mik=aik(k)/akk
(k) sono detti moltiplicatori;• gli elementi akk
(k) sono detti elementi pivotali;• le condizioni akk
(k)≠0 garantiscono l’applicabilità del metodo, equivalgono alle condizioni det(Ak)≠0.
• se akk(k)=0 , poiché la matrice A è regolare (altrimenti il
sistema sarebbe irrisolvibile), esiste sempre la possibilità di uno scambio di righe per portare un elemento non nullo nella posizione diagonale (pivoting parziale).
1,1 −= nkPer: )(
)(
kkk
kik
ik aam =con:
Algoritmo
==
ii
ijij
bbaa
)1(
)1(
nji ,1, =per:
Eliminazione di Gauss: pivoting, scaling
• Pivoting parziale: akk(k)≠0 ma piccolo in modulo, per la stabilità del
metodo può comunque essere utile portare in diagonale un terminemaggiore in modulo, individuato quell’indice r≥k tale che:
si scambiano le righe r e k.
• Pivoting totale: individuata quella coppia di indici r,q ≥k tali che:
si scambiano le righe di indici r e k e le colonne di indici q e k.
• Scaling e pivoting scalato: divisione di ciascuna riga per per la norma del corrispondente vettore riga (norma uno o infinito):
)()( max ksknsk
krk aa
≤≤=
)(
,
)( max kspnpsk
krq aa
≤≤=
( ) sssk
spnpskrk
rq aaaaa A==≤≤
/max/ )(
,
)(
• Al k-esimo passo del metodo di Gauss sono necessarie:– n-k divisioni per il calcolo dei moltiplicatori– (n-k)(n-k+1) moltiplicazioni (per il calcolo di [aij
(k)])– (n-k) moltiplicazioni (per il calcolo di [bi
(k)])
• Costo computazionale:
Eliminazione di Gauss: costo
( ) ( ) ( )[ ] flops3
1)()(31
1GAUSS
nknknknknCn
kc ≈−++−−+−= ∑
−
=
• A cui vanno aggiunte le operazioni per la soluzione del sistema triangolare:
flops23
23 nnCc +=
• Al k-esimo passo del metodo di Gauss sono azzerati gli elementi sotto la diagonale principale, nel metodo di riduzione di Gauss-Jordan vengono annullati anche gli elementi sopra la diagonale principale.
• Il problema equivalente è diagonale• Costo computazionale:
Metodi diretti: riduzione di Gauss-Jordan
−=−=
+
+
)()()1(
)()()1(
kkik
ki
ki
kkjik
kij
kij
bmbbamaa
=≠=
nkjki
ni
,
,1per:1,1 −= nkPer: )(
)(
kkk
kik
ik aam =con:
flops2
3
nnCc +≈
Algoritmo
Esempio 4.9.1: risolvere il seguente sistema con il metodo di eleminazione Gauss con e senza pivoting parziale operando con una risoluzione a quattro cifre decimali:
Soluzione esatta: X= [10.0,1.0]T
Soluzione senza pivoting parziale: X= [6.667,1.001]T
Soluzione con pivoting parziale: X= [10.0,1.0]T
Eliminazione di Gauss: esempio
=−=+
4640.13160.23780.03690.13660.10003.0
21
21
xxxx
• Esercizi consigliati [GL] 2.12, 2.13
• Il metodo di eliminazione di Gauss può essere visto come una procedura per la fattorizzazione della matrice A in due matrici triangolari, inferiore con elementi diagonali unitari e superiore:
• Con L matrice dei moltiplicatori e U matrice finale dell’al-goritmo di Gauss.
Metodi diretti: fattorizzazione LU
==
)(
)3(3
)3(33
)2(2
)2(23
)2(22
)1(1
)1(13
)1(12
)1(11
321
3231
21
000
000
1
010010001
nnn
n
n
n
nnn a
aaaaaaaaa
mmm
mmm
L
MOMMM
L
L
L
L
MOMMM
L
L
L
LUA
• Matrice di trasformazione elementare Eij(c):
Metodi diretti: fattorizzazione LU
+
=
00
00
00
1000
010000100001
)(
LLL
MLLM
LLL
MLLLM
LLL
L
MOMMM
L
L
L
ccijE
• Moltiplicando a sinistra una matrice A per Eij(c) equivale a sommare alla riga i-esima (di A) la j-esima riga moltiplicata per c.
i
j
• Metodo di eliminazione di Gauss in forma matriciale:
Metodi diretti: fattorizzazione LU
)(
)(,1,1,2,2,,
)1( )()()(k
k
kkkkkkkkkknkn
k mmm
AL
AEEEA
=
=−−−= +++++ L
−
−=−=
+
+
=∏
100
1
010001
)(
,
,1
1
,,
LL
MLMLMM
MOLMM
MLLMM
MLMOMM
LML
LML
kn
kk
k
nikikik
m
mmEL
−=−=
+
+
)()()1(
)()()1(
kkik
ki
ki
kkjik
kij
kij
bmbbamaa
=+=nkj
nki,
,1per:1,1 −= nkPer: )(
)(
kkk
kik
ik aam =con:
• Metodo di eliminazione di Gauss in forma matriciale:
Metodi diretti: fattorizzazione LU
( ) LUAULULA
ALUALAL
ALLLALLALU
=⇔=
=
=⇔==
====
−−
=
−
−=
−=−=−=
−−−
−−−
−
∏∏
∏∏∏11
1
11
1
1
1
1
1
)1(1
1
)1(121
)2(21
)1(1
n
kk
nkk
nkk
nkk
nkk
nnn
nnn
n L
( ) ( )
=
= ∏−
=
−
+
−
1
010010001
100
1
010001
321
3231
211
1
1
,
,1
1
L
MOMMM
L
L
L
LL
MLMLMM
MOLMM
MLLMM
MLMOMM
LML
LML
nnn
n
kk
kn
kk
k
mmm
mmm
m
mLL
• Matrici di permutazione Pij di ordine n, matrice di identità di ordine con le righe i e j scambiate:
Metodi diretti: fattorizzazione LU
=
0001001000001001000000001
25P
• Moltiplicando a sinistra una matrice A per Pij equivale a scambiare la riga i-esima con la riga j-esima (di A).
2
5
1)det( −=ijP
Teorema: se A∈ℜnxn è tale che det(Ak)≠0, per k=1…n, ossia se tutti i suoi determinanti principali di testa sono non nulli,allora esistono L,U∈ℜnxn, matrici triangolare inferiore con elementi diagonali unitari e triangolare superiore tali che:
Teorema: se A∈ℜnxn è regolare, ma non soddisfa la condi-zione det(Ak)≠0, per k=1…n, esiste una matrice di permu-tazione P di ordine n, tale che la matrice: soddisfa le condizioni: det( )≠0, per k=1…n.
Nota: il costo computazionale della fattorizzazione LU è pari a quello del metodo di Gauss.
Fattorizzazione LU: applicabilità
LUA =
PAA =~
kA~
• Soluzione di un sistema algebrico lineare:
con un costo computazionale pari a n3/3+2n2/2.• Soluzione di più sistemi algebrici al variare del t.n.:
con un costo pari a n3/3+Nn2 operazioni floating point, con Gauss si avrebbe un costo totale di N(n3/3+n2/2)
Fattorizzazione LU: applicazioni
==
⇔=⇔== YUX
BLYBLUXBAX
LUA
Sostituzioni in avanti
Sostituzioni all’indietro
NiNiNi ii
iiiiii ,1,1,1
=
==
⇔
==
⇔
==
= YUXBLYBLUXBAX
LUA
• Calcolo del determinante:
dove con s si è indicato il numero di scambi di righe.
• Calcolo dell’inversa: detti Xi, i=1…n i vettori colonna di A-1:
Fattorizzazione LU: applicazioni
)det()det()det()det()det( ULLUAP ==
ni
ni
ii
ii
iinn
,,1
,,1][][ 2121
1
K
KKK
=
==
⇔
==
⇔=⇔=
=
−
YUXELY
EAXEEEXXXAIAA
LUA
( )( ) )()2(
22)1(
1111
111)det( n
nns
n
kkk
n
kkks aaaul L−=
−
= ∏∏==
A
Calcolo del rango di una matrice:• se l’algoritmo di eliminazione applicato alla matrice quadrata A∈ℜnxn
termina regolarmente dopo n-1 passi, allora la matrice A ha rango massimo pari ad n (la matrice è regolare).
• se l’algoritmo di eliminazione applicato alla matrice quadrata A∈ℜnxn
termina dopo q passi poiché ark(k)=0, r=k,…,n, allora la matrice A ha
rango q≤n (la matrice è singolare).
• l’algoritmo di eliminazione applicato alla matrice rettangolare A∈ℜmxn
termina necessariamente dopo q passi o perché q=m o perché tutti gli elementi dalla riga q+1-esima alla riga m sono nulli; la matrice A ha rango q.
Fattorizzazione LU: applicazioni
Esempio 4.10.2: fattorizzare la matrice
Fattorizzazione LU: esempio
−−
−−
=
1001121100211121
A
• Esercizi consigliati [GL] 2.16,2.17
• Banachiewicz-Doolittle: permette di fattorizzare la matrice A senza utilizzare il metodo di eliminazione di Gauss (stesso Cc≈ n3/3):
Formule compatte di fattorizzazione
≤<≤
−=
≤≤≤−=
∑
∑−
=
−
=
nijuulal
nijulau
jj
j
kkjikijij
j
kikjkjiji
1/
1
1
1
1
1
• Cholesky: se la matrice A è definita positiva può essere fattorizzata in due matrici una trasposta dall’altra: A=LLT con L triangolare inferiore (costo computazionale Cc≈ n3/6):
−=
≥>≥
−=
∑
∑−
=
−
=
1
1
2
1
11/
j
kjkjjjj
jj
j
kjkikijij
lal
jinlllal
• Esercizio consigliato [GL] 7.24
• Sistema sovradeterminato: sistema algebrico lineare di mequazioni in n incognite con m>n;.
Sistemi sovradeterminati
• Soluzione cercata: determinare la soluzione X che minimizza una norma del vettore dei residui R=AX-B∈ ℜm, ad esempio la norma 2:
BAX = con A∈ ℜmxn, B∈ ℜm e X∈ ℜn
In generale la soluzione non esiste; ciò accade per esempio nell’interpolazione ai minimi quadrati (retta “passante” per più di due punti).
2
1 1
2
2
2
2 ∑ ∑= =
−=−=
m
i
n
kikik bxaBAXR
• Teorema: Se la matrice dei coefficienti A ha rango n (numero delle incognite), esiste un solo vettore X che minimizza il residuo in norma 2, ed è dato dalla soluzione del sistema algebrico quadrato:
Sistemi sovradeterminati
BAAXA TT =
• Il vettore X che minimizza (||R||2)2 è detto soluzione del sistema nel senso dei minimi quadrati.