Matrici triangolari. Prima di esporre il metodo LU

Matrici triangolari.
Prima di esporre il metodo LU per la risoluzione di sistemi lineari, introduciamo la nozione
di matrice triangolare. Ci limiteremo al caso di matrici quadrate anche se l’estensione a matrici
rettangolari non presenta difficoltà. Allora una n n matrice A è triangolare superiore o triangolare
alta se
i > j implica aij = 0
Vale a dire sono nulli tutti i coefficienti sotto la diagonale. Tipicamente
𝑎11 𝑎12 ⋯ 𝑎1𝑛
0 𝑎22 ⋯ 𝑎2𝑛
𝐴=
⋮
⋱
⋮
⋮
𝑎
0
0 ⋯
𝑛𝑛
Invece una n n matrice A è triangolare inferiore o triangolare bassa se
i < j implica aij = 0
Questa volta sono nulli tutti gli elementi sotto la diagonale. Tipicamente
𝑎11
0
⋯ 0
𝑎21 𝑎22
⋯ 0
𝐴=
⋮
⋮
⋮
⋱
𝑎𝑛1 𝑎𝑛2 ⋯ 𝑎𝑛𝑛
Per esempio, una matrice 4 4 triangolare alta ha la forma
 a11 a12 a13 a14 


 0 a 22 a 23 a 24 
A
0
0 a33 a34 


 0

0
0
a
44 

mentre una matrice di ordine 4 triangolare bassa è del tipo
0
0 
 a11 0


0 
 a 21 a 22 0
A
a
a32 a33 0 
 31

a

a
a
a
43
43
44 
 41
Il determinante di una matrice triangolare ( di entrambi i tipi ) è il prodotto degli elementi diagonali.
Per esempio, se n = 4,
detA = a11a22a33a44
Segue che una matrice triangolare è singolare se almeno uno degli elementi diagonali è nullo. Una
matrice diagonale è nello stesso tempio triangolare alta e bassa. I sistemi di equazioni con matrice
dei coefficienti triangolare sono facilmente risolubili. Cominciamo a mostrare l’algoritmo nel caso
A sia triangolare inferiore di ordine n. Il sistema Ax = b, in forma esplicita, si scrive
a11x1 = b1
a21x1 + a22x2 = b2
.
.
.
ai1x1 + …aijxj + …aiixi = bi
.
.
.
an1x1 + ……………………….annxn = bn
Il metodo di risoluzione è il metodo di sostituzione in avanti. Si calcola x1 dalla prima equazione
𝑏1
𝑥1 =
𝑎11
e, supposto di aver calcolato x1, x2, …xi-1, si utilizza la equazione i-esima
ai1x1 + …aijxj + …aiixi = bi,
per calcolare xi, come
xi =( bi – ai1x1 – ai2x2 – …aii-1xi-1 )/aii, i = 2, …n.
Per calcolare xi occorrono 2i-1 flop per cui il calcolo del vettore soluzione richiede 2( 1+2 + …n) –
n = n(n+1) – n = n2 flop.
Il metodo di risoluzione del sistema Ax = b, nel caso di A triangolare superiore di ordine n, è,
invece, il metodo di sostituzione all’indietro.
Intanto, in forma esplicita,
a11x1 + a12x2 + …a1nxn = b1
a22x2 + …a2nxn = b2
.
.
.
aiixi + …aijxj + ….ainxn = bi
.
.
.
annxn = bn.
Si calcola xn dall’ultima equazione, ottenendo
𝑏𝑛
𝑥𝑛 =
𝑎𝑛𝑛
Poi, supposto di avere calcolato xn, xn-1, …xi+1, si trova xi servendosi dell’equazione i-esima. Allora
xi = (bi –aii+1xi+1 –aii+2x2…. ainxn)/aii, i = n-1, …1
Ancora una volta il costo complessivo è di n2 flop. Da notare che ogni elemento diagonale non nullo
ha permesso il calcolo del vettore soluzione. Questi due algoritmi molto efficaci per risolvere
sistemi triangolari ( cioè con matrice dei coefficienti triangolare), si rilevano molto utili se la
matrice A di un sistema si presenta in forma fattorizzata. Per esempio si consideri il sistema
(L1UL2)x = b,
dove L1 e L2 sono triangolari basse e U è triangolare alta, tutte dello stesso ordine n e non singolari.
Invece di calcolare la matrice A = L1UL2, conviene, usando la proprietà associativa, porre UL2x = y
e risolvere il sistema triangolare L1y = b. Una volta calcolato y, si deve risolvere il sistema (UL2)x
= y, e conviene porre L2x = z, e risolvere il sistema Uz = y. Infine, trovato z, non resta che risolvere
L2x = z. Il tutto con 3n2 flop !.
Esempio
Con riferimento all’esempio di prima sia n = 4, e
1 0 0 0
2 −2 0 1
1
0 0 0
𝐿1 = −2 1 0 0 , 𝑈 = 0 1 1 2 , 𝐿2 = −2 2 0 0
0 0 2 1
−1 1 2 0
1
1 2 0
0 0 0 1
1 1 1 1
1 −1 1 2
Il vettore termine noto sia b = (1 0 15 9)T. Allora, senza eseguire il prodotto A = L1UL2, da L1UL2x
= b, con la posizione UL2x = y, andiamo a risolvere il sistema L1y = b, che, esplicitando, è
y1 = 1, -2y1 + y2 = 0, -y1 + y2 + 2y3 = 15, y1 + y2 + y3 + y4 = 9.
Sostituendo y1 nella seconda equazione si ha y2 = 2, e sostituendo y1 e y2 nella terza equazione si
trova y3 = 7, e, infine, per sostituzione nella quarta si trae y4 = -1. IL vettore soluzione è y = (1 2 7 1)T. Questo diventa vettore termine noto del sistema UL2x = y, e con la posizione L2x = z,
dobbiamo risolvere il sistema Uz = y, che, esplicitando, è
2z1 - 2z2 + z4 = 1, z2 + z3 + 2z4 = 2, 2z3 + z4 = 7, z4 = -1.
Allora, sostituendo z4 nella terza equazione, si calcola z3 = 4, e con la sostituzione di z3 e z4, nella
seconda si trova z2 = 0, e, infine, mettendo z2, z3 e z4 nella prima, si trova z1 = 1. Il vettore
soluzione è dunque z = ( 1 0 4 -1)T. Resta da risolvere L2x = z, che, in forma esplicita, è
x1 = 1, -2x1 + 2x2 = 0, x1 + x2 + 2x3 = 4, x1 –x2 + x3 + 2x4 = -1
Con la sostituzione di x1 nella seconda equazione si trae x2 = 1, e con la sostituzione di x1 e x2 nella
terza equazione, si calcola x3 = 1 e, infine, mettendo x1, x2, x3, nella quarta equazione si trova x4 = 1. Il vettore soluzione del sistema è x = (1 1 1 -1 )T.
•
Per illustrare il metodo LU richiamiamo la nozione si sottomatrice principale e minore principale di
testa. Sia A una matrice di ordine n.
Una sottomatrice principale di ordine h  n, si ottiene selezionando h righe e colonne di A con gli
stessi indici.
Se scegliamo le prime h righe e h colonne otteniamo la matrice principale di testa di ordine h. Le
matrici principali di testa sono n come n è la dimensione della matrice. La primo è la 1 1 matrice
a11, e l’ultima e la matrice A stessa In sostanza si tratta delle sottomatrici
 a11 a12 a13 

 a11 a12  
,  a21 a22 a23  , ecc.
a11, 
 a21 a22   a

 31 a32 a33 
I determinanti delle sottomatrici principali di testa sono i minori principali di testa di A.
Sarà utile per il seguito la seguente proprietà sulle matrici principali di testa. Se L è una matrice
triangolare inferiore e B è una matrice qualsiasi, entrambe quadrate dello stesso ordine, allora le
sottomatrici principali di testa di A = LB, sono il prodotto tra le corrispondenti matrici principali di
L e B. Questo nasce dal fatto che, selezionata una sottomatrice principale di testa di L, questa viene
affiancata da un blocco nullo in L.
Vale il
Teorema
Sia A una matrice quadrata di ordine n. Se i primi n minori principali di testa di A sono
diversi da zero, esiste una sola matrice triangolare bassa L con elementi diagonali uguali a uno e
una sola matrice triangolare alta U, tali che
A = LU.
•
L’ Algoritmo LU
Nel descrivere questo algoritmo di fattorizzazione, mostreremo che, in realtà, si ottengono
anche tutte le fattorizzazioni LU delle sottomatrici principali di testa. Risulterà evidente l’ipotesi sui
minori principali di testa. Le matrici L e U della fattorizzazione si ottengono dopo n-1 passi,
durante i quali si hanno
le fattorizzazioni intermedie
A = L(k)U(k), k = 1, …n-1.
(k)
Al termine del passo k-esimo, L è una matrice triangolare bassa con la seguente struttura
 L(k)
0
11

L(k)   (k)

 L21 I 
dove L(k)
11 è una matrice quadrata di ordine k , triangolare bassa e con elementi diagonali uguali a
uno, L(k)
21 è una (n-k)  k matrice, I è la matrice identità di ordine n -k, e 0 è un blocco k ( n-k)
nullo.
In sostanza L(k) è una matrice triangolare inferiore con elementi diagonali uno, ma i coefficienti
sotto l’elemento diagonale sono zero a partire dalla colonna (k+1)-esima. Invece U(k) è una “ quasi “
triangolare alta con la struttura
(k)
U (k) U12


U (k)   11
(k) 
 0 U 22 
(k)
(k)
(k)
dove U11
è una matrice quadrata di ordine k triangolare alta, U12
è una k  (n-k) matrice, U 22
è
(k)
una matrice quadrata di ordine n - k, e 0 è un blocco (n-k) k nullo. In sostanza U è tale che le
prime k colonne hanno elementi nulli sotto l’elemento diagonale. Dalla proprietà prima enunciata,
la matrice principale di testa di A, di ordine k, diventa il prodotto delle due matrici principali di
testa di L(k) e U(k) che sono rispettivamente triangolare bassa (ad elementi diagonali uno) e
triangolare alta. Cioè si ha la fattorizzazione LU di tale matrice.
Per uniformità di notazione poniamo
L(0) = I, U(0) = A.
(0)
 u11
. u1( j0 ) . u1(n0 ) 


.
.
.
. 
 .
U ( 0 )   ui(10 ) . uij( 0 ) . uin( 0 ) 
 .
.
.
.
. 
 ( 0 )
(0)
(0) 

 un1 . unj . unn 
(0)
Allora, u11
 a11 è il primo pivot ed è non nullo perché a11 è il primo minore principale di testa.
Formiamo i moltiplicatori dividendo per il pivot ogni elemento della prima colonna.
u0
1
li1 = i10 , i = 2, …
u11
La prima riga, contenente il pivot è la riga pivotale che è quella di riferimento per eseguire le
seguenti trasformazioni. Da ogni riga i sottraiamo la riga pivotale premoltiplicata per il
moltiplicatore li11 . Si forma una nuova matrice U(1) di elementi,
uij( 1 )  uij( 0 )  li(11 )u1( j0 ) , i,j  2,...n.
Gli elementi della prima riga sono gli stessi di U(0). Gli elementi della prima colonna sotto il pivot
sono stati resi nulli. Questo è il motivo per cui l’indice j parte da 2. Insomma la nuova matrice è
(1)
 u11
. u1( 1j ) . u1(n1 ) 


(1)
. . u2( 1n) 
 0 u22
U (1)   0
.
. . . 

 .
.
. .
. 

(1)
(0) 
. . unn 
 0 un 2
Mettiamo i moltiplicatori, nell’ordine, nella prima colonna di L(0) = I, sotto l’elemento diagonale ,
per formare
𝐿(1) =
1
𝑙21
.
.
𝑙𝑛1
0
1
0
.
0
. .
. .
. .
. .
. 0
0
0
.
0
1
Si dimostra che A è il prodotto di tali matrici, quindi il primo passo
A = L(1)U(1)
è completato. Supponiamo, ora, di essere pervenuti al passo (k-1), con
A = L(k-1)U(k-1),
 L(k111 ) 0 
(k 1 )
,
L
  (k 1 )

L
I
 21

(k 1 )
(k 1 )
U11

U12


U

(k 1 ) 
0
U
22


La matrice L(k-1) è triangolare bassa con elementi diagonali uguali a uno, e la sottomatrice principale
(k 1 )
di testa di ordine k di U(k-1) è triangolare alta, con determinante ukk(k 1 ) det U11
Poiché deve essere
(k 1 )
uguale al minore principale di testa di ordine k di A, segue che il k-esimo pivot ukk(k 1 ) è non nullo.
(𝑘−1)
Prendiamo in esame il blocco 𝑈𝑘𝑘
(k 1 )
 ukk(k 1 ) . ukj(k 1 ) . ukn



.
.
.
. 
 .
(k 1 )
U 22
  uik(k 1 ) . uij(k 1 ) . uin(k 1 ).
 .
.
.
.
. 
 (k 1 )
(k 1 ) 

. unj(k 1 ) . unn
 unk

e formiamo i moltiplicatori
uik(k 1 )
(k)
lik  (k 1 ) , i  k  1,...n
ukk
La riga k-esima è, ora, la riga pivotale. Da ogni riga i > k, sottraiamo la riga pivotale,
premoltiplicata per il moltiplicatore i-esimo, vale a dire
uij(k)  uij(k 1 )  lik(k)ukj(k 1 ), i,j  k  1,...n.
(k)
Il blocco viene modificato con prima colonna nulla sotto il pivot. La nuova matrice U ha i restanti
elementi uguali alla matrice U(k-1). Mettiamo i moltiplicatori nella colonna k-esima ddi L(k-1)
nell’ordine sotto l’elemento diagonale uno. Si viene a formare la matrice L(k) e ancora una volta si
prova
A = L(k)U(k)
(n-1)
Al passo n-1 la matrice L = L
è triangolare bassa ( ma lo erano anche le altre) con elementi
diagonali uno, e U = U(n-1) è finalmente triangolare alta. Risulta A = LU, e abbiamo anche ottenuto
le fattorizzazioni delle sottomatrici principali.
Esempio.
1 1
 3 2
 9 7
1 4

A   3 0 12 3

5
 6 0 24
 9 9 12 11

2 
8 
1

1
7 
e proviamo a costruire la fattorizzazione
A = LU.
Poiché, in generale, non possiamo controllare che i cinque minori principali di testa di A sono non
nulli, mandiamo comunque in esecuzione l’algoritmo di fattorizzazione, e al primo pivot nullo
incontrato ( se ciò accade) siamo costretti a fermarci e a riconoscere nella matrice A che il minore
principale di testa corrispondente è nullo.
Quindi iniziamo con U (0) = A, e
L( 0 )
1

0
 0

0
0

0 0 0 0

1 0 0 0
0 1 0 0

0 0 1 0
0 0 0 1
Risulta evidentemente
A = L(0)U(0)
Il primo pivot è 3  0, e quindi
formiamo il primo vettore di moltiplicatori
9/3 =3, (-3)/3 = -1 6/3=2 9/3=3
e la nuova matrice L(1)
 1 0 0 0 0


 3 1 0 0 0
L(1)    1 0 1 0 0 


 2 0 0 1 0
 3 0 0 0 1


Dalla seconda riga di U(0) sottraiamo la prima riga premoltiplicata per il secondo elemento della
prima riga di L(1) che è il moltiplicatore 3, dalla terza riga di U(0) sottraiamo la prima riga
premoltiplicata per il terzo elemento della prima riga di L(11 che è il moltiplicatore –1. Dalla quarta
riga di U(0) sottraiamo la prima riga premoltiplicata per ilquarto elemento della prima riga di L(1) che
è il moltiplicatore 2. Dalla quinta riga di U(0) sottraiamo la prima riga premoltiplicata per il quinto
elemento della prima riga di L(1) che è il moltiplicatore 3.
Si ottiene la nuova matrice
3
0

(1)
U  0

0
0

2
1
1 1 2 
4 1 2 
2
11 4 1

4 22 7
3
3 15 8 1
Il secondo pivot è –1  0. Se ciò non fosse avvenuto, il minore principale di testa di ordine due
sarebbe stato nullo.
Formiamo, allora, i moltiplicatori
(-2)/(-1) =2, 4/(-1)= -4, (-3)/(-1) = 3,
(2)
La nuova matrice L si ottiene da L(1) sostituendo gli zeri della seconda colonna sotto l’elemento
diagonale uno, con i nuovi moltiplicatori
Risulta, allora
0 0 0 0
 1


1 0 0 0
 3
L( 2 )    1
2 1 0 0


 2  4 0 1 0
 3
3 0 0 1

Dalla terza riga di U(1) sottraiamo la seconda riga premoltiplicata per il terzo elemento della seconda
colonna di L(2) che è il moltiplicatore 2. . Dalla quarta riga di U(1) sottraiamo la seconda riga
premoltiplicata per il quarto elemento della seconda colonna di L(2) che è il moltiplicatore –4. Dalla
quinta riga di U(1) sottraiamo la seconda riga premoltiplicata per il quinto elemento della seconda
colonna
di L(2) che è il moltiplicatore 3.
Otteniamo
U (2)
 3 2 1
 0 1 4

 0 0
3

 0 0 6
0 0
3

1 2 
1 2 
2
3

3 5 
5 5 
Il terzo pivot è 3  0. Se fosse risultato nullo, sarebbe stato nullo il minore principale di testa di
ordine tre di A.
Allora i moltiplicatori sono
(-6)/3 = -2 3/3 = 1
La nuova matrice L(3), è
0
0 0 0
 1


1
0 0 0
 3
L(3)    1
2
1 0 0


 2  4  2 1 0
 3
3
1 0 1

Dalla quarta riga di U(2) sottraiamo la terza riga premoltiplicata per quarto elemento della terza
colonna di L(3) che è il moltiplicatore –2. Dalla quinta riga di U(2) sottraiamo la terza riga
premoltiplicata per il quinto elemento della terza colonna di L(3) che è il moltiplicatore 1.
Si ottiene
U (3)
 3 2 1
 0 1 4

 0 0 3

0 0 0
0 0 0

1 2 
1 2 
2
3

1 1
3 2 
Il quarto pivot è –1  0.
Se fosse risultato zero, sarebbe stato zero anche il minore principale di testa di ordine quattro di A.
L’ultimo moltiplicatore è (-3)/(-1) = 3
Si trova la matrice finale triangolare bassa con elementi diagonali uno
0
0 0 0
 1


1
0 0 0
 3
L  L( 4 )    1
2
1 0 0 .


 2  4  2 1 0
 3
3
1 3 1

Sottraiamo dalla quinta riga di U(3) la quarta riga premoltiplicata per l’ultimo moltiplicatore 3 ( il
quinto elemento della quarta colonna di L(4).
Quindi la matrice finale triangolare alta è
U  U (4)
 3 2 1
 0 1 4

 0 0 3

0 0 0
0 0 0

1 2 
1 2 
2
3

1 1
0 1
In sostanza abbiamo fatto le 4 = 5-1, fattorizzazioni
A = L(1)U(1), A = L(2)U(2), A = L(3)U(3), A = L(4)U(4) = LU.
Esercizio
Individuale le fattorizzazioni LU delle quattro sottomatrici principali. Una di queste è
 3  2  1  1 0 0  3  2  1

 


 9  7 1    3 1 0  0  1 4 
  3 0 12    1 2 1  0 0
3 

 

Conseguenze della fattorizzazione.
L’algoritmo LU produce il determinante di A se si calcola il prodotto degli elementi
diagonali di U Nell’esempio di prima il determinante è - 9.
Infine i minori principali di testa di A sono i minori principali di testa di U. Nell’esempio illustrato
sono nell’ordine
3, -3, -9, 9, -9
Il costo computazionale della fattorizzazione.
Una analisi dettagliata delle operazioni floating ( flop) per eseguire la fattorizzazione, porta
al calcolo esatto del costo complessivo C. Interessa, però, solo la parte predominante
del costo e si usa scrivere
C = O(2n3/3)
2
Vuol dire che esistono altri termini in n e n e un termine costante che, per n sufficientemente
grande sono trascurabili rispetto al termine predominante.
Per esempio se fattorizziamo una matrice di ordine n = 100, dobbiamo eseguire 650000 circa
operazioni alle quali aggiungere circa 10000 operazioni che non alterano l’ordine di grandezza del
costo complessivo.
Utilizzo della fattorizzazione. .
Una volta eseguita la fattorizzazione A = LU di A il sistema lineare si presenta nella forma
LUx = b
In questa forma si pone Ux = y, poi si comincia col risolvere il sistema triangolare inferiore,cioè
con matrice dei coefficienti triangolare bassa, e a elementi diagonali unitari,
Ly = b.
In forma esplicita questo sistema si scrive
y1 = b1
l21y1 + y2 = b2
.
li1y1 + ……yi = bi
.
ln1y1 + ………….yn = bn
Allora la prima equazione dà y1, e, supposto di averecalcolato y1, …yi-1, dalla equazione i-esima si
trova
yi = bi – li1y1 - ….lii-1yi-1, i =2, …n.
Questo è il metodo di sostituzione in avanti per sistemi triangolari bassi, che abbiamo già
illustrato, ma semplificato dal fatto il coefficiente di yi nella equazione i-esima è uno.
Il sistema Ux = y, in forma esplicita si scrive
u11x1 + …u1nxn = y1
.
.
uiixi + …uinxn = yi
.
.
unnxn = yn.
Questa volta il metodo risolutivo è esattamente quello di sostituzione all’indietro già illustrato. Si
prende xn = yn/unn dall’ultima equazione, e , supposto di avere calcolato xn, …xi+1, si trova xi dalla
equazione i-esima,
xi = (yi - uinxn - …uii+1xi+1)/uii, i =n-1, …1.
Come già riferito la fattorizzazione LU prende spesso il nome di fattorizzazione di Gauss ( o
Gaussiana). In generale le tecniche del tipo sottrarre da una riga un’altra premoltiplicata, ec., vanno
sotto il nome di procedure ( di riduzione) di Gauss.
Costo complessivo.
Il costo per la soluzione di un sistema triangolare è n2 flop e, in conseguenza, occorre aggiungere
per la soluzione del sistema originario altri 2n2 flop. Questo non contribuisce all’ordine di
grandezza della fattorizzazione e resta il fatto che la soluzione di un sistema di ordine n richiede un
costo di
O(2n3/3) flop.
Esempio
Si consideri la matrice precedente e i sistemi con termine noto rispettivamente
b = (4 –5 –38 77 -40)T,
b = ( -1 –8 –7 14 -18)T
Si controlla che i vettori soluzione sono rispettivamente
x= (3 –2 –2 3 4 )T,
x = ( 1 –1 0 2 2)T
Ricordiamo che A è fattorizzata in
0
0 0 0
 1


1
0 0 0
 3
L  1
2
1 0 0


 2  4  2 1 0
 3
3
1 3 1

e
 3  2 1 1  2


0 1 4 1  2
U  0 0
3 2 3 


0 1 1 
0 0
0 0
0
0  1 

Per risolvere il sistema col primo termine noto proposto occorre prima risolvere il sistema
Ly = b,
che, in questo caso si scrive
y1 =
4
3y1 + y2 =
-5
-y1 + 2y2 +y3 =
-38
2y1 -4y2 -2y3 +y4 =
77
3y1 + 3y2 + y3 +3y4 + y5 =
-40
Si ottiene y1 = 4 e sostituendo y1 nella seconda equazione si trae
y2 = -5 -3y1 = -17.
Mettendo questi due nella terza equazione si ottiene
y3 = -38 +y1 -2y2 = 0.
Quindi con i valori di y1, y2, e y3, nella quarta equazione si trae
y4 = 77 -2y1 + 4y2 +2y3 = 1.
Infine siamo in grado di calcolare
y5 = -40 -3y1 -3y2 –y3 – 3y4 = -4.
Il vettore y diventa termine noto nel sistema
Ux = y,
che, in questo caso, si scrive
3x1 -2x2 –x3 –x4 -2x5 =
4
-x2 +4x3 –x4 -2x5 =
-17
3x3 -2x+3x5=
0
-x4 + x5 = 1
-x5 = -4
Si ricava x5 = 4, e sostituendo nella quarta equazione si ha
x4 = (1-x5)/(-1) = 3.
Poi, dalla terza equazione
x3 = (0 +2x4 -3x5)/3 = -2.
Quindi, dalla seconda equazione
x2 = (-17 -4x3 +x4 +2x5)/(-1) = -2.
Infine coinvolgendo la prima equazione si ottiene
x1 = (4 +2x2 +x3 + x4 +2x5)/3 = 3.
Esercizio
Risolvere il sistema col secondo vettore termine noto.
•
Come si vede dall’esempio, ma la cosa vale in generale, per risolvere vari sistemi con la stessa
matrice dei coefficienti, si calcolano una volta per tutte le matrici della fattorizzazione e volta per
volta si risolvono i due sistemi triangolari.
Il caso delle matrici a banda.
In molte applicazioni le matrici di sistema hanno una struttura particolare, detta struttura a
bande, che ora illustriamo. Facciamo riferimento a matrici quadrate, anche se le definizioni si
estendono senza problemi a matrici rettangolari.
Definizione
Una matrice quadrata A di ordine n ha larghezza di banda alta q, se j > i + q, implica a ij = 0.
Invece ha larghezza di banda bassa p se i > j + p implica aij = 0.
•
Per comprendere questa struttura, ispirandoci al Matlab, diciamo che la diagonale di una matrice è
la diagonale 0 e la chiamiamo diagonale principale. Poi gli elementi ai i+1, i = 1, …n-1, formano la
diagonale 1, immediatamente sopra la principale. Gli elementi ai i+2, i =1, …n-2, formano la
diagonale 2, ….gli elementi ai i+h, i = 1, …n-h, h=1, …n-1, formano la diagonale h. La diagonale (n1) è costituita dal solo elemento a1n. Quindi gli elementi ai-1 i, i = 2, …n, sono quelli della diagonale
-1, immediatamente sotto la diagonale principale. Gli elementi ai-h i, i = h+1, …n, h =1, …n-1,sono
quelli della diagonale –h, e l’unico an1 va a formare la diagonale –(n-1). Allora larghezza di banda
alta q vuol dire che sono nulle le diagonali q+1, …n-1, mentre larghezza di banda bassa p vuol dire
che sono nulle le diagonali –(p+1), …-(n-1). Una matrice triangolare superiore ha larghezza di
banda bassa 0, mentre una triangolare inferiore ha larghezza di banda alta 0.