Sei sulla pagina 1di 23

FASCICOLO II

NORMA DI MATRICI E

ALGORITMI DI BASE SULLE MATRICI

• Definizioni
• Algoritmi per operazioni di base tra matrici
• Valori singolari
• Norma di matrici
• Complementi: richiami sulle matrici

1
1 Definizioni
Si richiamano le seguenti definizioni:

• x vettore di n componenti (vettore colonna):



x1
 
x =  ... 
xn

• Sia x ∈ Rn ; si indica come vettore trasposto di x, il vettore riga xT


( )
xT = x1 ... xn

• A matrice m × n:  
a11 ... a1n
 .. .. 
A= . . 
am1 ... amn

Posto l’m–vettore ai la i–esima colonna di A, la matrice A si può indicare A = [a1 , ..., an ].

• A, n × n, matrice diagonale: aij = 0, i ̸= j.


(Si può indicare una matrice diagonale A come A = diag{a11 , ..., ann }).
A matrice identità: aij = 0, i ̸= j e aii = 1; la matrice identità si indica con I.
• A, n × n, matrice triangolare
superiore: aij = 0, i > j;
(strettamente superiore: aij = 0, i ≥ j);
inferiore: aij = 0, i < j;
(strettamente inferiore: aij = 0, i ≤ j);

• A matrice n × n tridiagonale: aij = 0, j < i − 1 e j > i + 1.


A matrice n × n pentadiagonale: aij = 0, j < i − 2 e j > i + 2.
A matrice n × n a banda: aij = 0, j < i − p e j > i + q (p, q interi positivi; se p = q, p è la lunghezza
della banda; p = q = 1 matrice tridiagonali, ...).
A, matrice n × n, si dice di Hessenberg se aij = 0 per i = 1, ..., n, j = 1, ...i − 2.

• Matrici a diagonale dominante


Una matrice A, m × n si dice diagonale dominante per righe se:

n
|aii | ≥ |aij | i = 1, ..., m
j=1 j̸=i

per colonne se:



m
|ajj | ≥ |aij | j = 1, ..., n
i=1 i̸=j

Si dice strettamente diagonale dominante per righe o per colonne se la disuguaglianza nella definizione
vale con il segno di “>”.

2
• Data A ∈ Rm×n , si dice matrice trasposta di A, si indica con AT , la matrice AT ∈ Rn×m i cui
elementi sono bij = aji , i = 1, ..., n, j = 1, ..., m.
Posto l’m–vettore ai la i–esima colonna di A, i = 1, ..., n, la matrice trasposta AT si può indicare
come  T 
a1
T  .. 
A = . 
aTn

• A ∈ Rn×n , si dice matrice simmetrica se A = AT .


• A ∈ Rn×n , si dice matrice antisimmetrica se A = −AT .

• Matrici partizionate a blocchi: A matrice m × n,


 
A11 A12 ... A1s
 .. .. 
A= . . 
Ar1 Ar2 ... Ars
∑r ∑s
ciascun blocco Aij è una matrice µi × νj , con i=1 µi = m e j=1 νj = n.
Se A ∈ R m×n
, la matrice trasposta è:
 
AT11 AT21 ... ATr1
T  .. .. 
A = . . 
AT1s AT2s ... ATrs

Data le matrici A partizionata a blocchi


 
A11 A12 ... A1r
 .. .. 
A= . . 
Ar1 Ar2 ... Arr

si dice che A è
– diagonale a blocchi se Aij = 0 per i ̸= j;
– tridiagonale a blocchi se Aij = 0 per j < i − 1 e j > i + 1;
– a banda a blocchi se Aij = 0 per j < i − p e j > i + q (p,q interi positivi; p = q = 1 tridiagonale
a blocchi, p = q = 2 pentadiagonale a blocchi, ...);
– triangolare superiore a blocchi se Aij = 0 per i > j;
– triangolare inferiore a blocchi se Aij = 0 per i < j

3
2 Algoritmi per operazioni di base tra matrici
2.1 Algoritmi per il calcolo di matrici
Si considerano algoritmi di base che utilizzano vettori e matrici. Le operazioni tra vettori e matrici devono
essere descritte in termini di operazioni elementari tra le singole componenti delle grandezze stesse.
Nella valutazione dell’efficienza di un algoritmo si considereranno la stabilità numerica, la complessità
computazionale, ovvero il numero di moltiplicazioni e divisioni presenti nell’algoritmo, e la richiesta di
memoria del calcolatore necessaria.
Si consideri per esempio ad una matrice A, di dimensione 1000 × 1000; se supponiamo che ciascun
elemento della matrice sia memorizzato mediante 4 byte, allora, per memorizzare per intero la matrice
in un array due dimensionale nel cui elemento a(i,j) viene memorizzato l’elemento aij della matrice A,
l’array richiederà una memoria di 4 · 106 byte.
Ad esempio, se la matrice è simmetrica, si può pensare di tenere conto solo degli elementi aij , della parte
triangolare inferiore o superiore, cosı̀ come se una matrice è sparsa si può pensare di memorizzare solo
gli elementi più significativi e dunque, utilizzare meno memoria possibile.
Una matrice si definisce sparsa se sono presenti molti elementi nulli; una matrice si definisce densa se
sono presenti molti elementi non nulli.1 È naturale pensare che solo gli elementi non nulli delle matrici
sparse possano essere memorizzate in un array.
Siano x ∈ Rn e y ∈ Rn due vettori dati di componenti xi e yi rispettivamente, (i = 1, ..., n), l’algoritmo
che fornisce come risultato il vettore z ottenuto come somma di x e y, è costituito da una sola istruzione
composta da un’operazione di somma tra scalari, eseguita n volte con dati diversi: zi = xi +yi , i = 1, ..., n.
Si può allora usare il costrutto di ciclo.
Se pensiamo che i vettori x, y e z siano memorizzati negli array x, y e z e la loro dimensione n nella
variabile intera n, la subroutine in linguaggio Fortran che calcola z = x + y si scrive:

subroutine sommav(x,y,z,n)
real x(n),y(n),z(n)
do i=1,n
z(i) = x(i) + y(i)
enddo
return
end

In modo analogo l’algoritmo che calcola la somma di due matrici A ∈ Rm×n e B ∈ Rm×n , C = A + B, si
descrive con la sola istruzione di somma eseguita per gli m · n elementi delle matrici A e B: cij = aij + bij ,
j = 1, ..., n, i = 1, ..., m.
La subroutine in linguaggio Fortran che calcola la somma di due matrici A e B memorizzate rispettiva-
mente negli array a e b, memorizza il risultato C nell’array c e le dimensioni m ed n nelle variabili intere
m e n rispettivamente, si scrive:

subroutine sommam(a,b,c,ld,m,n)
real a(ld,n),b(ld,n),c(ld,n)
do i=1,m
do j=1,n
c(i,j)=a(i,j) + b(i,j)
enddo
enddo
return
end

1 Si nota che la sparsità o la densità di una matrice sono legate alla dimensione della matrice stessa; una matrice diagonale

di ordine 10 ha una sparsità del 90% (densità del 10%), mentre se l’ordine è 1000, la sparsità aumenta al 99.999% (densità
del 0.001%).
Una matrice tridiagonale, o in generale a banda, si dice matrice sparsa con struttura tridiagonale o a banda.

4
Scambiando le istruzioni do i=1,m e do j=1,n, si ottiene il calcolo degli elementi c(i,j) per colonne,
ovvero si eseguono le stesse operazioni con diverso ordine.
L’operazione di somma tra vettori e matrici equivale alle somme delle rispettive componenti mentre
l’operatore prodotto tra vettori e matrici equivale al prodotto riga–colonna. Nel seguito, si analizzano i
casi del prodotto scalare, del prodotto matrice per vettore e matrice per matrice.
Siano x ∈ Rn e y ∈ Rn due vettori dati di componenti xi e yi rispettivamente, (i = 1, ..., n), il prodotto
scalare s tra x e y è dato da
 
y1
 y2  ∑
n
 
s = xT y = (x1 , x2 , ..., xn )  .  = x1 y1 + x2 y2 + ... + xn yn = xi yi
 ..  i=1
yn

Se si memorizzano i vettori x, y e gli scalari s ed n, rispettivamente negli array x, y e nelle variabili s


(reale) e n (intera), la subroutine in linguaggio Fortran che implementa il prodotto scalare tra x e y si
scrive:
subroutine prodscal(x,y,s,n)
real x(n),y(n)
s=0
do i=1,n
s = s+ x(i)*y(i)
enddo
return
end

La complessità computazionale del prodotto scalare è n.


Siano dati A ∈ Rm×n e x ∈ Rn ; il prodotto Ax fornisce un vettore y di m componenti date da yi =
∑ n
j=1 aij xj , i = 1, ..., m, ovvero la i–esima componente di y è data dal prodotto scalare della i–esima
riga di A con il vettore x:
j=1,...,n
z }| {
i=1 { y1 = a11 x1 + a12 x2 + ... + a1n xn
i=2 { y2 = a21 x1 + a22 x2 + ... + a2n xn
.. .. ..
. . .
i = m { ym = am1 x1 + am2 x2 + ... + amn xn
Memorizzando A, x, y negli array a, x, y e le dimensioni m, n nelle variabili intere m e n, la subroutine
in Fortran che implementa il calcolo del prodotto matrice–vettore si scrive:

subroutine mv(a,x,y,ld,m,n)
real a(ld,n),x(n),y(m)
do i=1,m
y(i)=0
enddo
do i=1,m
do j=1,n
y(i)=y(i)+a(i,j)*x(j)
enddo
enddo
return
end

Se si scambiano le istruzioni do i=1,m e do j=1,n del secondo ciclo, si esegue il prodotto matrice–
vettore come combinazione lineare delle n colonne della matrice A con le componenti xi del vettore x

5
come coefficienti della combinazione:
        
 y1 a11 a12 a1n

  y2       
   a21   a22   a2n 
per i = 1, ..., m  .. = ..  x1 +  ..  x2 +... +  ..  xn

  .   .   .   . 

ym am1 am2 amn
| {z }
j=1
| {z }
j=2
| {z }
j=n

La complessità computazionale del prodotto matrice per vettore è m × n; se la matrice è quadrata di


ordine n, è n2 .
Se si considera il calcolo del vettore di n componenti y = AT x, con A matrice m × n memorizzata
nell’array a e x ∈ Rm memorizzato nell’array x con m e n valori delle variabili intere m e n, non è indicato
riservare un altro array due dimensionale per memorizzare la matrice A trasposta ma bisogna considerare
gli elementi di A scambiati di indice evitando cosı̀ una inutile allocazione di memoria.
Si ha la seguente subroutine in Fortran per il calcolo di y = AT x:

subroutine mtv(a,x,y,ld,m,n)
real a(ld,n),x(m),y(n)
do i=1,n
y(i)=0
enddo
do i=1,n
do j=1,m
y(i)=y(i)+a(j,i)*x(j)
enddo
enddo
return
end

Se la matrice A è una matrice n × n triangolare (ad esempio inferiore), nel calcolo della matrice A per un
vettore x si eseguono solo le operazioni che coinvolgono gli elementi non nulli della matrice A, riducendo
la complessità computazionale.

subroutine mv trinf(a,x,y,ld,n)
real a(ld,n),x(n),y(n)
do i=1,n
y(i)=0
enddo
do i=1,n
do j=1,i
y(i)=y(i)+a(i,j)*x(j)
enddo
enddo
return
end

Si nota che questo è un esempio in cui un estremo dell’indice del ciclo interno dipende dal valore dell’indice
del ciclo esterno.
Siano date le matrici A ∈ Rm×p , B ∈ Rp×n e memorizzate negli array a e b con le variabili intere m, n e
p che memorizzano le dimensioni m, n e p rispettivamente.∑La matrice prodotto C = AB è una matrice
p
a coefficienti reali m × n i cui valori cij sono dati da cij = k=1 aik bkj ; i = 1, ..., m, j = 1, ..., n.

6
Supponendo di memorizzare i valori di C nell’array c, l’algoritmo per il calcolo degli elementi di C in
linguaggio Fortran viene implementato nel modo seguente:

subroutine mm(a,b,c,ld,ld1,m,n,p)
real a(ld,p),b(ld1,n),c(ld,n)
do i=1,m
do j=1,n
c(i,j)=0
enddo
enddo
do i=1,m
do j=1,n
do k=1,p
c(i,j)=c(i,j)+a(i,k)*b(k,j)
enddo
enddo
enddo
return
end

Il ciclo sopra interpreta il prodotto due matrici A per B come m × n prodotti scalari delle m righe di
A per le n colonne di B (ciclo ijk); se si scambia l’ordine dei cicli in i e in j (do i=1,m, do j=1,n), la
matrice prodotto C viene calcolata per colonne, ovvero ogni passo del ciclo esterno j viene calcolata la
j–esima colonna di C: C = [Ab1 , Ab2 , ...Abn ], dove b1 , b2 , ..., bn sono le n colonne della matrice B (ciclo
jik).
Vi sono ovviamente 6 modi per eseguire il prodotto matrice–matrice (cicli ijk, jik, ikj, jki, kij e kji).
La complessità computazionale del prodotto matrice per matrice è m × n × p; se le matrici sono quadrate
di ordine n, è n3 .

ESERCIZIO 1. Scrivere una subroutine in linguaggio Fortran per ciascuna delle seguenti operazioni:

(a) Siano x, y ∈ Rn , eseguire l’operazione di scambio dei valori delle componenti dei due vettori (opera-
zione detta swap);

(b) Siano x, y ∈ Rn , α ∈ R, calcolare il vettore x + αy (operazione detta saxpy);


(c) Siano x ∈ Rn , y ∈ Rm , calcolare la matrice xy T (matrice detta diade);

(a) Siano A, B ∈ Rm×n , eseguire l’operazione di scambio dei valori degli elementi delle due matrici
(swap);

(e) Sia A ∈ Rm×n e α ∈ R, calcolare la matrice αA;


(f ) Sia A ∈ Rm×n , calcolare AT A e AAT .

ESERCIZIO 2. Tenendo conto solo degli elementi non nulli delle matrici coinvolte, scrivere una subroutine
in linguaggio Fortran per ciascuna delle seguenti operazioni:
(a) Sia A ∈ Rn×n una matrice triangolare superiore ed x ∈ Rn , calcolare Ax;

(b) Sia A ∈ Rn×n una matrice tridiagonale ed x ∈ Rn , calcolare Ax;


(c) Sia A ∈ Rn×n una matrice pentadiagonale ed x ∈ Rn , calcolare Ax;

7
(d) Sia A ∈ Rn×n e D = diag{d1 , d2 , ..., dn } una matrice diagonale, calcolare AD e DA;
(e) Siano A ∈ Rn×n e B ∈ Rn×n due matrici triangolari inferiori, calcolare la matrice prodotto AB;

(f ) Ripetere l’esercizio (e) considerando A e B matrici triangolari superiori;


(g) Siano A ∈ Rn×n e B ∈ Rn×n due matrici tridiagonali, calcolare la matrice prodotto AB.

2.2 Matrici sparse


I vettori e le matrici sono grandezze matematiche che possono essere memorizzate per intero o parzial-
mente in array mono o bidimensionali. Con il termine “memorizzazione per intero” di un vettore o di una
matrice, si intende che l’elemento vi di un vettore o aij di una matrice venga memorizzato nell’elemento
v(i) di un array monodimensionale v o nell’elemento a(i,j) di un array bidimensionale a.
Supponiamo di avere una matrice A di ordine n, sparsa con n “grande”. In questo caso si può pensare
di memorizzare nell’array a la matrice A in forma compatta, ovvero di tenere conto solo degli elementi
non nulli di A e della loro posizione in colonna. Ad esempio, se la matrice A ha ordine n = 1000 e sono
presenti solo 3 elementi diversi da zero in ogni riga, è pensabile memorizzare gli elementi diversi da zero
di A in a e in un array di numeri interi, ia, le corrispondenti posizioni in colonna. Gli array a e ia hanno
cosı̀ dimensione 1000 × 3.
     
3.5 0 20.1 0 ... ... 0 56 3.5 20.1 56 1 3 1000
 0 0.2 0 0 ... ... 24.7 32.5   0.2 24.7 32.5   2 999 1000 
     
A= 2 0 24.1 0 ... ... 0 5.3 a =  2 24.1 5.3  ia =  1 3 1000 
     
. . . . . . . . . . . .
.. .. .. .. .. .. .. .. .. .. .. ..

Se indichiamo con nz, memorizzato nella variabile intera nz, il numero di elementi diversi da zero per
ciascuna riga2 di A, la subroutine in Fortran che calcola il prodotto matrice–vettore y = Ax, con x ∈ Rn
vettore assegnato e memorizzato nell’array x, e con A memorizzata mediante gli array a e ia come
descritto sopra, si scrive:

subroutine mv sparsa(a,ia,x,y,ld,n,nz)
real a(ld,nz),x(n),y(n)
integer ia(ld,nz)
do i=1,n
y(i)=0
enddo
do i=1,n
do j=1,nz
y(i)=y(i)+a(i,j)*x(ia(i,j))
enddo
enddo
return
end

Il ciclo sopra è un esempio di implementazione di un algoritmo mediante indirizzamento indiretto, ovvero


si indirizza una componente di un array mediante il valore di un elemento di un altro array.

2.3 Algoritmi di controllo delle proprietà delle matrici


Si esaminano gli algoritmi di controllo di verifica di proprietà di una matrice. Si considerano algoritmi
che controllano la grandezza degli elementi di una matrice (se sono negativi, positivi, nulli, superiori o
inferiori ad una soglia) oppure se gli elementi verificano tra di loro una relazione (e.g., l’elemento aij è
uguale all’elemento aji ).
2 Si suppone per semplicità che tutte le righe di A abbiano lo stesso numero di elementi non nulli.

8
Ad esempio se si vuole verificare che una matrice A, di ordine n, è simmetrica, si può scrivere la seguente
subroutine in Fortran dove l’array a memorizza i valori di A e la variabile intera n memorizza l’ordine n
della matrice A. Nella variabile tol si memorizza il valore della tolleranza introdotta in quanto la richiesta
della condizione di uguaglianza tra due numeri finiti non è affidabile per l’indecidibilità dell’uguaglianza
tra numeri finiti.

subroutine asimm(a,ld,n,tol,info)
real a(ld,n)
info=0
do i=2,n
do j=1,i-1
temp=a(i,j)-a(j,i)
if (abs(temp).gt.tol) then
info=1
return
endif
enddo
enddo
return
end

Alla fine dell’algoritmo, il valore di info (informatore) è uguale a 0 se la matrice è simmetrica oppure è
uguale a 1 se non è simmetrica.
Si nota che la richiesta di una proprietà che deve essere vera per ogni elemento della matrice, si implementa
richiedendo che se un solo elemento non verifica la proprietà si arresta l’algoritmo.
In modo analogo si descrive l’algoritmo per verificare se una matrice A, n × n, soddisfa la proprietà di
diagonale dominanza per righe. Si ha la subroutine in Fortran:

subroutine adiagdom(a,ld,n,info)
real a(ld,n)
info=0
do i=1,n
s=0
do j=1,i-1
s=s+abs(a(i,j))
enddo
do j=i+1,n
s=s+abs(a(i,j))
enddo
if (s.gt.abs(a(i,i))) then
info=1
return
endif
enddo
return
end

Alla fine dell’algoritmo, il valore di info è uguale a 0 se la matrice è diagonale dominante, se invece è 1
allora A non è diagonale dominante.

ESERCIZIO 3. Data una matrice A, n × n, scrivere una subroutine in linguaggio Fortran per ciascuna
delle seguenti verifiche:
(a) A è ortogonale (i.e. AAT = I);

9
(b) A è diagonale, tridiagonale o pentadiagonale;
(c) A è diagonale dominante per colonne;
(d) A è strettamente diagonale dominante per righe;
(e) A è strettamente diagonale dominante per colonne.

2.4 Algoritmi di ordinamento


Gli algoritmi di ordinamento degli elementi di un vettore o di una matrice sono procedimenti che eseguono
operazioni di confronto e di scambio per ordinare, ad esempio un vettore, in modo che le sue componenti
abbiano valore crescente (o decrescente) per indici crescenti.
Anche se la struttura (vettore o matrice) da ordinare ha elementi reali, questi algoritmi non includono
operazioni di somma e di moltiplicazione/divisione tra numeri reali. Dunque, in questi algoritmi non
compare la propagazione dell’errore.
Si considerano solo i procedimenti di ordinamento di un vettore in quanto una matrice può essere vista
come “monodimensionale” se si “scorrono” gli elementi della matrice per riga o per colonna. Ad esempio,
memorizzare “per righe” una matrice A, m × n, i cui elementi aij sono contenuti negli elementi a(i,j)
di un array, in un vettore v di n · m elementi, fornisce l’algoritmo
do i = 1, m
do j = 1, n
v((i-1)*n+j) = a(i,j)
enddo
enddo
Vi sono diversi algoritmi per l’ordinamento di un vettore; ad esempio l’ordinamento per selezione (se-
lection sort), l’ordinamento a bolla (bubble sort), l’ordinamento per partizione e scambio (quick sort) e
l’ordinamento a catasta (heap sort).
Vediamo l’ordinamento per selezione. Si cerca nel vettore v l’elemento con valore minimo; tale elemento
si scambia con il primo. Si considera il sottovettore dal secondo elemento in poi e si trova l’elemento di
valore minimo e lo si scambia con il secondo e cosı̀ via.
Per un vettore di n componenti, l’algoritmo consta di n − 1 pass. Si effettuano

n−1
1
(n − i) = n(n − 1)
i=1
2

operazioni di confronto e n − 1 operazioni di scambio. La complessità dell’algortimo è O(n2 ).


La subroutine, in linguaggio Fortran, per l’algoritmo di ordinamento per selezione di un vettore x di n
componenti memorizzato in un array x si scrive:
subroutine ssort(x,n)
real x(n)
do i=1,n-1
ir=i
do j=i+1,n
if(x(j).lt.x(ir))ir=j
enddo
if(ir.ne.i)then
c=x(i)
x(i)=x(ir)
x(ir)=c
endif
enddo
return
end

10
3 Valori singolari
Sia A ∈ Rm×n e si denoti con r il rango della matrice A (r ≤ min{m, n}). Si suppone m ≥ n.
Le matrici quadrate AT A e AAT di ordine n ed m, rispettivamente, sono simmetriche.
Si consideri la matrice A per colonne, i.e., A = [a1 , a2 , ..., an ], dove le colonne aj di A sono vettori di m
componenti; la matrice AT A ha elementi bij = aTi aj .
Se consideriamo la matrice A per righe, i.e.,
 T 
a1
 aT2 
 
A= . 
 .  .
aTm

dove le righe aTi di A sono vettori di n componenti, allora la matrice AAT ha elementi cij = aTi aj .
Si possono provare le seguenti proprietà per AT A e AAT :
• La matrice AT A è una matrice n × n:3

◦ simmetrica definita positiva se r = n (A di rango massimo);


◦ simmetrica semidefinita positiva se r < n;

dunque, la matrice AT A possiede r autovalori positivi e n − r nulli.


• La matrice AAT è una matrice m × m

◦ simmetrica semidefinita positiva;


dunque, la matrice AAT possiede r autovalori positivi e m − r nulli.

• Se m = n, allora AT A e AAT hanno le stesse dimensioni n × n e sono:


◦ simmetriche definite positive se A ha rango massimo r = n (ovvero A non singolare);
◦ semidefinite positive se r < n (ovvero A singolare);

• Gli r autovalori positivi di AT A e quelli di AAT coincidono.


Si definiscono valori singolari di una matrice A ∈ Rm×n , le radici quadrate degli autovalori positivi di
AT A o di AAT , ovvero:
√ √
σi = λi (AT A) = λi (AAT ) i = 1, ..., r

Il valore singolare massimo di una matrice, risulta cosı̀ definito:


√ √
σ1 = ρ(AT A) = ρ(AAT )

dove con ρ(B) si indica il raggio spettrale della matrice quadrata B, ovvero l’autovalore di modulo
massimo della matrice B.

3 Dalla definizione di definita o semidefinita positività di una matrice, si ha, per ogni vettore x ̸= 0 di n componenti:
xT AT Ax = (Ax)T (Ax) = ∥Ax∥22
La norma di un vettore è positiva o nulla ed è nulla se e solo se il vettore è il vettore nullo. Poiché A = [a1 , a2 , ..., an ], dove
aj , j = 1, ..., n sono le colonne di A, il vettore Ax si può scrivere come combinazione lineare delle colonne di A
Ax = a1 x1 + a2 x2 + ... + an xn
Dunque, se le colonne di A sono linearmente indipendenti (rango massimo) si ha Ax ̸= 0; se le colonne di A non sono
linearmente indipendenti, esistono dei valori xj , j = 1, ..., n, non tutti nulli, tale che Ax = 0.

11
4 Norma di matrici
Una norma di una matrice A ∈ Rm×n si definisce a partire da una norma vettoriale. Ovvero, data una
norma vettoriale ∥ · ∥p , si definisce una norma di matrice ∥ · ∥q , se, per ogni vettore x ∈ Rn e per ogni
matrice A ∈ Rm×n , vale la condizione di compatibilità:

∥Ax∥p ≤ ∥A∥q ∥x∥p


| {z } | {z } | {z }
norma di vettore norma di matrice norma di vettore

Si nota che, dalla condizione compatibilità, per ogni norma di matrice, vale

∥I∥ = 1

dove I è la matrice identità.


Si possono definire le seguenti norme di matrici:

m
∥A∥1 = max |aij | (1)
1≤j≤n
i=1
∑n
∥A∥∞ = max |aij | (2)
1≤i≤m
j=1
  21

m ∑
n
∥A∥F =  |aij |2  (norma di Frobenius o norma di Schur) (3)
i=1 j=1

Ad esempio, la matrice ( )
2 −1 0.5
A=
−1 3 10
ha norme

∥A∥1 = max{3, 4, 10.5} = 10.5 ∥A∥∞ = max{3.5, 14} = 14 ∥A∥F = 10.7354

Una particolare norma di matrice è quella associata alla norma vettoriale euclidea. Questa norma matri-
ciale prende il nome di norma spettrale in quanto rimane definita mediante gli autovalori della matrice.
Si definisce la norma spettrale di una matrice come il valore singolare massimo:

∥A∥2 = σ1 (4)

La condizione di compatibilità vale se q = p (p = 1, 2, ∞) oppure q = F per p = 2.


Per le definizioni (1)–(4) valgono le seguenti proprietà che caratterizzano una norma (il simbolo ∥ · ∥
indica una generica norma di matrice tra quelle definite):

∥A∥ ≥ 0 ∀A ∈ Rm×n (∥A∥ = 0 ⇔ A = 0) (5)


∥αA∥ = |α|∥A∥ ∀A ∈ Rm×n
, ∀α ∈ R (6)
∥A + B∥ ≤ ∥A∥ + ∥B∥ ∀A, B ∈ Rm×n (7)

Inoltre, per le norme di matrici (1)–(4) vale la condizione di consistenza:

∥AB∥ ≤ ∥A∥ ∥B∥ ∀A ∈ Rm×p , B ∈ Rp×n

Per le norme di matrici (1)–(4) valgono anche le proprietà:

12
• Equivalenza tra norme matriciali, i.e. ∃c1 , c2 , costanti positive tale che:4
c1 ∥A∥q ≤ ∥A∥q̃ ≤ c2 ∥A∥q

• Se B è una sottomatrice di A, allora: ∥B∥ ≤ ∥A∥.


• Sia |A| la matrice dei valori assoluti, i.e. l’elemento della riga i e colonna j della matrice |A| è
definito come |aij |. Vale la seguente relazione:
∥ |A| ∥ = ∥A∥

Si consideri una matrice Q, di ordine n, ortogonale. Per la norma di Frobenius e la norma spettrale di
matrici ortogonali valgono i risultati seguenti:
• La norma spettrale e la norma di Frobenius di una matrice ortogonale Q vale 1, i.e.,
∥Q∥2 = ∥Q∥F = 1

• Se Q è una matrice ortogonale vale:5


∥Qx∥2 = ∥x∥2

• Per la norma spettrale e la norma di Frobenius, vale la proprietà di invarianza rispetto a trasfor-
mazioni ortogonali. Se A è una matrice m × n e Q e Z sono matrici ortogonali di ordine m ed n
rispettivamente, allora:
∥QAZ∥F = ∥A∥F
∥QAZ∥2 = ∥A∥2

Si possono ottenere le seguenti norme spettrali:


• Se A ∈ Rn×n è non singolare allora:
√ √ √
∥A−1 ∥2 = ρ(A−T A−1 ) = max λi (A−T A−1 ) = max λi (AAT )−1
i i
1 1
= √ =
T
mini λi (AA ) σn

• Se A ∈ Rn×n è una matrice simmetrica


∥A∥2 = max |λi (A)|
i

se, inoltre, è non singolare


1
∥A−1 ∥2 =
mini |λi (A)|
• Se A ∈ Rn×n è una matrice simmetrica definita positiva:
∥A∥2 = max λi (A)
i

−1 1
∥A ∥2 =
mini λi (A)
4 Ad esempio:

∥A∥2 ≤ ∥A∥F ≤ n∥A∥2
1 √
√ ∥A∥∞ ≤ ∥A∥2 ≤ m∥A∥∞
n
1 √
√ ∥A∥1 ≤ ∥A∥2 ≤ n∥A∥1
m
5 Dalla definizione si ha ∥Qx∥22 = xT QT Qx = xT x = ∥x∥22 .

13
4.1 Algoritmo per il calcolo di ∥A∥∞
Supponendo di memorizzare una matrice A ∈ Rm×n in un array a e le dimensioni di riga e di colonna
nelle variabili intere m e n, il sottoprogramma in linguaggio Fortran (function) che implementa la formula
(2) è il seguente:

real function anorinf(a,ld,m,n)


real a(ld,n)
anorinf=0
do i=1,m
s=0
do j=1,n
s=s+abs(a(i,j))
enddo
if (s.gt.anorinf) anorinf=s
enddo
return
end

La variabile anorinf (nome della function), alla fine dell’esecuzione dell’algoritmo, contiene il valore della
norma infinito della matrice A.

ESERCIZIO 4. Scrivere un sottoprogramma in linguaggio Fortran per ciascuna delle seguenti operazioni:
(a) Dato x ∈ Rn , calcolare ∥x∥1 ;

(b) Dato x ∈ Rn , calcolare ∥x∥2 ;


(c) Dato x ∈ Rn , calcolare ∥x∥∞ ;

(d) Dato x ∈ Rn e una matrice A ∈ Rm×n , calcolare ∥x∥A .


Si veda la sezione “Complementi: richiami sulle matrici” per le definizioni delle norme vettoriali sopra.

ESERCIZIO 5. Scrivere due sottoprogrammi in linguaggio Fortran che calcolano rispettivamente le norme
definite dalle formule (1) e (3) di una matrice reale A di m righe ed n colonne.

14
5 Complementi: richiami sulle matrici
In questa sezione si richiamano alcune definizioni e risultati di base sulle matrici (matrix theory) che si
incontrano nei primi corsi di Matematica.

5.1 Prodotto scalare e norma di vettori


Definizione: Si definisce prodotto scalare di due vettori di n componenti reali, una funzione a valori reali
< ·, · > che soddisfa le seguenti proprietà:

< x, x >≥ 0 ∀x ∈ Rn (< x, x >= 0 ⇔ x = 0) (8)


< x, y >=< y, x > ∀x, y ∈ Rn (9)
< αx, y >=< x, αy >= α < x, y > ∀x, y ∈ Rn , α ∈ R (10)
< x + z, y >=< x, y > + < z, y > ∀x, y, z ∈ Rn (11)

La definizione

n
< x, y >≡ xT y = xi yi ∀x, y ∈ Rn
i=0

soddisfa le proprietà sopra indicate per ogni vettore x ed y di n componenti reali.


Se x e y sono due vettori con componenti reali e xT y = 0, allora x e y si dicono ortogonali.
Definizione: Si definisce norma di vettori di n componenti reali, una funzione a valori reali ∥ · ∥ che
soddisfa le seguenti proprietà:

∥x∥ ≥ 0 ∀x ∈ Rn (∥x∥ = 0 ⇔ x = 0) (12)


∥αx∥ = |α|∥x∥ ∀x ∈ Rn , α ∈ R (13)
∥x + y∥ ≤ ∥x∥ + ∥y∥ ∀x, y ∈ Rn (disuguaglianza triangolare) (14)

Esempi di norme di vettori sono:

∥x∥1 = |x1 | + ... + |xn | (norma della somma)


1
∥x∥2 = (x21
+ ... + x2n ) 2 (norma euclidea)
∥x∥∞ = max |xi | (norma del massimo)
i

In generale si possono definire le norme di vettori a n componenti come la norma–p (o norme di Hölder)
1
∥x∥p = (|x1 |p + ... + |xn |p ) p 1≤p<∞

Si nota che la ∥ · ∥∞ è il caso limite della norma–p per p → ∞.6


Si riportano le relazioni tra norme di vettori e prodotti scalari:
• Dalla definizione di norma euclidea si ha:

∥x∥2 = xT x

• Per le norme–p vale la disuguaglianza di Hölder:


1 1
|xT y| ≤ ∥x∥p1 ∥y∥p2 con + =1
p1 p2
per p1 = p2 = 2, la disuguaglianza prende il nome di disuguaglianza di Cauchy–Schwarz.
6 Sia x ∈ Rn con x ̸= 0; posto x̃ = x/∥x∥∞ , si ha: 1 ≤ ∥x̃∥p ≤ n1/p e dunque limp→∞ ∥x̃∥p = 1.

15
Data una matrice A, m × n a valori reali, si definisce norma energia (o norma ellittica) di un n–vettore x
√ √
∥x∥A ≡ ∥Ax∥2 = (Ax)T Ax = xT AT Ax

Vale il risultato di equivalenza tra norme vettoriali.


Le norme di Rn sono tra loro equivalenti, ovvero esistono due costanti positive c1 , c2 , tale che, per
ogni vettore x di n componenti si ha:

c1 ∥x∥p1 ≤ ∥x∥p2 ≤ c2 ∥x∥p1

Ad esempio:

∥x∥2 ≤ ∥x∥1 ≤ n∥x∥2

∥x∥∞ ≤ ∥x∥2 ≤ n∥x∥∞
∥x∥∞ ≤ ∥x∥1 ≤ n∥x∥∞

Inoltre, le norme sopra definite, se x e y sono due vettori di n componenti reali, vale la seguente proprietà:

|∥x∥ − ∥y∥| ≤ ∥x − y∥ ∀x, y ∈ Rn

5.2 Operazioni su matrici


5.2.1 Somma di due matrici
Siano A e B due matrici di elementi reali di m righe ed n colonne.7
Si chiama somma di due matrici A e B la matrice C i cui elementi cij sono dati da:

cij = aij + bij (i = 1, ..., m; j = 1, ..., n)

Analogamente si definisce la somma di tre o più matrici m × n.


Valgono i risultati:
• A + 0 = A (con 0 si indica la matrice nulla)
• (A + B)T = AT + B T
• A+B =B+A
• (A + B) + C = A + (B + C)

5.2.2 Prodotto di una matrice per un numero


Siano A una matrice di elementi reali di m righe ed n colonne e α un numero reale.
Si definisce prodotto della matrice per il numero α, e si indica con α · A, la matrice m × n i cui elementi
sono dati da
α · aij (i = 1, ..., m; j = 1, ..., n)
Se α = −1, si scrive −A in luogo di (−1) · A; se α = 1, si scrive A in luogo di (+1) · A.
Se A e B sono due matrici m × n e α e β sono numeri reali, allora:
• (α · β) · A = α · (β · A)
• (α + β) · A = α · A + β · A
• α · (A + B) = α · A + α · B
• (α · A)T = α · AT
7 Una matrice di m righe ed n colonne si dice aver dimensione m × n. Una matrice di dimensioni n × n si dice anche di

ordine n.

16
Se con I si indica la matrice identità ed α è un numero reale, la matrice α · I si chiama matrice scalare.
Facendo uso della definizione di somma di matrici, si definisce la matrice

α1 · A1 + α2 · A2 + ... + αp · Ap

combinazione lineare di A1 , A2 , ..., Ap , dove tutte le matrici A1 , A2 , ..., Ap sono di dimensioni m × n e i


coefficienti α1 , α2 , ..., αp sono numeri reali.
In particolare si definisce la differenza A − B di due matrici m × n come (+1) · A + (−1) · B. Se A = B
allora A − B = 0 (matrice nulla).

5.2.3 Prodotto di due matrici


La definizione di prodotto A · B tra due matrici A e B viene data soltanto nel caso in cui il numero di
colonne di A sia uguale al numero di righe di B.
Se A è una matrice reale di dimensioni m × p e B è una matrice reale di dimensioni p × n, il prodotto
A · B è una matrice C di dimensioni m × n il cui generico elemento è dato da


p
cij = aik bkj (i = 1, ..., m; j = 1, ..., n)
k=1

Accanto al prodotto C = A · B non è generalmente possibile definire il prodotto B · A. È evidente che si


possono solo considerare i prodotti A · B e B · A solo nel caso in cui A sia una matrice m × p e B una
matrice p × m.
In generale vale che A · B ̸= B · A.
Se due matrici A e B soddisfano la proprietà A · B = B · A, si dice che A e B commutano.
La matrice nulla 0 e la matrice scalare (in particolare la matrice identità) commuta con qualsiasi matrice
quadrata A:

• 0·A=A·0=0
• I ·A=A·I =A

• α·I ·A=A·α·I =α·A


Si osserva che per le matrici non vale la legge dell’annullamento del prodotto, ovvero può verificarsi che il
prodotto delle matrici A e B sia la matrice nulla senza che siano nulle A o B.
La definizione di prodotto di matrici si può estendere al caso di più matrici. Ad esempio se A è una
matrice m × p, B una matrice p × q e C una matrice q × n si pone per definizione

A · B · C = (A · B) · C

Dunque, la potenza k–esima, con k ≥ 2, di una matrice A di ordine n, è il prodotto di k volte la matrice
A; si indica con Ak .
Si ha, 0k = 0 e I k = I.
Ponendo A0 = I e A1 = A, quando A ̸= 0, si ha per p e q numeri interi positivi

Ap · Aq = Ap+q
(Ap )q = Ap·q

Per il prodotto di matrici valgono le seguenti proprietà:


• Se A ∈ Rm×p , B ∈ Rp×n e α ∈ R, allora

α · (A · B) = (α · A) · B = A · (α · B)

17
• Se A, B ∈ Rm×p , C ∈ Rp×n , allora

(A + B) · C = A · C + B · C

inoltre, se C ∈ Rm×p , A, B ∈ Rp×n , allora

C · (A + B) = C · A + C · B

Questa proprietà è detta proprietà distributiva rispetto alla somma.


• Se A ∈ Rm×p , B ∈ Rp×q , C ∈ Rq×n , allora

(A · B) · C = A · (B · C)

Questa proprietà è detta proprietà associativa.

• Se A ∈ Rm×p , B ∈ Rp×n , allora


(A · B)T = B T · AT

5.2.4 Operazioni su matrici partizionate a blocchi


Siano date le matrici a coefficienti reali A e B e si considerino partizionate a blocchi.
Le operazioni sulle matrici sono state definite in termini di somma e di prodotto di numeri. Si possono
definire le operazioni su matrici partizionate a blocchi, considerando come elementi di queste matrici le
sottomatrici e usando al posto delle operazioni sui numeri, le operazioni sulle sottomatrici.
Per semplicità si considerano i blocchi delle matrici A e B, quadrati e ciascuno di ordine n, ovvero A è
una matrice di dimensioni nr × ns e B ha dimensioni nu × nv.
   
A11 A12 ... A1s B11 B12 ... B1v
 ..   .. 
A =  ... .  B =  ... . 
Ar1 Ar2 ... Ars Bu1 Bu2 ... Buv

• Somma di due matrici: C = A + B (u = r, v = s)


 
A11 + B11 A12 + B12 ... A1s + B1s
 .. .. 
C= . . 
Ar1 + Br1 Ar2 + Br2 ... Ars + Brs

• Prodotto di una matrice per un numero: C = α · A (α numero reale)


 
α · A11 α · A12 ... α · A1s
 .. .. 
C= . . 
α · Ar1 α · Ar2 ... α · Ars

• Prodotto due matrici: C = A B (u = s)


 
A11 B11 + ... + A1s Bs1 ... A11 B1v + ... + A1s Bsv
 .. .. 
C= . . 
Ar1 B11 + ... + Ars Bs1 ... Ar1 B1v + ... + Ars Bsv

Nel caso più generale in cui i singoli blocchi Aij e Bkl non sono quadrati di ordine n, ma hanno ordine
ni × nj e mk × ml rispettivamente (i = 1, ..., r, j = 1, ..., s, k = 1, ..., u, l = 1, ..., v), per eseguire le
operazioni su matrici partizionate a blocchi devono essere soddisfatte le compatibilità delle dimensioni
richieste dalle definizioni delle operazioni stesse.

18
Ad esempio per eseguire la somma tra le matrici A e B deve essere, oltre a r = u e s = v anche ni = mi
e nj = mj , con i = 1, ..., r e j = 1, ..., s.
Se si considerano i blocchi della matrice A di dimensione n × n e per la matrice B, v = 1, u = s e i blocchi
Bi1 di dimensione n × 1, i = 1, ..., s, ovvero la matrice B si scrive come un vettore b di n · s componenti
 
b1
 
b =  ... 
bs

Il prodotto di A · B diventa il prodotto matrice per vettore a blocchi, i.e.,


   
c1 A11 b1 + ... + A1s bs
 ..   .. 
 . = . 
cr Ar1 b1 + ... + Ars bs

5.3 Vettori linearmente indipendenti e rango di una matrice


È stata introdotta in precedenza il concetto di combinazione lineare di più matrici di dimensioni m × n.
Limitandoci a matrici m × 1 si definisce la combinazione lineare di vettori.
Definizione. Assegnati n vettori a1 , a2 , ..., an di m componenti reali ciascuno, si chiama combinazione
lineare di a1 , a2 , ..., an con coefficienti α1 , α2 , ..., αn , il vettore di m componenti definito

n
α1 a1 + α2 a2 + ... + αn an = αj aj
j=1

Definizione. Si dice che n vettori a1 , a2 , ..., an di m componenti reali sono linearmente dipendenti se
esistono coefficienti α1 , α2 , ..., αn non tutti nulli per cui

α1 a1 + α2 a2 + ... + αn an = 0 (15)

con 0 il vettore nullo di m componenti. Se i soli coefficienti α1 , α2 , ..., αn per cui vale (15) sono α1 =
α2 = ... = αn = 0, allora i vettori a1 , a2 , ..., an sono linearmente indipendenti.
Gli n vettori di n componenti e1 , e2 , ..., en , ove ei ha componenti nulle ad eccezione della i–esima che è
uguale ad 1, i = 1, ..., n, sono linearmente indipendenti.
Ogni vettore x = [x1 , x2 , ..., xn ]T di n componenti reali può essere scritto come combinazione lineare dei
vettori e1 , e2 , ..., en . I coefficienti della combinazione lineare sono le componenti di x.

x = x1 e1 + x2 e2 + ... + xn en

Definizione. Si dice che gli n vettori di n componenti reali, a1 , a2 , ..., an costituiscono una base per
l’insieme dei vettori di n componenti se essi sono linearmente indipendenti e se un qualsiasi vettore a di
n componenti si può esprimere come una combinazione lineare di a1 , a2 , ..., an

a = α1 a1 + α2 a2 + ... + αn an (16)

I coefficienti α1 , α2 , ..., αn si chiamano rappresentazione di a rispetto alla base a1 , a2 , ..., an .


Nella (16) la rappresentazione di a rispetto alla base a1 , a2 , ..., an è unica.
Definizione. Assegnata una matrice A di dimensione m × n, siano a1 , a2 , ..., an le colonne di A. Se r,
con r ≤ n, è il numero massimo di vettori linearmente indipendenti che possono estrarsi dalla n–pla di
vettori a1 , a2 , ..., an , si dice che la matrice A ha rango r.
Se r = n, la matrice A si dice avere rango massimo.

19
5.4 Matrice inversa
È possibile introdurre l’operazione di divisione tra matrici essendo nota la moltiplicazione tra matrici,
occorre introdurre il concetto di matrice inversa. Il concetto di matrice inversa vale esclusivamente per
matrici quadrate.
Definizione. Data una matrice A, n × n, si chiama matrice inversa di A e si indica con A−1 , quella
matrice tale che
AA−1 = A−1 A = I
dove con I si è indicata la matrice identità di ordine n.
Le matrici dotate di inversa si dicono non singolari. Pertanto una matrice che non ammette inversa è
singolare.
Se una matrice A ammette inversa, questa è unica.
Una matrice A matrice di ordine 2 ( )
a b
A=
c d
ammette la matrice inversa di elementi
( )
1 d −b
A−1 =
ad − bc −c a
Per la matrice inversa valgono le seguenti proprietà:
• Il prodotto di due matrici AB è una matrice non singolare se e solo se le matrici A e B sono non
singolari. Inoltre:
(AB)−1 = B −1 A−1


1 −1
(A−1 )−1 = A; I −1 = I; (αA)−1 = A (con α ∈ R)
α

(AT )−1 = (A−1 )T ≡ A−T

• Una matrice diagonale e una matrice triangolare sono non singolari se e solo se tutti gli elementi
diagonali sono non nulli.
• Se A = diag{a11 , ..., ann } è una matrice diagonale di ordine n, allora la matrice inversa è una
matrice diagonale e A−1 = diag{ a111 , ..., ann
1
}.
• Se A = diag{A11 , ..., Ann } è una matrice di ordine m·n, diagonale a blocchi dove i blocchi diagonali,
sottomatrici di ordine m, sono non singolari, allora la matrice inversa è una matrice diagonale a
blocchi e A−1 = diag{A−1 −1
11 , ..., Ann }.

• La matrice inversa di una matrice triangolare inferiore (superiore) è una matrice triangolare infe-
riore (superiore). Per esempio gli elementi bij , i, j = 1, ..., n, della matrice inversa di una matrice
triangolare inferiore di elementi aij , i, j = 1, ..., n, sono:
1
bii = (i = 1, ..., n)
aii
{
0 per i<j
bij = ∑i−1
− a1ii k=j aik bkj per i>j

mentre gli elementi della matrice inversa di una matrice triangolare superiore sono:
1
bii = (i = 1, ..., n)
aii
{
0 per i>j
bij = ∑j−1
− a1ii k=i aik bkj per i<j

20
• Sia A una matrice a blocchi 2 × 2 a coefficienti reali
( )
P Q
A=
0 S

con P ∈ Rr×r , 0 ∈ Rs×r , Q ∈ Rr×s , S ∈ Rs×s ; la matrice A ammette inversa se e solo se le


sottomatrici P e S sono non singolari e vale:
( −1 )
P −P −1 QS −1
A−1 =
0 S −1

5.5 Autovalori e autovettori


Definizione. Il numero λ si dice autovalore della matrice quadrata A se

Ax = λx

Il vettore x ̸= 0 si dice autovettore associato all’autovalore λ.


La coppia {λ, x} è anche detta autocoppia.

L’insieme degli autovalori di una matrice A si chiama spettro di A.


L’autovalore di modulo massimo di una matrice A si dice raggio spettrale di A e si indica con ρ(A), i.e.,
se A ∈ Rn×n
ρ(A) = max |λi (A)|
i=1,...,n

Si può osservare che anche se una matrice di ordine n non ha n autovalori distinti, può ammettere n
autovettori linearmente indipendenti. Vale comunque il risultato:
Teorema. Sia A una n × n matrice con n autovalori distinti λ1 , λ2 , ..., λn . Allora A ha i corrispondenti
autovettori x1 , x2 , ..., xn linearmente indipendenti.
Inoltre, l’autovettore xj corrispondente all’autovalore λj è unico a meno di scalari non nulli.
Si nota che una matrice A, n × n, a coefficienti reali, può avere autovalori complessi.
Se A ∈ Rn×n è una matrice n × n simmetrica allora:
• i suoi autovalori sono reali, non necessariamente distinti;
• i suoi autovettori sono a due a due ortogonali.
Dunque, una matrice simmetrica ha autovettori linearmente indipendenti.

Si riporta il risultato sulla riduzione in forma canonica diagonale di una matrice.


Definizione. Una matrice A ∈ Rn×n con autovalori λi , i = 1, ..., n, non necessariamente distinti, si dice
diagonalizzabile se esiste una matrice non singolare X tale che

X −1 AX = Λ

con Λ matrice diagonale, i.e., Λ = diag{λ1 , ..., λn }.


(Se A è diagonalizzabile, si dice anche che A è simile a Λ).
Le colonne della matrice X = [x1 , ..., xn ] sono gli autovettori di A, dunque la condizione che la matrice
A sia diagonalizzabile è equivalente a dire che gli autovettori di A siano linearmente indipendenti.
Per definizione l’i–esimo autovalore di A soddisfa

Axi = λi xi i = 1, ..., n

ovvero, si possono costituire le matrici formate dalle n colonne

[Ax1 , ..., Axn ] = [λ1 x1 , ..., λn xn ]

21
altrimenti scritte
 
λ1
 .. 
A[x1 , ..., xn ] = [x1 , ..., xn ]  .  =⇒ AX = XΛ
λn

dove X = [x1 , ..., xn ] è la matrice le cui colonne sono gli autovettori di A e Λ è la matrice diagonale
avente elementi diagonali λi , i = 1, ..., n.
Se gli autovettori x1 , ..., xn sono linearmente indipendenti, la matrice X è non singolare dunque ammette
inversa X −1 . Allora X −1 AX = Λ.
Valgono i seguenti risultati per una matrice A ∈ Rn×n :
• se λ è autovalore di A, allora è autovalore di AT ;
• se A è antisimmetrica, i suoi autovalori sono puramente immaginari (hanno parte reale nulla);
• se {λ, x} è un’autocoppia di A, allora {1/λ, x} lo è di A−1 . Dunque una matrice non singolare ha
tutti i suoi autovalori diversi da zero mentre una matrice singolare ha almeno un autovalore nullo;
• se {λ, x} è un’autocoppia di A, allora {λ2 , x} lo è di A2 . In generale, se {λ, x} è un’autocoppia di
A, allora {λk , x} lo è di Ak , con k intero positivo.
Se definiamo il polinomio di matrici come la matrice

p(A) = α0 I + α1 A + α2 A2 + ... + αk Ak αj ∈ R, j = 0, ..., k

allora, se λ è autovalore di A, α0 + α1 λ + α2 λ2 + ... + αk λk è autovalore di p(A).

Sia p(x) = an xn + an−1 xn−1 + ... + a1 x + a0 un polinomio di grado n. La matrice A, n × n,


 
0 1 0 ... 0
 0 0 1 . . . 0 
 
 .. .. 
A= . . 
 
 0 0 0 ... 1 
− aan0 − aan1 − aan2 . . . − an−1
an

ha autovalori che sono le le radici del polinomio p(x).


Tale matrice è detta matrice compagna (companion matrix) del polinomio p(x).

5.6 Matrici definite


Una matrice A ∈ Rn×n si dice simmetrica definita positiva se
• è simmetrica;
• per ogni vettore x ̸= 0, xT Ax > 0.
Una matrice A ∈ Rn×n si dice simmetrica semidefinita positiva se
• è simmetrica;
• per ogni vettore x ̸= 0, xT Ax ≥ 0.
Analogamente si definiscono matrici definite o semidefinite negative.
Una matrice A ∈ Rn×n si dice simmetrica definita negativa se
• è simmetrica;
• per ogni vettore x ̸= 0, xT Ax < 0.

22
Una matrice A ∈ Rn×n si dice simmetrica semidefinita negativa se
• è simmetrica;
• per ogni vettore x ̸= 0, xT Ax ≤ 0.

Una matrice definita positiva (negativa) ha elementi diagonali positivi (negativi).


Una matrice semidefinita positiva (negativa) ha elementi diagonali positivi o nulli (negativi o nulli).
Una matrice definita positiva (negativa) ha autovalori positivi (negativi).
Una matrice semidefinita positiva (negativa) ha autovalori positivi o nulli (negativi o nulli).
Dunque una matrice definita, positiva o negativa, è non singolare mentre una matrice semidefinita,
positiva o negativa, è singolare.

5.7 Matrici ortogonali


Una matrice A ∈ Rn×n si dice ortogonale se
AT = A−1
ovvero se AT A = I.
Siano a1 , ..., an le colonne di una matrice A, A = [a1 , a2 , ..., an ], e sia A ortogonale. Si ha
 T   T 
a1 a1 a1 . . . aT1 an
   
AT A =  ...  [a1 , a2 , ..., an ] =  ..
.
..
. 
aTn aTn a1 ... aTn an
Da AT A = I risulta che le colonne di una matrice ortogonale sono mutuamente ortonormali, ovvero
{
1 se i = j
aTi aj =
0 se i ̸= j


Gli autovalori di una matrice ortogonale8 sono ±1 e/o ±i, dove i = −1.
Se una matrice A ortogonale è simmetrica, allora è involutoria,9 i.e., A2 = I.

5.8 Matrici di permutazione


Definizione. Una matrice elementare di permutazione Prs , si ottiene dalla matrice identità scambiando
la colonna (o la riga) r–esima con la colonna (o la riga) s–esima.
Data una matrice A ∈ Rn×n ; la matrice Prs A è una matrice con gli stessi elementi di A ad eccezione
della r–esima ed s–esima riga che sono scambiate, mentre la matrice APrs è una matrice con gli stessi
elementi di A ad eccezione della r–esima ed s–esima colonna che sono scambiate.
La matrice elementare di permutazione Prs è simmetrica, ortogonale e dunque involutoria.

Definizione. Una matrice di permutazione P è ottenuta dalla matrice identità scambiando le righe o
le colonne di I. Ovvero, indicato con ei l’i–esimo vettore della base canonica, P = [es1 , ..., esn ] con
{s1 , ..., sn } una permutazione di {1, ..., n}.
Il prodotto di più matrici elementari di permutazione formano una matrice di permutazione.
Una matrice di permutazione è ortogonale.
8 Seuna matrice A è ortogonale vale che ∥Ax∥2 = ∥x∥2 per ogni vettore x. Dalla definizione di autovalore, Ax = λx
passando alla norma spettrale si ha
∥Ax∥2 = ∥λx∥2 =⇒ ∥Ax∥2 = |λ| ∥x∥2 =⇒ |λ| = 1

9 Se una matrice a coefficienti reale è ortogonale e simmetrica allora,


I = AA−1 = AAT = AA ≡ A2

23

Potrebbero piacerti anche