Sei sulla pagina 1di 15

Algoritmo Gauss-Jordan per triangolarizzazione e diagonalizzazione di matrici

Riduzione Strategia Pivot


● Diagonale ● Sempre

Triangolare ● Solo su 0

Esempio inversione matrice Esempio risoluzione sistema

0 8 -1 1 0 0 0 3 -4 -600
3 1 1 0 1 0 3 2 0 700
4 0 -1 0 0 1 4 1 2 1200

0 8 -1 1 0 0 < swap 0 3 -4 -600 < swap


3 1 1 0 1 0 3 2 0 700
4 0 -1 0 0 1 < swap 4 1 2 1200 < swap

Det(A1) = -1 Det(A) Det(A1) = -1 Det(A)

4 0 -1 0 0 1 3 4 1 2 1200 3
3 1 1 0 1 0 -4 3 2 0 700 -4
0 8 -1 1 0 0 0 3 -4 -600

Det(A2) = 4 Det(A) Det(A2) = 4 Det(A)

4 0 -1 0 0 1 4 1 2 1200 -5
0 -4 -7 0 -4 3 -2 0 -5 6 800 -1
0 8 -1 1 0 0 -1 0 3 -4 -600

Det(A3) = -4 Det(A) Det(A3) = -20 Det(A)

4 0 -1 0 0 1 15 -20 0 -16 -6800


0 -4 -7 0 -4 3 0 -5 6 800 -3
0 0 15 -1 8 -6 1 0 3 -4 -600 -5

Det(A4) = -60 Det(A) Det(A4) = 100 Det(A)

60 0 0 -1 8 9 -20 0 -16 -6800 1


0 -4 -7 0 -4 3 15 0 -5 6 800
0 0 15 -1 8 -6 7 0 0 2 600 8

Det(A5) = -900 Det(A) Det(A5) = 100 Det(A)

60 0 0 -1 8 9 1/60 -20 0 0 -2000


0 -60 0 -7 -4 3 -1/60 0 -5 6 800 -1
0 0 15 -1 8 -6 1/15 0 0 2 600 3
Det(A6) = 900/54000 Det(A) Det(A6) = -100 Det(A)

1 0 0 -0.02 0.13 0.15 -20 0 0 -2000 -1/20


0 1 0 0.12 0.07 -0.05 0 5 0 1000 1/5
0 0 1 -0.07 0.53 -0.4 0 0 2 600 1/2

Det(A6) = 1 Det(A7) = 100/200 Det(A)


Det(A) = 60
1 0 0 100
0 1 0 200
0 0 1 300

Det(A7) = 1
Det(A) = 2
Questo foglio elettronico serve per risolvere un
sistema lineare A x = b come pure per trovare
l'inversa di una matrice A-1 o il suo determinante.
Usarlo è molto semplice: scrivi la matrice dove vuoi
(eccetto nel'area grigia); seleziona la matrice e clicca
il pulsante.
L'inversione della matrice richiede la matrice identica
scritta alla destra. Alla fine, la matrice originale sarà
trasformata in identica, e l'identica sarà trasformata in
inversa.
Il sistema invece richiede solo la colonna dei termini
noti alla sinistra. Alla fine, la stessa colonna conterrà
la soluzione.
Il calcolo del determinante richiede solo la matrice
senz'altro.
Semplice no?

Ora qualche cosa sull'algoritmo.


I numeri che appaiono al margine destro della matrice
sono i coefficenti per cui viene moltiplicata la riga
corrispondente. Qualche volta l'algoritmo effettua un
semplice scambio di righe. (Swap)
Queste operazioni alterano il determinante della
matrice per cui sotto viene sempre ricalcolato il
determinante ad ogni passo.
Per il calcolo del solo determinante è sufficente la
sola triangolarizzazione risparmiando molti step
La strategia di pivot può essere applicata sempre o
solo quando il pivot è nullo, che è una condizione
indispensabile altrimenti l'algoritmo non può
procedere. Quando la strategia è sempre applicata
invece l'algoritmo cerca il massimo elemento nella
colonna del pivot e, dopo uno scambio, utilizza quel
nuovo valore come pivot. Per matrici piccole la
differenza non si nota, ma per grandi matrici la
riduzione dell'errore di arrotondamento è migliore.
Riduzione 1
Pivoting 2
Messaggio Seleziona una matrice
Esempio inversione matrice con −1
strategia pivot parziale 0 8 −1
A = 3 1 1 
−1

4 0 −1

con strategia pivot con strategia pivot solo su 0


0 8 -1 1 0 0 0 8 -1
3 1 1 0 1 0 3 1 1
4 0 -1 0 0 1 4 0 -1

0 8 -1 1 0 0 < swap 0 8 -1
3 1 1 0 1 0 3 1 1
4 0 -1 0 0 1 < swap 4 0 -1

Det(A1) = -1 Det(A) Det(A1) = -1 Det(A)

4 0 -1 0 0 1 3 4 0 -1
3 1 1 0 1 0 -4 3 1 1
0 8 -1 1 0 0 0 8 -1

Det(A2) = 4 Det(A) Det(A2) = 4 Det(A)

4 0 -1 0 0 1 4 0 -1
0 -4 -7 0 -4 3 < swap 0 -4 -7
0 8 -1 1 0 0 < swap 0 8 -1

Det(A3) = -4 Det(A) Det(A3) = -4 Det(A)

4 0 -1 0 0 1 4 0 -1
0 8 -1 1 0 0 1 0 -4 -7
0 -4 -7 0 -4 3 2 0 0 15

Det(A4) = -8 Det(A) Det(A4) = -60 Det(A)

4 0 -1 0 0 1 15 60 0 0
0 8 -1 1 0 0 0 -4 -7
0 0 -15 1 -8 6 -1 0 0 15

Det(A5) = -120 Det(A) Det(A5) = -900 Det(A)

60 0 0 -1 8 9 60 0 0
0 8 -1 1 0 0 15 0 -60 0
0 0 -15 1 -8 6 -1 0 0 15

Det(A6) = -1800 Det(A) Det(A6) = 900/54000 Det(A)

60 0 0 -1 8 9 1/60 1 0 0
0 120 0 14 8 -6 1/120 0 1 0
0 0 -15 1 -8 6 -1/15 0 0 1
Det(A7) = 1800/108000 Det(A) Det(A6) = 1
Det(A) = 60
1 0 0 -0.02 0.13 0.15 1 0 0
0 1 0 0.12 0.07 -0.05 0 1 0
0 0 1 -0.07 0.53 -0.4 0 0 1

Det(A7) = 1 Det(A7) = 1
Det(A) = 60 Det(A) = 50
1 0 0 0 -0.2 0.4
0 1 0 0.2 0.52 -0.64
0 0 1 -0.1 0.14 0.02

Det(A8) = 1
Det(A) = 50
gia pivot solo su 0
1 0 0
0 1 0
0 0 1

1 0 0 < swap
0 1 0
0 0 1 < swap

0 0 1 3
0 1 0 -4
1 0 0

0 0 1
0 -4 3 -2
1 0 0 -1

0 0 1 15
0 -4 3
-1 8 -6 1

-1 8 9
0 -4 3 15
-1 8 -6 7

-1 8 9 1/60
-7 -4 3 -1/60
-1 8 -6 1/15

900/54000 Det(A)

-0.02 0.13 0.15


0.12 0.07 -0.05
-0.07 0.53 -0.4
0 -0.2 0.4
0.2 0.52 -0.64
-0.1 0.14 0.02
Esempio risoluzione sistema con strategia pivot parziale

pivot solo su 0 il sistema è equivalente all' equazione matri


0 3 -4 -600
 3x2 − 4 x3 = −600 0 3 − 4  x1  − 600 
3 2 0 700  3 2 0  ⋅  x  =  700 
4 1 2 1200 3x1 + 2 x2 = 700    2  
4 x + x + 2 x = 1200 4 1 2   x3   120 
 1 2 3
0 3 -4 -600 < swap
3 2 0 700
4 1 2 1200 < swap

Det(A1) = -1 Det(A)

4 1 2 1200 3
3 2 0 700 -4
0 3 -4 -600

Det(A2) = 4 Det(A)

4 1 2 1200 -5
0 -5 6 800 -1
0 3 -4 -600

Det(A3) = -20 Det(A)

-20 0 -16 -6800


0 -5 6 800 -3
0 3 -4 -600 -5

Det(A4) = 100 Det(A)

-20 0 -16 -6800 1


0 -5 6 800
0 0 2 600 8

Det(A5) = 100 Det(A)

-20 0 0 -2000
0 -5 6 800 -1
0 0 2 600 3

Det(A6) = -100 Det(A)

-20 0 0 -2000 -1/20 La


La matrice
matrice èè diagonalizzata
diagonalizzata
0 5 0 1000 1/5 Ora
Ora dobbiamo
dobbiamo solo solo normalizzarla,
normalizzarla, cioè
cioè
0 0 2 600 1/2 rendere
rendere tutti
tutti ii pivot
pivot = 1.
1. Questo
Questo può
può essere
essere
fatto
fatto dividendo
dividendo semplicemente
semplicemente ciascuna
ciascuna riga
riga
Det(A7) = 100/200 Det(A) per
per ilil corrispondente
corrispondente pivotpivot

1 0 0 100
0 1 0 200
0 0 1 300

Det(A7) = 1
Det(A) = 2
equivalente all' equazione matriciale
0 3 − 4  x1  − 600 
3 2 0  ⋅  x  =  700 
   2  
4 1 2   x3   120 
Esempio calcolo determinante
0 3 − 4
pivot solo su 0 det( A) = det 3 2 0 
0 3 -4 4 1 2 
3 2 0
4 1 2

0 3 -4 < swap
Ogni operazione sulle righe (scambio, moltiplicazione, divisione)
3 2 0 cambia il determinante della matrice. Quindi ad ogni passo viene
4 1 2 < swap ricalcolato il determinante.
Nell'esempio, dopo il primo passo si ha:
Det(A1) = -1 Det(A) Det(A1)
Det(A1) == -1
-1 Det(A)
Det(A)
Cioè, il determinante della matrice A1 è uguale al determinante della
4 1 2 3 matrice originale A moltiplicato per -1
3 2 0 -4 Al secondo passo:
Det(A2)
Det(A2) = 4 Det(A)
0 3 -4
Cioè, il determinante della matrice A2 è uguale a 4 volte il determinante
della matrice originale A, e così via...
Det(A2) = 4 Det(A)

4 1 2
0 -5 6 -3
0 3 -4 -5

Det(A3) = -20 Det(A)


La
La matrice
matrice èè triangolarizzata
triangolarizzata
4 1 2 1/4 Ora
Ora dobbiamo
dobbiamo solo
solo normalizzarla,
normalizzarla, cioè
cioè rendere
rendere tutti
tutti ii pivot
pivot == 1.
1. Questo
Questo
0 -5 6 -1/5 può
può essere fatto dividendo semplicemente ciascuna riga per ilil
essere fatto dividendo semplicemente ciascuna riga per
0 0 2 1/2 corrispondente
corrispondente pivot
pivot

Det(A4) = 20/40 Det(A)

1 0.25 0.5 Poichè


Poichè ilil determinante
determinante delladella matrice
matrice triangolare
triangolare A4
A4 avente
avente tutti
tutti 11 sulla
sulla
0 1 -1.2 diagonale,
diagonale, èè 11 allora
allora ilil determinante
determinante della
della matrice
matrice originale
originale AA può
può
essere
essere calcolato
calcolato facilmente
facilmente dalle
dalle seguente semplice
semplice equazione:
equazione:
0 0 1
11 == 20/40 Det(A)
20/40 Det(A)
da
da cui:
cui:
Det(A4) = 1 Det(A)
Det(A) == 40/20
40/20 = 22
Det(A) = 2