Sei sulla pagina 1di 105

SISTEMI LINEARI

Letizia SCUDERI

Dipartimento di Scienze Matematiche, Politecnico di Torino


letizia.scuderi@polito.it

A.A. 2018/2019

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 1 / 105


Sistemi lineari

La risoluzione di un sistema lineare è un problema che si presenta in


moltissime applicazioni,
sia esplicitamente come modello (formulazione matematica) di un
fenomeno fisico;
sia come passo intermedio o finale nella risoluzione numerica del
modello in questione, rappresentato, per esempio, da equazioni
differenziali.

L’applicazione stessa di metodi numerici per l’approssimazione di dati e di


funzioni, per la risoluzione di equazioni non lineari, di equazioni
differenziali e per il calcolo degli autovalori di matrici, può richiedere la
risoluzione di sistemi lineari.
Prima di analizzare i metodi numerici per la risoluzione di sistemi lineari, si
richiamano alcune nozioni riguardanti vettori e matrici.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 2 / 105


Norme di vettore e di matrice
Sia x = (x1 , . . . , xn )T ∈ Rn un vettore colonna.
Nel seguito verranno considerate le seguenti norme di vettore:
n
X
||x||1 = |xi |;
i=1
v
u n
uX √
||x||2 = t xi2 = xT x, norma euclidea;
i=1
||x||∞ = max |xi |.
1≤i≤n

Comandi Matlab
norm(x,1) fornisce la norma 1 del vettore x;
norm(x,2) oppure norm(x) fornisce la norma 2 del vettore x;
norm(x,inf) fornisce la norma infinito del vettore x.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 3 / 105


Sia A = (aij )i,j=1,...,n ∈ Rn,n una matrice quadrata di ordine n. Nella
trattazione dei sistemi lineari verranno utilizzate le seguenti norme di
matrice:
X n
||A||1 = max |aij |;
1≤j≤n
i=1
Xn
||A||∞ = max |aij |, (||A||∞ = ||AT ||1 ).
1≤i≤n
j=1

La norma 2 di matrice ||A||2 , detta norma spettrale, verrà definita in


seguito.

Comandi Matlab
norm(A,1) fornisce la norma 1 della matrice A;
norm(A,inf) fornisce la norma infinito della matrice A.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 4 / 105


Definizione
Date una norma di matrice e una di vettore, si dice che le due norme sono
compatibili se
||Ax|| ≤ ||A|| ||x||
per ogni A ∈ Rn,n e per ogni x ∈ Rn .

Le norme 1 e infinito precedentemente definite per vettori e per matrici


sono compatibili (come pure la norma 2).
Per le suddette norme valgono le seguenti proprietà:

||AB|| ≤ ||A|| ||B||;


||I|| = 1 con I matrice identità.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 5 / 105


Si elencano alcune forme speciali di matrici che si presenteranno in seguito:
Definizione
Una matrice A ∈ Rn,n si dice triangolare superiore se
 
? ? ? ? ?
 0 ? ? ? ? 
 
A=  0 0 ? ? ?   aij = 0, i > j
 0 0 0 ? ? 
0 0 0 0 ?

Definizione
Una matrice A ∈ Rn,n si dice triangolare inferiore se
 
? 0 0 0 0
 ? ? 0 0 0 
 
A=  ? ? ? 0 0   aij = 0, i < j
 ? ? ? ? 0 
? ? ? ? ?
L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 6 / 105
Definizione
Una matrice A ∈ Rn,n si dice diagonale se
 
? 0 0 0 0
 0 ? 0 0 0 
 
A=  0 0 ? 0 0   aij = 0, i 6= j
 0 0 0 ? 0 
0 0 0 0 ?

Definizione
Una matrice A ∈ Rn,n si dice tridiagonale se
 
? ? 0 0 0
 ? ? ? 0 0 
 
A=  0 ? ? ? 0  aij = 0, |i − j| > 1

 0 0 ? ? ? 
0 0 0 ? ?

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 7 / 105


Definizione
Una matrice A ∈ Rn,n si dice Hessenberg superiore se
 
? ? ? ? ?
 ? ? ? ? ? 
 
A=  0 ? ? ? ?   aij = 0, i > j + 1
 0 0 ? ? ? 
0 0 0 ? ?

Si definisce di Hessenberg inferiore la matrice i cui elementi al di sopra


della codiagonale superiore sono tutti nulli.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 8 / 105


Definizioni
Si definisce trasposta della matrice A e si denota con AT , la matrice i cui
elementi sono definiti da (AT )ij = (A)ji .
Una matrice A ∈ Rn,n si dice simmetrica se AT = A.
Si definisce inversa di una matrice A ∈ Rn,n e si denota con A−1 , la
matrice che verifica A−1 A = AA−1 = I.
Una matrice A ∈ Rn,n si dice ortogonale se AT A = AAT = I.
Pertanto, l’inversa di una matrice ortogonale A ∈ Rn,n coincide con la sua
trasposta, cioè A−1 = AT .

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 9 / 105


Definizione
Una matrice a blocchi, o matrice partizionata a blocchi, è una matrice
descritta in termini di sue sottomatrici anziché in termini dei suoi elementi.

Esempio
 
a11 a12 a13  
A 11 A 12
A =  a21 a22 a23  =
A21 A22
a31 a32 a33
con
     T
a11 a12 a13 a31
A11 = , A12 = , A21 = , A22 = (a33 )
a21 a22 a23 a32

in tal caso si dice che A è una matrice 2 × 2 a blocchi.

È evidente che la partizione a blocchi di una matrice possa essere fatta in


vari modi.
L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 10 / 105
Per esempio, denotando con aj , j = 1, . . . , n, il j−esimo vettore colonna,
ogni matrice A con n colonne può essere riscritta come vettore riga:

A = (a1 a2 . . . an );

analogamente, denotando con aT i , i = 1, . . . , m, l’i−esimo vettore riga,


ogni matrice A con m righe può essere riscritta come vettore colonna:
 T 
a1
 aT 
 2 
A= . 
 .. 
aT
m

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 11 / 105


La matrice trasposta di una matrice partizionata a blocchi si ottiene
nel seguente modo:
T
AT T T
  
A11 A12 ... A1n 11 A21 . . . Am1
 A21 A22 ... A2n   AT T T
12 A22 . . . Am2

AT =   =
   
.. .. .. .. .. .. .. .. 
 . . . .   . . . . 
Am1 Am2 . . . Amn T T T
A1n A2n . . . Amn

La partizione a blocchi di una matrice consente talvolta di descrivere


meglio la matrice e di effettuare più agevolmente i calcoli.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 12 / 105


Quando il numero dei blocchi e le loro dimensioni sono compatibili, le
operazioni tra matrici a blocchi possono essere eseguite formalmente
trattando i blocchi come scalari.

Esempio
Siano    
A11 A12 B11 B12
A= , B=
A21 A22 B21 B22
due matrici con la stessa partizione a blocchi; si ha allora
   
A11 + B11 A12 + B12 αA11 αA12
A+B= , αA = .
A21 + B21 A22 + B22 αA21 αA22

Inoltre,
 
A11 B11 + A12 B21 A11 B12 + A12 B22
AB = .
A21 B11 + A22 B21 A21 B12 + A22 B22

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 13 / 105


Osservazione
Quest’ultima proprietà è alla base degli algoritmi utilizzati dai calcolatori,
poiché permette di ricondurre il calcolo di un prodotto tra matrici a
somme di prodotti tra matrici di ordine più piccolo.
È particolarmente utile nel caso di matrici sparse, cioè con un gran numero
di elementi nulli, nel qual caso si cercano partizioni in cui molti blocchi
siano interamente nulli.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 14 / 105


Definizione
Una matrice triangolare superiore (inferiore) a blocchi è una matrice
quadrata che ha blocchi quadrati sulla diagonale e i cui blocchi sotto
(sopra) la diagonale principale contengono solo zeri:
 
A11 A12 . . . A1n
 O A22 . . . A2n 
A= .
 
.. .. .. 
 .. . . . 
O O . . . Ann

con O matrice identicamente nulla.


Per le matrici triangolari a blocchi vale la relazione:
n
Y
det(A) = det(Aii ).
i=1

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 15 / 105


Un caso particolare di matrice triangolare a blocchi è la matrice
diagonale a blocchi, una matrice quadrata che ha blocchi quadrati sulla
diagonale e i cui altri blocchi contengono solo zeri.
 
A11 O . . . O
 O A22 . . . O 
A= .
 
. .. . . .. 
 . . . . 
O O . . . Ann

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 16 / 105


Definizione
Si definisce matrice di permutazione, una matrice ottenuta permutando
le righe della matrice identità.

Osservazione
Le matrici di permutazione in ogni riga e ogni colonna hanno un solo
elemento diverso da zero e uguale a 1.
Le matrici di permutazione sono matrici ortogonali.
Come mostra l’esempio che segue, se si moltiplica una matrice A o un
vettore b a sinistra per un’opportuna matrice di permutazione P, si
possono realizzare scambi di righe in A oppure di componenti in b.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 17 / 105


Esempio
Consideriamo la seguente matrice di permutazione
 
0 0 1
P= 0 1 0 
1 0 0

e calcoliamo i prodotti PA e Pb, con A ∈ R3,3 e b ∈ R3 . Si ha


    
0 0 1 a11 a12 a13 a31 a32 a33
PA =  0 1 0   a21 a22 a23  =  a21 a22 a23 
1 0 0 a31 a32 a33 a11 a12 a13
e     
0 0 1 b1 b3
Pb =  0 1 0   b2  =  b2 
1 0 0 b3 b1

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 18 / 105


Definizione
Una matrice A si dice a diagonale dominante per righe se
n
X
|aii | > |aij | per i = 1, . . . , n
j =1
j 6= i

Esempio
La matrice  
4 1 −1
A =  2 −7 1 
3 −2 9
è a diagonale dominante per righe perché

|4| > |1| + | − 1|, | − 7| > |2| + |1|, |9| > |3| + | − 2|

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 19 / 105


Definizione
Una matrice A si dice a diagonale dominante per colonne se
n
X
|ajj | > |aij | per j = 1, . . . , n
i =1
i 6= j

Esempio
La matrice  
9 1 −1
A =  2 −7 1 
3 −2 4
è a diagonale dominante per colonne, perché

|9| > |2| + |3|, | − 7| > |1| + | − 2|, |4| > | − 1| + |1|,

ma non è a diagonale dominante per righe.


L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 20 / 105
Definizione
Una matrice simmetrica A si dice definita positiva se

xT Ax > 0

per ogni x 6= 0.

In seguito, verrà fornita una caratterizzazione delle matrici simmetriche e


definite positive che, dal punto di vista pratico, risulta essere più
conveniente per il riconoscimento delle suddette matrici.

Osservazione
La matrice A = BT B, con B ∈ Rn,n avente determinante non nullo, è
simmetrica e definita positiva.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 21 / 105


Condizionamento di un sistema lineare

Si consideri il sistema lineare di n equazioni nelle n incognite x1 , . . . , xn :



 a11 x1 + a12 x2 + . . . + a1n xn = b1

a21 x1 + a22 x2 + . . . + a2n xn = b2


 ... ...
an1 x1 + an2 x2 + . . . + ann xn = bn

In forma matriciale si ha
    
a11 a12 ... a1n x1 b1
 a21 a22 ... a2n  x2   b2 
=  ⇐⇒ Ax = b,
    
 .. .. .. ..  .. ..
 . . . .  .   . 
an1 an2 . . . ann xn bn

Si assuma che il sistema assegnato abbia una e una sola soluzione; in tal
caso, la matrice A si dice non singolare.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 22 / 105


Prima di descrivere i metodi numerici di base per la risoluzione del
suddetto sistema, si esamina il condizionamento del problema.
Si denotino con Ā e b̄ i dati perturbati e con x̄ la soluzione in aritmetica
esatta del sistema perturbato

Āx̄ = b̄

Nello studio del condizionamento si deve confrontare l’errore relativo

||x − x̄||/||x||

associato alla soluzione perturbata x̄, con gli errori relativi

||A − Ā||/||A|| e ||b − b̄||/||b||

associati ai dati perturbati.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 23 / 105


Si può dimostrare il seguente risultato.
Teorema
Se ||A − Ā|| < 1/(2||A−1 ||), il sistema Āx̄ = b̄ ammette una e una sola
soluzione e
 
||x − x̄|| ||A − Ā|| ||b − b̄||
≤ 2 K (A) + ,
||x|| ||A|| ||b||
ove
K (A) = ||A|| ||A−1 ||
viene definito numero di condizionamento del sistema lineare Ax = b.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 24 / 105


Si osservi che

K (A) = ||A|| ||A−1 || ≥ ||AA−1 || = ||I|| = 1

Pertanto,
se K (A) ≈ 1, la matrice A è detta ben condizionata e a piccole
perturbazioni sui dati corrispondono perturbazioni sulla soluzione al
più dello stesso ordine di grandezza di quelle sui dati;
se K (A) >> 1, la matrice si dice mal condizionata e a piccole
perturbazioni sui dati possono corrispondere grandi perturbazioni
sulla soluzione.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 25 / 105


Esempi classici di sistemi lineari mal condizionati sono quello associato alla
matrice di Hilbert
1 12 . . . n1
 
 1 1 . . . n+11 
 2 3
Hn =  . .

. . .
. .
. 
 . . . . 
1 1 1
n n+1 . . . 2n−1

e quello alla matrice di Vandermonde


 n 
x1 ... x1 1
 xn ... x2 1 
 2
Vn =  .

.. .. ..
 ..

. . . 
n
xn+1 . . . xn+1 1

ove xi 6= xj per i 6= j.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 26 / 105


Comandi Matlab
cond(A,1) fornisce il numero di condizionamento in norma 1 del
sistema Ax = b;
cond(A,inf) fornisce il numero di condizionamento in norma
infinito del sistema Ax = b;
hilb(n) genera la matrice di Hilbert Hn di ordine n;
vander(x) genera la matrice di Vandermonde Vn associata al vettore
x con componenti x1 , . . . , xn+1 .

L’esempio che segue mostra che il condizionamento di un sistema lineare


non dipende dalla norma scelta. Pertanto, se un sistema è ben/mal
condizionato rispetto alla norma 1, lo è pure, per esempio, rispetto alla
norma infinito.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 27 / 105


Esempio 1
Calcoliamo, mediante istruzioni Matlab, il condizionamento in norma 1 e
in norma infinito della matrice di Vandermonde associata a un vettore di n
elementi equispaziati in [0, 1]. Scegliamo n = 4 e n = 10.
>> x = linspace(0,1,4);
>> A = vander(x);
>> K1 = cond(A,1)
K1 =
180
>> Kinf = cond(A,inf)
Kinf =
216
>> x = linspace(0,1,10);
>> B = vander(x);
>> K1 = cond(B,1)
K1 =
4.2412e+07
>> Kinf=cond(B,inf)
Kinf =
4.8184e+07
I numeri di condizionamento nelle norme 1 e infinito, per ciascuna matrice
di Vandermonde calcolata, hanno lo stesso ordine di grandezza.
L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 28 / 105
Esempio 2
In questo esempio evidenziamo gli effetti che il cattivo condizionamento di
un sistema lineare ha sulla soluzione del sistema stesso. A tal scopo,
risolviamo il sistema lineare
Ax = b
con A = Hn matrice di Hilbert di ordine n = 2, 3, ..., 14 e b definito in
modo tale che il sistema abbia come soluzione il vettore u con tutte le
componenti uguali a 1. Pertanto, poniamo
n
X
bi = aij , i = 1, . . . , n
j=1

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 29 / 105


... continua esempio
Per ogni valore di n, calcoliamo il numero di condizionamento K∞ (Hn ) del
sistema e l’errore relativo associato alla soluzione x in norma infinito.
Osserviamo che, essendo la matrice di Hilbert simmetrica, si ha
K∞ (Hn ) = K1 (Hn ).
Per la risoluzione del sistema lineare Ax = b useremo il comando Matlab
x = A\b, che implementa il metodo delle eliminazioni di Gauss.
ord = 2:14;
for n = 1:length(ord)
A = hilb(ord(n));
b = sum(A,2);
x = A\b;
u = ones(ord(n),1);
err(n) = norm(u-x,inf)/norm(u,inf);
Kinf(n) = cond(A,inf);
end

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 30 / 105


... continua esempio
I valori ottenuti sono stati riportati nella tabella sottostante.

n ||u − x||∞ /||u||∞ K∞ (A)


2 7.7716e−16 2.7000e+01
3 1.2434e−14 7.4800e+02
4 2.3259e−13 2.8375e+04
5 3.1360e−12 9.4366e+05
6 4.9815e−10 2.9070e+07
7 3.2718e−08 9.8519e+08
8 6.9786e−07 3.3873e+10
9 2.9759e−05 1.0997e+12
10 6.6607e−04 3.5354e+13
11 3.0946e−02 1.2300e+15
12 1.9342e−01 3.7520e+16
13 6.7285e+00 3.9019e+17
14 8.6973e+00 2.7983e+18

Osserviamo che, al crescere di n, aumenta il numero di condizionamento e,


conseguentemente, diminuisce l’accuratezza della soluzione.
Le inevitabili perturbazioni di A e di b, dovute alla loro rappresentazione in
aritmetica floating-point con precisione finita, generano un errore nella soluzione,
che è tanto più grande, quanto più è elevato il numero di condizionamento del
sistema lineare.
L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 31 / 105
Esempio 3
Siano (xi , yi ), i = 1, . . . , n + 1, n + 1 coppie di punti tali che xi 6= xj per
i 6= j, e sia
pn (x) = c1 x n + c2 x n−1 + . . . + cn x + cn+1
la rappresentazione monomiale del polinomio interpolante i dati (xi , yi ).
Per calcolare i coefficienti di pn (x) si impongono le seguenti condizioni di
interpolazione
pn (xi ) = yi , i = 1, . . . , n + 1

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 32 / 105


... continua esempio
Si ottengono cosı̀ n + 1 equazioni lineari nelle incognite ci :

c1 xin + c2 xin−1 + . . . + cn xi + cn+1 = yi , i = 1, . . . , n + 1

I coefficienti ci sono dunque soluzione del sistema lineare


 n    
x1 . . . x1 1 c1 y1
 xn . . . x2 1   c2   y2 
 2
 =  ..  ⇐⇒ Vn c = y
   
 .. .. .. ..   ..
 . . . .  .   . 
n
xn+1 . . . xn+1 1 cn+1 yn+1

la cui matrice dei coefficienti è una matrice di Vandermonde.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 33 / 105


... continua esempio
In figura è riportato il numero di condizionamento K∞ (in norma infinito)
della matrice di Vandermonde generata dal vettore x di n = 2, . . . , 20
elementi equispaziati in [0, 1].
Si nota che il condizionamento della matrice peggiora al crescere
dell’ordine n e, per questo motivo, non è possibile utilizzare la
rappresentazione monomiale del polinomio interpolante quando n è grande.

Figura: K∞ (Vn ) per n = 2, 3, . . . , 20.


1020

1010

100
5 10 15 20

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 34 / 105


Metodi numerici

Si descrivono ora alcuni metodi numerici e gli algoritmi, che implementano


i suddetti metodi, per la risoluzione di sistemi lineari di ordine n.
Per ciascun algoritmo verrà fornito il costo computazionale, ovvero il
numero di operazioni aritmetiche (addizioni e moltiplicazioni) che esso
richiede per la sua esecuzione.
Nel caso dei sistemi lineari il costo è legato alla dimensione n del sistema
e, in generale, viene quantificato il numero di operazioni per valori di n
grandi.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 35 / 105


Metodi numerici per sistemi diagonali
Vengono dapprima esaminati i metodi per la risoluzione di sistemi lineari,
la cui matrice dei coefficienti ha una struttura particolare, per esempio
diagonale, triangolare superiore oppure triangolare inferiore.
Se la matrice dei coefficienti A è diagonale, con aii 6= 0, i = 1, . . . , n, la
soluzione del sistema lineare


 a11 x1 = b1
a22 x2 = b2




a33 x3 = b3
 .. ..



 . .
ann xn = bn

si ricava immediatamente mediante le seguenti n divisioni:


bi
xi = , i = 1, . . . , n
aii

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 36 / 105


Metodi numerici per sistemi triangolari
Se la matrice dei coefficienti A è triangolare superiore, con
aii 6= 0, i = 1, . . . , n, la soluzione del sistema lineare


 a11 x1 + a12 x2 + . . . + a1n xn = b1
... ... ...


 an−1n−1 xn−1 + an−1n xn = bn−1
ann xn = bn

si ottiene ricavando l’incognita xn dall’ultima equazione, xn−1 dalla


penultima equazione (dopo aver sostituito in essa il valore di xn ),. . ., x1
dalla prima (dopo aver sostituito in essa i valori di x2 , . . . , xn ):
bn
xn =
ann

bn−1 − an−1n xn
xn−1 =
an−1n−1
..
. Pn
b1 − j=2 a1j xj
x1 =
a11
L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 37 / 105
Tale procedura è nota con il nome di metodo di sostituzione all’indietro.
L’algoritmo che implementa il suddetto metodo è dunque:
bn
xn =
ann
n
X
bi − aij xj
j=i+1
xi = i = n − 1, . . . , 1
aii

Il costo computazionale, in termini delle operazioni aritmetiche di


moltiplicazione (e di addizione), è essenzialmente n2 /2 per n grande.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 38 / 105


Di seguito si riporta l’algoritmo, in linguaggio Matlab, che implementa il
metodo di sostituzione all’indietro.

Function Matlab
Un’alternativa che sfrutta la capacità
function x = indietro(A,b) di Matlab di operare in modo ottimiz-
n = length(b);
zato direttamente sui vettori (attra-
x = zeros(n,1);
x(n) = b(n)/A(n,n); verso la libreria BLAS, Basic Linear
for i = n-1:-1:1
s = 0;  Algebra Subprograms) è la seguente:

for j = i+1:n s = A(i,i+1:n)*x(i+1:n)
s = s+A(i,j)*x(j); 
end
x(i) = (b(i)-s)/A(i,i);
end

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 39 / 105


Se la matrice dei coefficienti A è triangolare inferiore, con
aii 6= 0, i = 1, . . . , n, la soluzione del sistema lineare


 a11 x1 = b1
a21 x1 + a22 x2 = b2


 . . . . . .
an1 x1 + an2 x2 + . . . + ann xn = bn

si ottiene ricavando l’incognita x1 dalla prima equazione, x2 dalla seconda


equazione (dopo aver sostituito in essa il valore di x1 ),. . ., xn dall’ultima
(dopo aver sostituito in essa i valori di x1 , . . . , xn−1 ):
b1
x1 =
a11

b2 − a21 x1
x2 =
a22
..
.
Pn−1
bn − j=1 anj xj
xn =
ann

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 40 / 105


Tale procedura è nota con il nome di metodo di sostituzione in avanti.
L’algoritmo che implementa il suddetto metodo è dunque:
b1
x1 =
a11
i−1
X
bi − aij xj
j=1
xi = i = 2, . . . , n
aii

Il costo computazionale, in termini delle operazioni aritmetiche di


moltiplicazione (e di addizione), è essenzialmente n2 /2 per n grande.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 41 / 105


Di seguito si riporta l’algoritmo, in linguaggio Matlab, che implementa il
metodo di sostituzione in avanti.

Function Matlab
function x = avanti(A,b)
n = length(b);
x = zeros(n,1);
x(1) = b(1)/A(1,1);
for i = 2:n
s = A(i,1:i-1)*x(1:i-1);
x(i) = (b(i)-s)/A(i,i);
end

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 42 / 105


Metodo delle eliminazioni di Gauss

Il metodo delle eliminazioni di Gauss, insieme alla regola di Cramer,


rappresenta un metodo classico dell’Algebra Lineare per la risoluzione di
un sistema lineare Ax = b.
Il costo computazionale in termini di moltiplicazioni del metodo delle
eliminazioni di Gauss è essenzialmente n3 /3; quello della regola di Cramer
è invece dell’ordine di (n + 1)!.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 43 / 105


Gli algoritmi con complessità fattoriale sono proibitivi anche per i
calcolatori più avanzati oggi disponibili.
Ad esempio, per risolvere un sistema di n = 24 equazioni, un calcolatore in
grado di eseguire 1015 operazioni al secondo impiega
≈ 4.6 · 10−12 secondi con il metodo delle eliminazioni di Gauss,
≈ 50 anni con la regola di Cramer.
Pertanto, anche per sistemi di modeste dimensioni, l’applicazione della
regola di Cramer risulta impraticabile.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 44 / 105


Se la matrice dei coefficienti A non ha una struttura particolare, per
risolvere il sistema lineare Ax = b di ordine n, si può utilizzare il metodo
delle eliminazioni di Gauss.
Il metodo delle eliminazioni di Gauss consta essenzialmente di due fasi:
1 trasformazione, in n − 1 passi, del sistema assegnato Ax = b nel
sistema Ux = b̄ equivalente a quello assegnato (ovvero che ammette
la stessa soluzione x), con U matrice triangolare superiore;
2 risoluzione del sistema Ux = b̄ mediante la tecnica di sostituzione
all’indietro.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 45 / 105


Il metodo di Gauss si basa sulle seguenti proprietà dei sistemi lineari:
la soluzione rimane invariata se si scambiano tra loro due equazioni
del sistema;
la soluzione rimane invariata se si sostituisce a un’equazione del
sistema una combinazione lineare dell’equazione stessa con un’altra.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 46 / 105


Per la descrizione del metodo delle eliminazioni di Gauss consideriamo il
seguente sistema lineare di ordine n = 4:


 a11 x1 + a12 x2 + a13 x3 + a14 x4 = b1
a21 x1 + a22 x2 + a23 x3 + a24 x4 = b2

Ax = b ⇐⇒
a x + a32 x2 + a33 x3 + a34 x4 = b3
 31 1


a41 x1 + a42 x2 + a43 x3 + a44 x4 = b4

(1) (1)
Poniamo aij := aij e bi := bi per ogni i, j = 1, . . . , 4.
PASSO k = 1
(1)
Supponiamo a11 6= 0. In caso contrario, se la matrice A è non singolare,
(1)
esiste certamente ar 1 6= 0 con 2 ≤ r ≤ 4 e scambiamo la prima equazione
con l’r -esima equazione.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 47 / 105


Quindi eliminiamo l’incognita x1 nelle equazioni i = 2, 3, 4, sostituendo
l’i-esima equazione con l’equazione che si ottiene sottraendo all’i-esima
(1) (1)
stessa la prima equazione moltiplicata per mi1 := ai1 /a11 :
(1) (1) (1) (1) (1)
ai1 x1 + ai2 x2 + ai3 x3 + ai4 x4 = bi

(1) (1) (1) (1) (1)


mi1 (a11 x1 + a12 x2 + a13 x3 + a14 x4 ) = mi1 b1

(2) (2) (2) (2)


ai2 x2 + ai3 x3 + ai4 x4 = bi
ove
(2) (1) (1) (2) (1) (1)
aij = aij − mi1 a1j , bi = bi − mi1 b1 , i, j = 2, 3, 4.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 48 / 105


Otteniamo cosı̀ il sistema lineare:
 (1) (1) (1) (1) (1)
 a11 x1 + a12 x2 + a13 x3 + a14 x4
 = b1
 (2) (2) (2) (2)
a22 x2 + a23 x3 + a24 x4 = b2

(2) (2) (2) (2)


 a32 x2 + a33 x3 + a34 x4 = b3
 (2) (2) (2) (2)
a42 x2 + a43 x3 + a44 x4 = b4

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 49 / 105


PASSO k = 2
A meno di uno scambio della seconda equazione con una successiva,
(2)
possiamo supporre a22 6= 0.
Quindi eliminiamo l’incognita x2 nelle equazioni i = 3, 4, sostituendo
l’i-esima equazione con l’equazione che si ottiene sottraendo all’i-esima
(2) (2)
stessa la seconda equazione moltiplicata per mi2 := ai2 /a22 . Abbiamo
cosı̀:  (1) (1) (1) (1) (1)

 a11 x1 + a12 x2 + a13 x3 + a14 x4 = b1
 (2) (2) (2) (2)
a22 x2 + a23 x3 + a24 x4 = b2

(3) (3) (3)


 a33 x3 + a34 x4 = b3
 (3) (3) (3)
a43 x3 + a44 x4 = b4
ove
(3) (2) (2) (3) (2) (2)
aij = aij − mi2 a2j , bi = bi − mi2 b2 , i, j = 3, 4.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 50 / 105


PASSO k = 3
(3)
Supponiamo, a meno di uno scambio, a33 6= 0.
Quindi eliminiamo l’incognita x3 nell’equazione i = 4, sostituendo l’i-esima
equazione con l’equazione che si ottiene sottraendo all’i-esima stessa la
(3) (3)
terza equazione moltiplicata per mi3 := ai3 /a33 . Otteniamo cosı̀ il
seguente sistema triangolare superiore
 (1) (1) (1) (1) (1)

 a11 x1 + a12 x2 + a13 x3 + a14 x4 = b1
 (2) (2) (2) (2)
a22 x2 + a23 x3 + a24 x4 = b2

(3) (3) (3) ⇐⇒ Ux = b̄


 a33 x3 + a34 x 4 = b 3
 (4) (4)
a44 x4 = b4
ove
(4) (3) (3) (4) (3) (3)
aij = aij − mi3 a3j , bi = bi − mi3 b3 , i, j = 4.

Risolviamo infine il sistema Ux = b̄ con la tecnica di sostituzione


all’indietro.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 51 / 105


Il seguente schema di calcolo riassume le trasformazioni del metodo delle
eliminazioni di Gauss:
k = 1, . . . , n − 1

(k) (k)

 mik
i = k + 1, . . . , n  = aik /akk
(k+1) (k) (k)
aij = aij − mik akj , j = k + 1, . . . , n
 (k+1)
 (k) (k)
bi = bi − mik bk

(
(n) (n)
xn = bn /ann
(k) (k) (k)
xk = (bk − nj=k+1 akj xj )/akk ,
P
k = n − 1, . . . , 1

Il costo computazionale del metodo delle eliminazioni di Gauss, in termini


delle operazioni aritmetiche di moltiplicazione (e di addizione), è
essenzialmente n3 /3 per n grande.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 52 / 105


Se A è simmetrica e non si effettuano scambi, si dimostra che la
(k)
sottomatrice degli elementi aij :
(1) (1) (1) (1)
 
a11 a12 ... a1k ... a1n
(2) (2) (2)
 a22 ... a2k ... a2n 

 ... ... 

(k) (k)
 akk ... akn 
.. .. ..
 
 . . .

(k) (k)
ank ... ann

per ogni k, è ancora simmetrica. Pertanto, al passo k, tenendo conto che


la simmetria è preservata, è possibile generare soltanto la metà degli
(k+1)
elementi aij (per esempio, quelli della parte triangolare superiore). In
tal caso il costo del metodo delle eliminazioni di Gauss si dimezza ed è
essenzialmente n3 /6.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 53 / 105


Osserviamo che:
(k) (k)
a ogni passo k gli elementi aij e bi possono essere memorizzati
all’interno della matrice A e del vettore b, nelle posizioni ij e i,
rispettivamente;
i moltiplicatori mik possono essere memorizzati nella matrice A nella
posizione ik.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 54 / 105


(k)
6 0 per ogni k = 1, . . . , n − 1, l’algoritmo che
Nell’ipotesi in cui akk =
implementa il metodo delle eliminazioni di Gauss in linguaggio Matlab, è il
seguente.
Function Matlab
function x = gauss noscambi(A,b)
n = length(b);
for k = 1:n-1
for i = k+1:n
A(i,k) = A(i,k)/A(k,k);
for j = k+1:n
A(i,j) = A(i,j)-A(i,k)*A(k,j);
end
b(i) = b(i)-A(i,k)*b(k);
end
end
x = zeros(n,1);
x(n) = b(n)/A(n,n);
for i = n-1:-1:1
x(i) = (b(i)-A(i,i+1:n)*x(i+1:n))/A(i,i);
end

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 55 / 105


Affinché il metodo delle eliminazioni di Gauss possa procedere, è
(k)
necessario che al passo k risulti akk 6= 0.
Si dimostra che tale condizione è soddisfatta nei seguenti casi:
A è a diagonale dominante per righe;
A è a diagonale dominante per colonne;
A è simmetrica e definita positiva.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 56 / 105


Esempio
Risolviamo il seguente sistema lineare
    
2 −1 1 −2 x1 0
 0 2 0 −1   x2   1 
Ax = b ⇐⇒   = 
 1 0 −2 1   x3   0 
0 2 1 1 x4 4

con soluzione x = (1, 1, 1, 1)T , applicando l’algoritmo che implementa il


metodo delle eliminazioni di Gauss.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 57 / 105


... continua esempio
PASSO k = 1
Osserviamo che a11 6= 0 e, quindi, procediamo con le trasformazioni.
Memorizziamo i moltiplicatori mi1 al posto di ai1 , i = 2, 3, 4 e generiamo
gli elementi aij con i, j = 2, 3, 4:
   
2 −1 1 −2 0
 0 2 0 −1   1 
A=  b= 
 1/2 1/2 − 5/2 2   0 
0 2 1 1 4

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 58 / 105


... continua esempio
PASSO k = 2
Osserviamo che a22 6= 0. Memorizziamo i moltiplicatori mi2 al posto di
ai2 , i = 3, 4 e generiamo gli elementi aij con i, j = 3, 4:
   
2 −1 1 −2 0
 0 2 0 −1   1 
A=  b= 
 1/2 1/4 − 5/2 9/4   − 1/4 
0 1 1 2 3

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 59 / 105


... continua esempio
PASSO k = 3
Osserviamo che a33 6= 0. Memorizziamo il moltiplicatore mi3 al posto di
ai3 , i = 4 e generiamo l’elemento a4,4 :
   
2 −1 1 −2 0
 0 2 0 −1   1 
A=  b= 
 1/2 1/4 −5/2 9/4   −1/4 
0 1 − 2/5 29/10 29/10

Applichiamo la tecnica di sostituzione all’indietro:

x4 = (29/10)/(29/10) = 1
x3 = (−1/4 − 9/4)/(−5/2) = 1
x2 = (1 − (−1))/2 = 1
x1 = −(−2 + 1 − 1)/2 = 1

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 60 / 105


... continua esempio
Consideriamo ora le matrici L e U cosı̀ definite: L è la matrice triangolare
inferiore i cui elementi sono definiti da

`ii = 1, `ij = aij per i > j

e U è la matrice triangolare superiore, i cui elementi sono

uij = aij per j ≥ i

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 61 / 105


... continua esempio
Osserviamo che il prodotto
  
1 0 0 0 2 −1 1 −2
0 1 0 0 0 2 0 −1
LU =  1/2 1/4 1 0

0 0 −5/2 9/4

0 1 −2/5 1 0 0 0 29/10

genera la matrice di partenza


 
2 −1 1 −2
0 2 0 −1
A= 1 0 −2 1

0 2 1 1

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 62 / 105


Fattorizzazione PA=LU e applicazioni

L’esempio precedente mostra che il metodo delle eliminazioni di Gauss,


quando non richiede scambi, realizza la seguente fattorizzazione della
matrice A:
A = LU
ove U è la matrice triangolare superiore del sistema equivalente al sistema
di partenza e L è la matrice triangolare inferiore dei moltiplicatori con
diagonale unitaria.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 63 / 105


Per determinare le matrici L e U della fattorizzazione A = LU, occorre
aggiungere nell’algoritmo di Gauss (implementato nella function Matlab
gauss noscambi), al termine delle trasformazioni degli elementi della
matrice A, soltanto le due istruzioni che generano L e U a partire dalla
matrice trasformata A.

Function Matlab
function [L,U] = elleu(A)
n = size(A,1);
for k = 1:n-1
for i = k+1:n
A(i,k) = A(i,k)/A(k,k);
for j = k+1:n
A(i,j) = A(i,j)-A(i,k)*A(k,j);
end
end
end
L = tril(A,-1)+eye(n);
U = triu(A);

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 64 / 105


(k)
Se al passo k del metodo delle eliminazioni di Gauss si ha akk = 0, il
metodo può procedere solo se si scambia la k-esima equazione con la
(k)
r -esima con k < r ≤ n tale che ark 6= 0.
In questo caso, cioè in caso di scambi, il metodo delle eliminazioni di
Gauss realizza la seguente fattorizzazione della matrice A:

PA = LU

ove U è triangolare superiore, L è triangolare inferiore con diagonale


unitaria e P è una matrice di permutazione, definita dagli scambi richiesti
dal metodo.
Poiché l’introduzione degli scambi non comporta alcun calcolo, il costo
computazionale della fattorizzazione PA = LU della matrice A è uguale a
quello della fattorizzazione A = LU e vale all’incirca n3 /3 per n grande.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 65 / 105


Per garantire una migliore stabilità numerica dell’algoritmo di Gauss
(k)
conviene operare uno scambio di equazioni anche quando akk , pur essendo
diverso da zero, è “piccolo” in valore assoluto.
(k) (k)
In tal caso, infatti, il moltiplicatore mik = aik /akk risulterebbe “grande” e
potrebbe amplificare eccessivamente gli errori di arrotondamento, che si
generano durante l’esecuzione dell’algoritmo.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 66 / 105


Pertanto, per garantire una maggiore accuratezza della soluzione, conviene
utilizzare moltiplicatori mik “piccoli”, e questi si ottengono con una scelta
(k)
opportuna degli elementi pivot akk :
ad ogni passo k conviene individuare l’indice di riga r per il quale risulta
(k) (k)
|ark | = max |aik |
k≤i≤n

e scambiare la k-esima equazione con l’r -esima equazione.


Tale strategia è nota sotto il nome di pivoting parziale.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 67 / 105


Il pivoting è superfluo quando:
A è a diagonale dominante per colonne;
A è simmetrica e definita positiva.
L’esempio che segue evidenzia l’importanza della strategia del pivoting
quando si risolve un sistema lineare con il metodo delle eliminazioni di
Gauss.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 68 / 105


Esempio
Consideriamo il sistema lineare Ax = b di ordine n = 18, con
n
2i − 1 X
aij = cos((j − 1)θi ), θi = π, bi = aij
2n
j=1

la cui soluzione esatta è x = (1, 1, . . . , 1)T . Si ha K∞ (A) ≈ 17.


Denotata con x̄ la soluzione del sistema calcolata mediante il metodo delle
eliminazioni di Gauss senza pivoting e con x̄p la soluzione calcolata
mediante il metodo di Gauss con pivoting parziale, si ha

||x − x̄||∞ ||x − x̄p ||∞


≈ 10−9 e ≈ 10−15
||x||∞ ||x||∞

Pertanto il metodo delle eliminazioni di Gauss con pivoting parziale


fornisce una soluzione più accurata.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 69 / 105


Comandi Matlab
x = A\b calcola la soluzione x di Ax = b con il metodo delle
eliminazioni di Gauss con pivoting parziale. È importante sapere che il
comando richiama un algoritmo specifico a seconda delle
caratteristiche della matrice A (diagonale, triangolare, simmetrica e
definita positiva,... ); se la matrice non soddisfa nessuna delle
caratteristiche previste, allora viene calcolata una generica
fattorizzazione PA = LU.
[L,U,P] = lu(A) calcola i fattori L, U, e P della fattorizzazione
PA = LU di A.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 70 / 105


Applicazioni della fattorizzazione PA = LU

Descriviamo ora alcune applicazioni della fattorizzazione PA = LU.


Applicazione 1. Risoluzione del sistema lineare Ax = b
Per la risoluzione di un sistema lineare Ax = b si può procedere nel
seguente modo:

Ax = b =⇒ PAx = Pb =⇒ L |{z}
Ux = Pb
y

da cui segue la risoluzione di due sistemi triangolari



Ly = Pb ⇒y
Ux = y ⇒x

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 71 / 105


Se i fattori L, U, P della fattorizzazione PA = LU sono noti, il costo della
risoluzione del sistema lineare Ax = b è soltanto n2 ; altrimenti, il costo è
pari a quello della fattorizzazione PA = LU, cioè n3 /3 (essendo
trascurabile, per n grande, il costo della risoluzione dei due sistemi lineari
triangolari, rispetto al costo della fattorizzazione).

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 72 / 105


Applicazione 2. Calcolo del determinante di una matrice
Per il calcolo del determinante di A si può cosı̀ procedere:

det(PA) = det(LU) =⇒ det(P)det(A) = det(L)det(U)

Poiché det(L) = 1, det(U) = ni=1 uii e si dimostra che det(P) = (−1)s


Q
ove s è il numero totale degli scambi di equazioni richiesti dal metodo, si
ha
n
Y
s
det(A) = (−1) uii
i=1

Questa procedura è alla base del comando Matlab det(A), che restituisce
il determinante della matrice A.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 73 / 105


Applicazione 3. Calcolo dell’inversa di una matrice
Un metodo efficiente e ottimale dal punto di vista del costo
computazionale per il calcolo dell’inversa di A è il seguente:

PA = LU =⇒ (PA)−1 = (LU)−1 =⇒ A−1 P−1 = U−1 L−1

da cui
A−1 = U−1 L−1 P
Il costo computazionale del metodo descritto è circa pari a n3 per n
grande.
Questa procedura è alla base del comando Matlab inv(A), che restituisce
l’inversa della matrice A.
Osserviamo che, poiché il costo del calcolo dell’inversa è il triplo del costo
del metodo delle eliminazioni di Gauss, non è conveniente dal punto di
vista del costo computazionale, risolvere il sistema lineare Ax = b
mediante il calcolo x = A−1 b.
L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 74 / 105
Applicazione 4. Risoluzione di più sistemi lineari Axi = bi
Per la risoluzione di p sistemi lineari aventi tutti la stessa matrice dei
coefficienti A, un algoritmo efficiente consiste nel calcolare la
fattorizzazione PA = LU e procedere con la risoluzione di due sistemi
triangolari per ciascun sistema assegnato.
Il costo di tale procedura è circa n3 /3 + pn2 per n grande. Se p è molto
più piccolo di n, il costo pn2 dei 2p sistemi lineari triangolari è trascurabile
rispetto al costo della fattorizzazione.
La risoluzione di ciascun sistema lineare mediante il metodo delle
eliminazioni di Gauss avrebbe, invece, richiesto un costo all’incirca pari a
pn3 /3.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 75 / 105


Per esempio, per p = 3, 
 Ax1 = b1
Ax2 = b2
Ax3 = b3

si determina PA = LU e quindi si calcola xi , i = 1, 2, 3, risolvendo i


seguenti due sistemi triangolari:

Ly = Pbi ⇒y
Uxi = y ⇒ xi

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 76 / 105


Fattorizzazione di Choleski e applicazioni

Per le matrici simmetriche e definite positive si può dimostrare il seguente


teorema.
Teorema
Sia A una matrice simmetrica e definita positiva. Si dimostra che per
essa esiste ed è unica la fattorizzazione

A = RT R

ove R è una matrice triangolare superiore con elementi positivi sulla


diagonale principale.
Tale fattorizzazione è detta fattorizzazione di Choleski.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 77 / 105


Il calcolo del fattore R si ottiene mediante un algoritmo il cui costo
computazionale è essenzialmente n3 /6 per n grande.

Comando Matlab
R = chol(A) calcola il fattore R triangolare superiore della fattorizzazione
di Choleski A = RT R, della matrice simmetrica e definita positiva A.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 78 / 105


Di seguito vengono descritte alcune applicazioni della fattorizzazione di
Choleski.
Applicazione 1. Risoluzione del sistema lineare Ax = b
Per la risoluzione del sistema lineare Ax = b, con A simmetrica e definita
positiva, nota la fattorizzazione di Choleski A = RT R, un algoritmo
efficiente è il seguente:
 T
T R y=b ⇒y
Ax = b =⇒ R |{z} Rx = b =⇒
Rx = y ⇒x
y

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 79 / 105


Applicazione 2. Calcolo dell’inversa di una matrice
Per il calcolo dell’inversa della matrice simmetrica e definita positiva A, un
metodo efficiente e ottimale dal punto di vista del costo computazionale, è
il seguente:

A = RT R =⇒ A−1 = (RT R)−1 = R−1 (RT )−1

Per ridurre il costo computazionale conviene scambiare l’operazione di


trasposizione con quella di inversione e scrivere:

A−1 = R−1 (R−1 )T

In questo modo occorre invertire soltanto il fattore triangolare R.


Il costo computazionale del metodo è essenzialmente 2n3 /3 per n grande.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 80 / 105


Esempio. Trasmissione del calore.
Supponiamo di avere una parete formata da quattro strati: lo strato 1 di
gesso (10 mm), lo strato 2 di fibra di vetro (125 mm), lo strato 3 di legno
(60 mm) e lo strato 4 di mattoni (50 mm).

Gesso Isolante Legno Mattoni

Aria interna Aria esterna

Ti T1 T2 T3 Te

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 81 / 105


... continua esempio
Indicati con D lo spessore del materiale e con k la sua conduttività
termica, la resistenza termica di una parete di 1m2 è data da R = D/k;
per i materiali considerati, le resistenze termiche sono dunque
R1 = 0.036o C /watt, R2 = 4.01o C /watt, R3 = 0.408o C /watt,
R4 = 0.038o C /watt, rispettivamente.
Supponendo che la temperatura interna Ti = 20o C ed esterna
Te = −10o C restino costanti per un determinato periodo di tempo e che
la superficie della parete sia 10m2 , calcoliamo le temperature T1 , T2 e T3
tra i vari strati e l’energia termica in watt.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 82 / 105


... continua esempio
Per calcolare le quantità richieste, si utilizza la seguente relazione
∆T
q=
R
che, quando un materiale è sottoposto alla differenza di temperatura ∆T ,
correla la sua resistenza termica R al flusso q che lo attraversa.
Avendo supposto che la temperatura interna Ti e quella esterna Te restino
costanti, anche l’energia termica presente nei vari strati è costante. Quindi
il flusso termico, attraverso i singoli strati, è lo stesso e si ha:
Ti − T1 T1 − T2 T2 − T3 T3 − Te
q= = = =
R1 R2 R3 R4

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 83 / 105


... continua esempio
Esplicitando le tre equazioni, otteniamo il seguente sistema lineare

 (R1 + R2 )T1 − R1 T2 = Ti R2
R3 T1 − (R2 + R3 )T2 + R2 T3 = 0
R4 T2 − (R3 + R4 )T3 = −Te R3

la cui risoluzione fornisce T1 = 19.7596o C , T2 = −7.0214o C e


T3 = −9.7462o C . Usando la relazione q = ∆T /R, abbiamo che il flusso
termico per una parete di 10m2 è pari a 66.785 watt.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 84 / 105


... continua esempio
Calcoliamo ora l’energia termica al variare della temperatura esterna
Te = −10o C , −9o C , ..., 1o C , 2o C .
R = [0.036 4.01 0.408 0.038];
ti = 20;
te = [-10:1:2];
A = [R(1)+R(2) -R(1) 0;
R(3) -(R(2)+R(3)) R(2);
0 R(4) -(R(3)+R(4))];
[L,U,P] = lu(A);
for i = 1:length(te)
b = [ti*R(2); 0 ; -te(i)*R(3)];
y = L\(P*b);
x = U\y;
q(i) = (ti-x(1))/R(1)*10;
end
plot(te,q,’b’,te,q,’r*’,’linewidth’,3)
grid on

70

65

60

55

50

45

40
−10 −9 −8 −7 −6 −5 −4 −3 −2 −1 0 1 2

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 85 / 105


Fattorizzazione QR e applicazioni

Teorema
Ogni matrice A ∈ Rm,n è fattorizzabile nella forma

A = QR

con Q ∈ Rm,m ortogonale ed R ∈ Rm,n con elementi rij = 0 per i > j.

In particolare, per m < n e m > n si ha rispettivamente


 r r12 ... r1n

11
0 r22 ... r2n
 .. .. ..

   .. 
r11 r12 ... ... ... r1n  . . . . 
0 r22 ... ... ... r2n  0 0 ... rnn 
R= , R = 
   
.. .. .. .. 0 0 ... 0 
. . . ··· ... .  .. .. .. .. 
0 0 ... rmm ... rmn 
 . . . . 

 .. .. .. .. 
. . . .
0 0 ... 0

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 86 / 105


I vettori colonna della matrice Q sono a due a due ortogonali.
La fattorizzazione QR di una matrice A, in generale, non è unica.
Si può, tuttavia, dimostrare il seguente teorema.
Teorema
Sia A ∈ Rm,n , m ≥ n, di rango massimo n. Allora il fattore R della
fattorizzazione QR della matrice A si riscrive come
 

R=
O

con O matrice nulla e R̃ triangolare superiore non singolare.


Inoltre, A può essere scritta in un unico modo nella forma

A = Q̃R̃

con Q̃ ∈ Rm,n avente vettori colonna ortonormali ed R̃ ∈ Rn,n triangolare


superiore non singolare con elementi diagonali positivi.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 87 / 105


I seguenti comandi Matlab consentono di calcolare una fattorizzazione QR
di una assegnata matrice A.

Comandi Matlab
[Q,R] = qr(A), data la matrice A di dimensioni m × n, calcola un
fattore ortogonale Q di dimensioni m × m e un fattore R di dimensioni
m × n tali che A = QR.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 88 / 105


Si descrivono ora alcune applicazioni della fattorizzazione A = QR.
Applicazione 1. Risoluzione di un sistema lineare determinato
Per la risoluzione di un sistema lineare Ax = b, con A ∈ Rn,n non
singolare, noti i fattori Q e R della fattorizzazione A = QR, con Q ∈ Rn,n
ortogonale e R ∈ Rn,n triangolare superiore e non singolare, si procede nel
seguente modo:

Ax = b =⇒ QRx = b =⇒ Rx = QT b

Si osservi che, se i fattori Q e R non sono noti, tale procedura non è


conveniente dal punto di vista del costo computazionale, perché il calcolo
dei suddetti fattori richiede un numero di operazioni aritmetiche superiore
a quello richiesto dal calcolo dei fattori della fattorizzazione PA = LU.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 89 / 105


Applicazione 2. Risoluzione di un sistema lineare
sovradeterminato
La fattorizzazione A = QR si utilizza anche per la risoluzione del sistema
lineare
Ax = b, A ∈ Rm,n , x ∈ Rn , b ∈ Rm , m > n
Tale sistema si dice sovradeterminato in quanto il numero m delle
equazioni lineari (vincoli) è superiore al numero n delle incognite (gradi di
libertà).
Un sistema sovradeterminato può non ammettere soluzione in senso
classico. In altre parole, indipendentemente dal rango, massimo o non,
della matrice A, può non esistere un vettore x che soddisfi
contemporaneamente tutte le equazioni del sistema Ax = b e per il quale,
quindi, Ax − b è il vettore identicamente nullo.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 90 / 105


Se il sistema non ammette soluzione in senso classico, allora si ricercano i
vettori x per i quali il vettore residuo Ax − b è piccolo.
Pertanto, si fissa una norma vettoriale || · || (al fine di misurare la
grandezza del suddetto vettore) e si ricercano i vettori x che minimizzano
la quantità ||Ay − b|| con y ∈ Rn .

Definizione
Si dice allora che il vettore x è soluzione del sistema sovradeterminato
Ax = b rispetto alla norma || · || se

min ||Ay − b|| = ||Ax − b||


y∈Rn

Si osservi che se ||Ax − b|| = 0, allora Ax − b = 0 e si ritrova la soluzione


classica x del sistema Ax = b.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 91 / 105


Se si sceglie la norma euclidea, il problema della risoluzione del sistema
sovradeterminato Ax = b viene dunque trasformato nel seguente problema
di minimo minn ||Ay − b||2 .
y∈R

Definizione
Il problema
min ||Ay − b||2 ,
y∈Rn

si definisce problema dei minimi quadrati e un vettore x tale che

min ||Ay − b||2 = ||Ax − b||2


y∈Rn

si dice soluzione nel senso dei minimi quadrati.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 92 / 105


Il teorema che segue caratterizza l’insieme X dei vettori soluzione x ∈ Rn
del problema dei minimi quadrati.
Teorema
Il problema dei minimi quadrati ammette sempre soluzione, ossia l’insieme
X dei vettori soluzione è non vuoto. Inoltre,
x ∈ X se e solo se
AT Ax = AT b
Tale sistema viene detto sistema delle equazioni normali o sistema
normale.
L’insieme X si riduce ad un solo elemento x? se e solo se la matrice A
ha rango massimo.
Esiste uno e un solo vettore x? ∈ X tale che

||x? ||2 = min ||x||2


x∈X

Il vettore x? è detto soluzione di minima norma.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 93 / 105


Per la risoluzione di un sistema sovradeterminato, ovvero per la risoluzione
del problema dei minimi quadrati, si distinguono pertanto due casi in base
al rango della matrice A.
1) A ha rango massimo
In tal caso il problema dei minimi quadrati ammette un’unica soluzione x? .
Tale soluzione può essere calcolata risolvendo il sistema delle equazioni
normali.
Tenendo conto che A ha rango massimo, la matrice AT A è simmetrica e
definita positiva, e quindi si può utilizzare la fattorizzazione di Choleski per
risolvere il sistema normale.
Tale procedura non è tuttavia numericamente stabile, in quanto il sistema
delle equazioni normali può essere mal condizionato anche quando il
problema iniziale non lo è.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 94 / 105


Un metodo stabile ed efficiente per calcolare la soluzione del problema dei
minimi quadrati si basa sulla fattorizzazione A = QR.
Per la descrizione del suddetto metodo, si osservi preliminarmente che,
poichè si vuole minimizzare una quantità non negativa, non è restrittivo
considerare il quadrato della norma del residuo ||Ay − b||22 .
Tenendo conto che Q è ortogonale e

||QT z||22 = (QT z)T QT z = zT QQT z = ||z||22 ,

si ha

||Ay − b||22 = ||QT (Ay − b)||22 = ||Ry − QT b||22 = ||Ry − c||22

ove c := QT b.
Pertanto ||Ay − b||22 è minimo se, e solo se, ||Ry − c||22 è minimo.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 95 / 105


Per il teorema precedentemente enunciato, poiché A ha rango massimo,
 

R= , R̃ ∈ Rn,n , O ∈ Rm−n,n
O

con R̃ triangolare superiore e non singolare e O matrice nulla.


Partizioniamo quindi c nella seguente forma
 
c1
c= , c1 ∈ Rn , c2 ∈ Rm−n ,
c2

e riscriviamo ||Ry − c||22 come


    2   2
R̃y c1 R̃y − c1
||Ry − c||22 = − = = ||R̃y − c1 ||22 + ||c2 ||22

0 c2 2 −c2 2

Osserviamo che, in quest’ultima uguaglianza, solo il primo addendo


dipende da y.
Pertanto ||Ay − b||22 è minimo se, e solo se, ||R̃y − c1 ||22 è minimo.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 96 / 105


Essendo R̃ non singolare, il sistema lineare R̃y = c1 ammette una e una
sola soluzione x? , per la quale si ha ||R̃x? − c1 ||22 = 0.
Ne consegue che x? è tale che

min ||Ay − b||2 = ||Ax? − b||2 = ||c2 ||2


y∈R n

Osserviamo che se c2 = 0, allora x? è soluzione nel senso classico;


altrimenti, x? è soluzione nel senso dei minimi quadrati. La norma ||c2 ||2
fornisce la misura del residuo.
Il costo computazionale di tale metodo è pari a quello della fattorizzazione
A = QR.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 97 / 105


2) A non ha rango massimo
Osserviamo che se A non ha rango massimo, allora il problema dei minimi
quadrati ammette infinite soluzioni. Infatti, in tal caso, se x è una
soluzione del problema minn ||Ay − b||2 , allora anche x + z, con z 6= 0 e
y∈R
tale che Az = 0, è soluzione del medesimo problema.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 98 / 105


Tuttavia il teorema, precedentemente enunciato, assicura che fra tutti i
vettori x ∈ X che minimizzano ||Ay − b||2 , ne esiste solo uno che ha
norma euclidea minima.
Si determina allora come soluzione del sistema lineare sovradeterminato
Ax = b, il vettore x? tale che

||Ax? − b||2 = minn ||Ay − b||2 e ||x? ||2 = min ||x||2


y∈R x∈X

Osserviamo che la soluzione del problema minn ||Ay − b||2 nell’ipotesi in


y∈R
cui A abbia rango massimo, essendo unica, ha necessariamente norma
euclidea minima.
Lo strumento che consente di calcolare la soluzione del problema sopra è la
decomposizione ai valori singolari di A, che verrà in seguito descritta.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 99 / 105


Osservazioni
Anche nel caso di sistemi sottodeterminati Ax = b, per i quali il
numero delle incognite è superiore al numero delle equazioni, tra le
infinite soluzioni, si considera quella di norma euclidea minima. Essa
si determina tramite la decomposizione ai valori singolari.
Come vedremo, la fattorizzazione A = QR verrà utilizzata anche per
il calcolo degli autovalori della matrice A.

Comando Matlab
x = A\b, nel caso di un sistema lineare sovradeterminato Ax = b, con A
matrice rettangolare di dimensioni m × n con m > n e di rango massimo,
fornisce (utilizzando la procedura precedentemente descritta) la soluzione
x nel senso dei minimi quadrati del sistema Ax = b.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 100 / 105


Esempio. Biomeccanica
Nella seguente tabella vengono riportati i risultati di un esperimento (P.
Komarek, Biomechanics of Clinical Aspects of Biomedicine, 1993) eseguito
per individuare il legame tra lo sforzo e la relativa deformazione di un
campione di tessuto biologico (un disco intervertebrale).

Test Sforzo x Deformazione y Test Sforzo x Deformazione y


1 0.00 0.00 5 0.31 0.23
2 0.06 0.08 6 0.47 0.25
3 0.14 0.14 7 0.60 0.28
4 0.25 0.20 8 0.70 0.29

A partire dai suddetti dati, stimiamo la deformazione corrispondente allo


sforzo x = 0.9MPa (MPa = 100N/cm2 , megapascal), approssimando i
dati assegnati mediante un polinomio di grado 1.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 101 / 105


... continua esempio
Sia allora p(x) = c1 x + c2 un polinomio di grado 1 e imponiamo le
condizioni p(xi ) ≡ c1 xi + c2 = yi ; usando i dati della tabella, otteniamo un
sistema lineare sovradeterminato Ac = b,
   
0 1 0
 0.06 1   0.08 
   
 0.14 1 
  0.14 
 
 
 0.25 1  c1  0.20 

 0.31 1  c2
 =  0.23 

   
 0.47 1   0.25 
   
 0.60 1   0.28 
0.70 1 0.29

di 8 equazioni nel vettore incognito c = (c1 , c2 )T .

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 102 / 105


... continua esempio
Per calcolare la soluzione c? nel senso dei minimi quadrati scriviamo le
seguenti istruzioni Matlab:

x = [0 0.06 0.14 0.25 0.31 0.47 0.60 0.70];


y = [0 0.08 0.14 0.20 0.23 0.25 0.28 0.29];
A = [x’ ones(8,1)];
b = y’;
[Q,R] = qr(A);
c = Q’*b;
c1 = c(1:2);
c star = R(1:2,1:2)\c1;
z = [-.2,.9];
p = polyval(c star,z);
plot(x,y,’r*’,z,p,’linewidth’,3)
axis([-0.2 0.9 min(p) max(p)])
pr = polyval(c star,0.9)

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 103 / 105


... continua esempio
0.4

0.35

0.3

0.25

0.2

0.15

0.1

0.05

0
−0.2 0 0.2 0.4 0.6 0.8

La retta rappresentata graficamente è detta retta di regressione.


La deformazione corrispondente allo sforzo x = 0.9MPa è y ≈ 0.4021cm.

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 104 / 105


Osservazioni
La precedente procedura è automaticamente implementata nel
comando \: l’istruzione c star = A\b produce infatti il medesimo
vettore c? calcolato in precedenza.
Il vettore c? si può ottenere anche mediante l’istruzione c star =
polyfit(x,y,1). I coefficienti del polinomio di grado 1, calcolati
con polyfit, coincidono con le componenti del vettore c? che
minimizza la quantità ||Ac − b||2 .

L. Scuderi (Politecnico di Torino) Sistemi lineari A.A. 2018/2019 105 / 105