Sei sulla pagina 1di 58

IL PIVOTING

NELLALGORITMO DI
ELIMINAZIONE DI GAUSS
Algebra lineare numerica 62
Esempio
_

_
0.0001 x + 1.234 y = 1.2341
x + 100 y = 101
soluzione: s = (x y)
T
= (1 1)
T
Per calcolare la soluzione del sistema, eseguia-
mo lalgoritmo di Gauss e la back substitution
in un sistema aritmetico oating-point con
= 10; t = 3; t
reg
= t = 3.
Algebra lineare numerica 63
Esecuzione dellalgoritmo di Gauss
(unico passo)
m
2,1
=a
2,1
/a
1,1
=
= (.10010
1
)/(.10010
3
) = .100 10
5
;
a
(1)
2,2
= a
2,2
m
2,1
a
1,2
=
=.10010
3
(.100 10
5
)(.12310
1
) =
= .001 10
5
.123 10
5
= .122 10
5
;
b
(1)
2
= b
2
m
2,1
b
1
=
=.10110
3
(.100 10
5
)(.12310
1
) =
= .001 10
5
.123 10
5
= .122 10
5
;

d
d
d
A
(1)
=
_
_
_
_
_
_
.100 10
3
.123 10
1
0 .122 10
5
_
_
_
_
_
_
b
(1)
=
_
_
_
_
_
_
.123 10
1
.122 10
5
_
_
_
_
_
_
Algebra lineare numerica 64
Applicando la back substitution si ha:
y =
b
(1)
2
a
(1)
2,2
=
.122 10
5
.122 10
5
= .100 10
1
= 1;
x =
b
(1)
1
a
(1)
1,2
y
a
(1)
1,1
=
=
.123 10
1
(.123 10
1
)(.100 10
1
)
.100 10
3
=
=
.123 10
1
.123 10
1
.100 10
3
= 0.
s = ( x y)
T
= (0 1)
T
E

=
s s

= 1 = .1 10
1
(errore relativo = 100 %)
INACCETTABILE !!
Algebra lineare numerica 65
m
2,1
=
a
2,1
a
1,1
=
.10010
1
.10010
3
= .100 10
5

d
d
d
|m
2,1
| > 1

d
d
d
nel calcolo di m
2,1
a
2,1
lerrore di round-o presente in a
2,1
`e amplicato

d
d
d
perdita di cifre nel calcolo di
a
(1)
2,2
= a
2,2
m
2,1
a
1,2

d
d
d
lalgoritmo di Gauss
`e sensibile alla precisione nita
(amplica lerrore di round-o)
Algebra lineare numerica 66
Scambiamo ora le equazioni:
_

_
x + 100 y = 101
0.0001 x + 1.234 y = 1.2341
Algebra lineare numerica 67
Esecuzione dellalgoritmo di Gauss
(unico passo)
m
2,1
=a
2,1
/a
1,1
=
= (.100 10
3
)/(.100 10
1
) = .100 10
3
;
a
(1)
2,2
= a
2,2
m
2,1
a
1,2
=
= .123 10
1
(.100 10
3
) (.100 10
3
) =
= .123 10
1
.100 10
1
=
= .123 10
1
.001 10
1
= .122 10
1
;
b
(1)
2
= b
2
m
2,1
b
1
=
= .123 10
1
(.100 10
3
) (.101 10
3
) =
= .123 10
1
.101 10
1
=
= .123 10
1
.001 10
1
= .122 10
1
.
Algebra lineare numerica 68
Quindi:
A
(1)
=
_
_
_
_
_
_
.100 10
1
.100 10
3
0 .122 10
1
_
_
_
_
_
_
b
(1)
=
_
_
_
_
_
_
.101 10
3
.122 10
1
_
_
_
_
_
_
Applicando la back substitution si ha:
y = b
(1)
2
/a
(1)
2,2
=
=(.122 10
1
)/(.122 10
1
) = .100 10
1
= 1 ;
x = (b
(1)
1
a
(1)
1,2
y)/a
(1)
1,1
=
= (.101 10
3

(.100 10
3
) (.100 10
1
))/(.100 10
1
) =
= (.101 10
3
.100 10
3
)/(.100 10
1
) =
= .100 10
1
= 1.
x = 1, y = 1
SOLUZIONE ESATTA
Algebra lineare numerica 69
Perche lo scambio delle equazioni ha
condotto ad una soluzione accettabile?
m
2,1
=
(.100 10
3
)
(.100 10)
= .100 10
3

d
d
d
|m
2,1
| 1

d
d
d
nel calcolo di m
2,1
a
1,2
lerrore in a
1,2
non `e amplicato
(se |m
2,1
| < 1 lerrore `e ridotto)
Algebra lineare numerica 70
In generale
a
(k)
i,j
= a
(k1)
i,j
m
i,k
a
(k1)
k,j
, m
i,k
=
a
(k1)
i,k
a
(k1)
k,k
|a
(k1)
k,k
| < |a
(k1)
i,k
| = |m
i,k
| > 1

d
d
d
amplicazione
dellerrore di round-o
presente in a
(k1)
k,j

d
d
d
lalgoritmo di Gauss
amplica lerrore di round-o
(algoritmo instabile)
Algebra lineare numerica 71
Invece:
|m
i,k
| 1

d
d
d
non c`e amplicazione
dellerrore di round-o in m
i,k
a
(k1)
k,j
Algebra lineare numerica 72
IDEA
Ad ogni passo k,
riorganizzare la matrice in modo da avere
il k-simo pivot tale che
|m
i,k
| =
|a
(k1)
i,k
|
|a
(k1)
k,k
|
1, i = k + 1, . . . , n

d
d
d
Ad ogni passo k si cerca lelemento di
massimo modulo nella k-sima colonna
e si scambia la riga k con la riga contenente
tale elemento in modo che
pivot = elemento di max modulo
nella k-ma colonna
PIVOTING PARZIALE
Algebra lineare numerica 73
d
d
d
d
d
c
k
k riga k
n-k
T
ricerca max
d
d
d
d
d
c
k
k riga k
n-k
T
max
r
d
d
d
d
d k
r
T T
c c
d
d
d
d
d r
k
scambio riga r con riga k pivot al posto giusto
Algebra lineare numerica 74
PIVOTING PARZIALE
Esempio
_

_
0.001x
1
7x
2
= 7
3x
1
+2.099x
2
+6x
3
= 3.901
5x
1
x
2
+5x
3
= 6
Soluzione:
s = (x
1
x
2
x
3
)
T
= (0. 1. 1.)
T
In un sistema aritmetico oating-point con
= 10, t = 5, t
reg
= t = 5,
lalgoritmo di Gauss senza pivoting calcola:
s = ( x
1
x
2
x
3
)
T
= (0.1 0.99986 0.40008)
T
E

=
s s

= 0.59992 = .59992 10
0
(errore relativo 60 %)
INACCETTABILE!!
Algebra lineare numerica 75
Applichiamo il pivoting parziale:
passo 1
A =
_
_
_
_
_
_
_
_
_
_
_
0.001 7 0
3 2.099 6
5 1 5
_
_
_
_
_
_
_
_
_
_
_
pivot =5
(elemento di massimo modulo nella
prima colonna)

d
d
d
scambio della terza riga con la prima
A

=
_
_
_
_
_
_
_
_
_
_
_
5 1 5
3 2.099 6
0.001 7 0
_
_
_
_
_
_
_
_
_
_
_
, b

=
_
_
_
_
_
_
_
_
_
_
_
6
3.901
7
_
_
_
_
_
_
_
_
_
_
_
Algebra lineare numerica 76
Dopo la modica di matrice e vettore attivi
si ha:
A
(1)
=
_
_
_
_
_
_
_
_
_
_
_
5 1 5
0 1.499 9
0 6.9998 0.001
_
_
_
_
_
_
_
_
_
_
_
; b
(1)
=
_
_
_
_
_
_
_
_
_
_
_
_
6
7.501
6.9988
_
_
_
_
_
_
_
_
_
_
_
_
passo 2
pivot = -6.9998
(elemento di massimo modulo nella
seconda colonna)

d
d
d
scambio della terza riga con la seconda
A
(1)

=
_
_
_
_
_
_
_
_
_
_
_
5 1 5
0 6.9998 0.001
0 1.499 9
_
_
_
_
_
_
_
_
_
_
_
, b
(1)

=
_
_
_
_
_
_
_
_
_
_
_
6
6.9988
7.501
_
_
_
_
_
_
_
_
_
_
_
Algebra lineare numerica 77
Dopo la modica di matrice e vettori attivi si
ha:
A
(2)
=
_
_
_
_
_
_
_
_
_
_
_
5 1 5
0 6.9998 0.001
0 0 0.89998
_
_
_
_
_
_
_
_
_
_
_
, b
(2)
=
_
_
_
_
_
_
_
_
_
_
_
6
6.9988
0.89998
_
_
_
_
_
_
_
_
_
_
_
.
Applicando la back-substitution

d
d
d
x
1
= 0; x
2
= 1; x
3
= 1.
SOLUZIONE ESATTA
Algebra lineare numerica 78
Pivoting Parziale
Al passo k
m
i,k
=
a
(k1)
i,k
pivot
, i = k + 1, . . . , n
si vuole
|m
i,k
| 1, i = k + 1, . . . , n

d
d
d
|pivot| = max
kin
|a
(k1)
i,k
|

d
d
d
seleziona r, il pi` u piccolo intero per cui
|a
(k1)
r,k
| = max
kin
|a
(k1)
i,k
|,
e scambia la riga k con la riga r
Algebra lineare numerica 79
PIVOTING TOTALE
Al passo k
si cerca lelemento di massimo modulo
in tutta la matrice attiva
anzich`e cercarlo
nella k-ma colonna
Algebra lineare numerica 80
Pivoting Totale
Si scelgono r e s come gli interi pi u piccoli
per cui
|a
(k1)
r,s
| = max |a
(k1)
i,j
|, k i, j n
e si scambiano sia le righe k e r
che le colonne k e s:
d
d
d
d
d
d
d
d k
r
T T
c c
k s
E '
E '
Algebra lineare numerica 81
k mo pivot = max
(k+1)i,jn
|a
(k)
i,j
|

d
d
d
nel pivoting totale lelemento pivot
(elemento di massimo modulo in tutta la
matrice attiva)
`e sempre maggiore o uguale al
corrispondente pivot del pivoting parziale

d
d
d
i moltipicatori |m
i,k
| sono sempre minori o
uguali di quelli ottenuti col pivoting parziale

d
d
d
rispetto al pivoting parziale si ha una
maggiore riduzione
dellerrore di round-o
Algebra lineare numerica 82
Costo del pivoting totale
Al passo k (k = 1, . . . , n 1) sono richiesti
(n k + 1)
2
confronti

d
d
d
in totale O(n
3
/3) confronti

d
d
d
il pivoting totale aggiunge alla complessit`a
computazionale dellalgoritmo di Gauss
O(n
3
/3) confronti
Algebra lineare numerica 83
Costo del pivoting parziale
Al passo k (k = 1, . . . , n 1) sono richiesti
(n k + 1) confronti

d
d
d
in totale O(n
2
/2) confronti

d
d
d
il pivoting parziale aggiunge alla
complessit`a computazionale dellalgoritmo di
Gauss
O(n
2
/2) confronti
Algebra lineare numerica 84
Pivoting parziale
fattore di crescita dellerrore relativo su A
accettabile
minor numero di confronti del pivoting
totale

d
d
d
In generale
si utilizza la strategia del
pivoting parziale
Algebra lineare numerica 85
Algoritmo di Gauss con pivoting parziale
(in place)
.
.
.
ciclo sui passi
for k = 1 to n 1
scelta del pivot al passo k
determinare il piu piccolo r :
|a
r,k
| = max|a
i,k
|, i k
controllo singolarit`a
if |a
r,k
| = 0 then
scambio della riga k con la riga r
for j = k to n
scambiare a
k,j
con a
r,j
endfor
scambio termini noti
scambiare b
k
con b
r
cont.
Algebra lineare numerica 86
cicli per ottenere A
(k)
e b
(k)

for i = k + 1 to n
calcolo moltiplicatori
m
i,k
:= a
i,k
/a
k,k
modica elementi matrice attiva
for j = k + 1 to n
a
i,j
:= a
i,j
m
i,k
a
k,j
endfor
modica vettore termini noti
b
i
:= b
i
m
i,k
b
k
endfor
endif
endfor
.
.
.
Algebra lineare numerica 87
Algoritmo di Gauss con pivoting totale
(in place)
.
.
.
k = 1
scelta del pivot al passo 1
determinare i piu piccoli r, s:
|a
r,s
| = max |a
i,j
|, i, j 1
ciclo sui passi
while (|a
r,k
| = 0.and.k < n) then
scambio della riga k con la riga r
for j = k to n
scambiare a
k,j
con a
r,j
endfor
scambio della colonna k con la colonna s
for i = 1 to n
scambiare a
i,k
con a
i,s
endfor
cont.
Algebra lineare numerica 88
cicli per ottenere A
(k)

for i = k + 1 to n
calcolo moltiplicatori
m
i,k
:= a
i,k
/a
k,k
modica elementi matrice attiva
for j = k + 1 to n
a
i,j
:= a
i,j
m
i,k
a
k,j
endfor
endfor
k = k + 1
scelta del pivot al passo k
determinare i piu piccoli r, s:
|a
r,s
| = max |a
i,j
|, i, j k
endwhile
.
.
.
LA FATTORIZZAZIONE LU
Algebra lineare numerica 90
Problema
Risolvere m sistemi del tipo:
Ax
1
= b
1
; Ax
2
= b
2
; . . . ; Ax
m
= b
m
Primo approccio
applicare Gauss+back-substitution
ad ogni sistema

d
d
d
complessit`a di tempo =
= m(T
Gauss
(n)+T
Back
(n)) O
_
_
_
_
_
_
_
m
_
_
_
_
_
_
_
n
3
3
+
n
2
2
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
= O
_
_
_
_
_
_
_
m
n
3
3
_
_
_
_
_
_
_
Algebra lineare numerica 91
Esempio
Calcolo dellinversa A
1
di una matrice A.
Posto:
A
1
= (
1

2
. . .
n
); I = (e
1
e
2
. . . e
n
)
con

i
= (
1,i
. . .
n,i
)
T
, i = 1, . . . , n
(i-ma colonna di A
1
)
e
i
= (0 . . . 1 . . . 0)
T
, i = 1, . . . , n
(i-ma colonna di I)
da:
AA
1
= I A
i
= e
i
, i = 1, . . . , n
si ha che A
1
pu`o essere ottenuta calcolando
le sue n colonne, cio`e:
calcolare A
1

_
risolvere gli n sistemi:
A
i
= e
i
, i = 1, . . . n
Algebra lineare numerica 92

d
d
d
risolvere n sistemi con la stessa
matrice dei coecienti

d
d
d
complessit`a di tempo = O
_
_
_
_
_
_
_
n
n
3
3
_
_
_
_
_
_
_
= O
_
_
_
_
_
_
_
n
4
3
_
_
_
_
_
_
_
Algebra lineare numerica 93
Lalgoritmo di Gauss applicato a ciascun
sistema opera contemporaneamente sulla
matrice e sui vettori dei termini noti
MA
in questo caso la matrice dei coecienti
`e la stessa per tutti i sistemi.
`
E possibile modicare
una volta per tutte
gli elementi di A ed agire poi
sui diversi vettori dei termini noti?
CIO
`
E
`
E possibile separare le operazioni
eettuate dallalgoritmo di Gauss
su A da quelle eettuate su b?
Algebra lineare numerica 94
Esempio
Consideriamo il sistema
Ax = b
con
A =
_
_
_
_
_
_
_
_
_
_
_
2 4 2
1 1 5
4 1 2
_
_
_
_
_
_
_
_
_
_
_
, x =
_
_
_
_
_
_
_
_
_
_
_
x
1
x
2
x
3
_
_
_
_
_
_
_
_
_
_
_
, b =
_
_
_
_
_
_
_
_
_
_
_
6
0
2
_
_
_
_
_
_
_
_
_
_
_
Algebra lineare numerica 95
Applichiamo lalgoritmo di Gauss senza piv-
oting:
passo 1
m
2,1
=
1
2
, m
3,1
= 2;
A
(1)
=
_
_
_
_
_
_
_
_
_
_
_
2 4 2
0 3 6
0 7 2
_
_
_
_
_
_
_
_
_
_
_
, b
(1)
=
_
_
_
_
_
_
_
_
_
_
_
_
6
3
14
_
_
_
_
_
_
_
_
_
_
_
_
passo2
m
3,2
=
7
3
;
U = A
(2)
=
_
_
_
_
_
_
_
_
_
_
_
2 4 2
0 3 6
0 0 -12
_
_
_
_
_
_
_
_
_
_
_
,

b = b
(2)
=
_
_
_
_
_
_
_
_
_
_
_
6
3
-7
_
_
_
_
_
_
_
_
_
_
_
Algebra lineare numerica 96
Consideriamo la matrice
L =
_
_
_
_
_
_
_
_
_
_
_
1 0 0
m
2,1
1 0
m
3,1
m
3,2
1
_
_
_
_
_
_
_
_
_
_
_
=
_
_
_
_
_
_
_
_
_
_
_
1 0 0
1/2 1 0
2 7/3 1
_
_
_
_
_
_
_
_
_
_
_
L matrice triangolare inferiore
Notiamo che:
gli elementi diagonali sono uguali ad 1;
gli elementi della prima colonna coincidono
con i moltiplicatori al passo 1;
gli elementi della seconda colonna coinci-
dono con i moltiplicatori al passo 2.
Algebra lineare numerica 97
Calcoliamo il prodotto LU
LU =
_
_
_
_
_
_
_
_
_
_
_
1 0 0
1/2 1 0
2 7/3 1
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
2 4 2
0 3 6
0 0 12
_
_
_
_
_
_
_
_
_
_
_
=
=
_
_
_
_
_
_
_
_
_
_
_
2 4 2
1 1 5
4 1 2
_
_
_
_
_
_
_
_
_
_
_
= A

d
d
d
LU=A
Algebra lineare numerica 98
In generale
Lalgoritmo di Gauss, applicato ad A,
pu`o essere visto come
metodo di fattorizzazione
di A
nel prodotto di due matrici:
A=LU
L triangolare inferiore
U triangolare superiore
Algebra lineare numerica 99
L =
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
1 0 0 . . . 0
m
2,1
1 0 . . . 0
m
3,1
m
3,2
1 . . . 0
. . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
m
n,1
m
n,2
m
n,3
. . . 1
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
con
elementi diagonali = 1
elementi k-ma colonna = moltiplicatori passo
k, k = 1, . . . , n 1
U = A
(n1)
=
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
a
1,1
a
1,2
a
1,3
. . . a
1,n
0 a
(1)
2,2
a
(1)
2,3
. . . a
(1)
2,n
0 0 a
(2)
3,3
. . . a
(2)
3,n
.
.
.
0 0 . . . 0 a
(n1)
n,n
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
(matrice ottenuta allultimo passo dellalgoritmo
di Gauss)
Algebra lineare numerica 100

d
d
d
Risolvere
Ax = LUx = b
d
d
d

d
d
d
1. Calcolare i fattori L e U di A
(algoritmo di Gauss)
2. Posto Ux = y, risolvere Ly = b
(forward-substitution)
3. Risolvere Ux = y
(back-substitution)
Algebra lineare numerica 101
Nellesempio precedente:
1.
A = LU =
_
_
_
_
_
_
_
_
_
_
_
1 0 0
1/2 1 0
2 7/3 1
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
2 4 2
0 3 6
0 0 12
_
_
_
_
_
_
_
_
_
_
_
,
b =
_
_
_
_
_
_
_
_
_
_
_
6
0
2
_
_
_
_
_
_
_
_
_
_
_
2. Risolviamo Ly = b con la forward-substitution:
y
1
= 6 = b
(2)
1
;
y
2
= 0 1/2 6 = 3 = b
(2)
2
;
y
3
= 2267/33 = 7 = b
(2)
3
;
ovvero:
y = (6 3 7)
T
= b
(2)
vettore termini noti
ottenuto eseguendo lalgoritmo di
Gauss anche sul vettore b
Algebra lineare numerica 102
3. Risolviamo Ux = y con la back-substitution:
x
3
= 7/12;
x
2
= (3 6 7/12)/(3) = 13/6;
x
1
= (6 4 13/6 + 2 7/12)/2 =
3/4;
ovvero:
x =
_
_
_
_
_

3
4
13
6
7
12
_
_
_
_
_
T
Algebra lineare numerica 103
In generale
Risolvere Ly = b
d
d
d

d
d
d
eettuare sul vettore b gli
(n 1) passi dellalgoritmo di Gauss
ovvero
y = b
(n1)
Algebra lineare numerica 104
In conclusione
Lalgoritmo di Gauss, applicato
al sistema Ax = b
`e equivalente alla:
fattorizzazione LU di A
(fase di triangolarizzazione di A)
risoluzione del sistema Ly = b
(calcolo del vettore b
(n1)
)
Algebra lineare numerica 105
Problema (continuazione)
Risolvere m sistemi del tipo:
Ax
1
= b
1
; Ax
2
= b
2
; . . . ; Ax
m
= b
m
Secondo approccio
calcolare la fattorizzazione LU di A e
risolvere ogni sistema fattorizzato
Algebra lineare numerica 106

d
d
d
fattorizzazione LU di A con lalgoritmo di
Gauss (una sola volta)
risoluzione di 2m sistemi triangolari
Ly
1
= b
1
, Ux
1
= y
1
;
Ly
2
= b
2
, Ux
2
= y
2
;
.
.
.
.
.
.
Ly
m
= b
m
, Ux
m
= y
m
;

d
d
d
complessit`a di tempo =
= T
LU
(n) + m(T
Forw
(n) + T
Back
(n)) =
= O
_
_
_
_
_
_
_
n
3
3
_
_
_
_
_
_
_
+ 2mO
_
_
_
_
_
_
_
n
2
n
_
_
_
_
_
_
_
= O
_
_
_
_
_
_
_
n
3
3
+ mn
2
_
_
_
_
_
_
_

d
d
d
approccio pi u eciente
Algebra lineare numerica 107
MA
che cosa comporta il pivoting
nella fattorizzazione LU ?
Esempio
Ax = b
con
A =
_
_
_
_
_
_
_
_
_
_
_
2 4 2
1 1 5
4 1 2
_
_
_
_
_
_
_
_
_
_
_
, b =
_
_
_
_
_
_
_
_
_
_
_
6
0
2
_
_
_
_
_
_
_
_
_
_
_
Applichiamo lalgoritmo di Gauss con
pivoting parziale per calcolare i fattori L e U
di A
Algebra lineare numerica 108
passo 1
pivoting in I colonna:
max
1i3
|a
i,1
| = |a
3,1
| = 4

d
d
d
pivot = a
3,1
= 4

d
d
d
scambio prima e terza riga
_
_
_
_
_
_
_
_
_
_
_
4 1 2
1 1 5
2 4 2
_
_
_
_
_
_
_
_
_
_
_
moltiplicatori: 1/4, 1/2
eliminazione:
_
_
_
_
_
_
_
_
_
_
_
4 1 2
0
5
4
+
11
2
0
7
2
1
_
_
_
_
_
_
_
_
_
_
_
Algebra lineare numerica 109
passo 2
pivoting in II colonna:
max
2i3
|a
(1)
i,2
| = |a
(1)
3,2
| =
7
2

d
d
d
pivot = a
(1)
3,2
=
7
2
scambio seconda e terza riga
_
_
_
_
_
_
_
_
_
_
_
4 1 2
0
7
2
1
0
5
4
11
2
_
_
_
_
_
_
_
_
_
_
_
moltiplicatore: (
5
4
)/(
7
2
) =
5
14
eliminazione:
_
_
_
_
_
_
_
_
_
_
_
4 1 2
0
7
2
1
0 0
36
7
_
_
_
_
_
_
_
_
_
_
_
Algebra lineare numerica 110
A =
_
_
_
_
_
_
_
_
_
_
_
2 4 2
1 1 5
4 1 2
_
_
_
_
_
_
_
_
_
_
_
L

=
_
_
_
_
_
_
_
_
_
_
_
1 0 0
1/2 1 0
1/4 5/14 1
_
_
_
_
_
_
_
_
_
_
_
U

=
_
_
_
_
_
_
_
_
_
_
_
4 1 2
0 7/2 1
0 0 36/7
_
_
_
_
_
_
_
_
_
_
_
matrice dei matrice
moltiplicatori nale

d
d
d
A

= L

=
_
_
_
_
_
_
_
_
_
_
_
4 1 2
2 4 2
1 1 5
_
_
_
_
_
_
_
_
_
_
_
A

= L

coincide con A
a meno dello scambio di righe
derivanti dal pivoting
Algebra lineare numerica 111
Infatti, applicando ad A gli scambi eettuati
col pivoting, si ha:
A =
_
_
_
_
_
_
_
_
_
_
_
2 4 2
1 1 5
4 1 2
_
_
_
_
_
_
_
_
_
_
_
passo 1: scambio prima e terza riga
_
_
_
_
_
_
_
_
_
_
_
4 1 2
1 1 5
2 4 2
_
_
_
_
_
_
_
_
_
_
_
passo 2: scambio seconda e terza riga
_
_
_
_
_
_
_
_
_
_
_
4 1 2
2 4 2
1 1 5
_
_
_
_
_
_
_
_
_
_
_
= A

= L

Algebra lineare numerica 112


`
E possibile ottenere A

moltiplicando A
per una opportuna matrice PA = A

?
Osservazione
IA = A
I non modica A
PA = A

P deve scambiare le righe di A, ma


non ne deve modicare gli elementi

d
d
d
cercare di ottenere P da I
Algebra lineare numerica 113
Eseguiamo su
I =
_
_
_
_
_
_
_
_
_
_
_
1 0 0
0 1 0
0 0 1
_
_
_
_
_
_
_
_
_
_
_
gli stessi scambi eseguiti su A
passo 1: scambio prima e terza riga
_
_
_
_
_
_
_
_
_
_
_
0 0 1
0 1 0
1 0 0
_
_
_
_
_
_
_
_
_
_
_
passo 2: scambio seconda e terza riga
_
_
_
_
_
_
_
_
_
_
_
0 0 1
1 0 0
0 1 1
_
_
_
_
_
_
_
_
_
_
_
= P
Calcolando il prodotto PA si ha:
PA =
_
_
_
_
_
_
_
_
_
_
_
0 0 1
1 0 0
0 1 0
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
2 4 2
1 1 5
4 1 2
_
_
_
_
_
_
_
_
_
_
_
=
_
_
_
_
_
_
_
_
_
_
_
4 1 2
2 4 2
1 1 5
_
_
_
_
_
_
_
_
_
_
_
= L

Algebra lineare numerica 114

d
d
d
Leetto della moltiplicazione di P per A
`e quello di modicare lordine
delle righe di A

d
d
d
P matrice di permutazione
In generale
P IR
nn
matrice di permutazione
se moltiplicata (a sinistra) per A IR
nn
provoca uno scambio
di 2 o pi u righe di A
P si ottiene permutando le righe
della matrice identica
Algebra lineare numerica 115
In conclusione
Le matrici L

e U

prodotte dallalgoritmo
di Gauss con pivoting parziale sono
i fattori della matrice PA
PA = L

con P matrice di permutazione


che conserva le informazioni
sugli scambi eettuati
Algebra lineare numerica 116
Eettuando sul vettore dei termini noti
b =
_
_
_
_
_
_
_
_
_
_
_
6
0
2
_
_
_
_
_
_
_
_
_
_
_
gli scambi prodotti col pivoting, si ha:
passo 1: scambio prima e terza riga
b =
_
_
_
_
_
_
_
_
_
_
_
2
0
6
_
_
_
_
_
_
_
_
_
_
_
passo2: scambio seconda e terza riga
b =
_
_
_
_
_
_
_
_
_
_
_
2
6
0
_
_
_
_
_
_
_
_
_
_
_
ovvero:
Pb =
_
_
_
_
_
_
_
_
_
_
_
0 0 1
1 0 0
0 1 0
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
6
0
2
_
_
_
_
_
_
_
_
_
_
_
=
_
_
_
_
_
_
_
_
_
_
_
2
6
0
_
_
_
_
_
_
_
_
_
_
_
Algebra lineare numerica 117
Calcolati L

e U

tali che:
L

= PA
si ha
L

x = PAx = Pb (Ax = b)

d
d
d
prima di procedere allapplicazione
della back e della forward-substitution
`e necessario eettuare su b
gli stessi scambi eettuati su A
Algebra lineare numerica 118
In conclusione
risolvere Ax = b mediante
fattorizzazione L

con
pivoting parziale
d
d
d

d
d
d
1. calcolare i fattori L

e U

di PA
2. eettuare su b gli scambi del
pivoting (calcolare Pb)
3. risolvere L

x = Pb mediante back
e forward-substitution

Potrebbero piacerti anche