Sei sulla pagina 1di 87

Dispense del corso di

Calcolo Numerico
Modulo di Algebra Lineare Numerica
Davide Palitta e Valeria Simoncini

II edizione, v.7, 9 ottobre 2022

Ringrazio gli studenti del corso di Calcolo Numerico della Laurea Triennale in Ma-
tematica, a.a.2014-2015, ed in particolare Roberta Lorenzi, per avermi aiutato nella
correzione di queste dispense.
V. Simoncini

1
Indice

1 Fondamenti della Matematica Numerica 5


1.1 Buona posizione di un problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Stabilità di metodi numerici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3 Sorgenti di errore nei modelli computazionali . . . . . . . . . . . . . . . . . . . . . . 9

2 Risoluzione di sistemi lineari: metodi diretti 11


2.1 Analisi di stabilità . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Risoluzione di sistemi triangolari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.1 Calcolo dell’inversa di una matrice triangolare . . . . . . . . . . . . . . . . . . 18
2.3 Fattorizzazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3.1 Metodo di eliminazione di Gauss . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3.2 Fattorizzazione di Cholesky . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3.3 Analisi dell’errore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.4 Sistemi con matrice a banda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.4.1 Caso tridiagonale. L’algoritmo di Thomas . . . . . . . . . . . . . . . . . . . . 29
2.5 Applicazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3 Risoluzione di sistemi lineari: metodi iterativi 37


3.1 Metodi iterativi stazionari classici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.1.1 Metodo di Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.1.2 Metodo di Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.1.3 Risultati di convergenza per i metodi di Jacobi e Gauss-Seidel . . . . . . . . . 42
3.1.4 Il metodo di rilassamento successivo (SOR) . . . . . . . . . . . . . . . . . . . 44
3.1.5 Risultati di convergenza per il metodo SOR . . . . . . . . . . . . . . . . . . . 45
3.2 Gradienti coniugati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

4 La fattorizzazione QR 51
4.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.2 Ortogonalizzazione di Gram-Schmidt . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.3 Matrici ortogonali di trasformazione . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.3.1 Matrici di riflessione di Householder . . . . . . . . . . . . . . . . . . . . . . . 53
4.3.2 Rotazioni di Givens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

5 Problema dei minimi quadrati 58


5.1 L’equazione normale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.2 Fattorizzazione QR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3 Decomposizione in valori singolari . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

2
6 Problema agli autovalori 66
6.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6.2 Localizzazione e perturbazione di autovalori . . . . . . . . . . . . . . . . . . . . . . . 69
6.3 Il metodo delle potenze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.4 Metodo delle potenze inverse shiftate . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6.5 L’iterazione QR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.6 Autovalori ed il calcolo di radici di polinomi . . . . . . . . . . . . . . . . . . . . . . . 81

7 Radici di polinomi 83
7.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
7.2 Radici di polinomi ed autovalori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
7.3 Stabilità delle radici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

3
Notazione

In tutte le seguenti dispense la notazione adottata sarà la seguente:


ˆ Le lettere maiuscole (A, B, . . . ) saranno usate per indicare insiemi.

ˆ Le lettere maiuscole in grassetto (A, B, . . . ) saranno usate per indicare matrici. La compo-
nente di posizione (i, j) (i-esima riga e j-esima colonna) della matrice A sarà indicata con la
notazione Aij .
ˆ Le lettere minuscole (x, y, . . . ) saranno usate per indicare vettori, che sono sempre vettori
colonna. La componente i-esima del vettore x sarà indicata con la notazione xi oppure con
(x)i . Talvolta, e senza che venga fatta confusione, xk indicherà l’iterata k-esima di una
successione.
Le lettere quali i, j, k, l, n, m, . . . verranno usate come indici o per indicare dimensioni.
ˆ Le lettere greche (α, β, . . . ) saranno usate per indicare scalari.

Un altra eccezione è fatta quando il contesto non è il discreto, bensı̀ il continuo: funzioni,
variabili, ecc... verranno indicate nel modo consueto (f ,x, . . . ).

Testi di riferimento:

Metodi numerici per l’algebra lineare, D. Bini, M. Capovani, O. Menchi, Zanichelli 1988.

Analisi Numerica - metodi modelli applicazioni, V. Comincioli, McGraw-Hill 1995.


Applied Numerical Linear Algebra, J. W. Demmel, SIAM 1997.
Matrix computations, G. H. Golub e C. F. Van Loan, The Johns Hopkins University Press, 1996
e succ.

Accuracy and Stability of Numerical Algorithms, N. J. Higham, SIAM 1996.


Matematica Numerica, A. Quarteroni, R. Sacco, F. Saleri, III ed., Springer 2008 e succ.
Introduction to Numerical Analysis, J. Stoer, R. Bulirsch, II ed., Springer 1993 e succ.

4
Capitolo 1

Fondamenti della Matematica


Numerica

1.1 Buona posizione di un problema


Si consideri il seguente problema astratto: dati f funzione di x con f (x) = y, e x b vicino a x,
vogliamo capire quanto varierà f (b
x) al variare di x
b da x, cioè denotato yb = f (b
x), siamo interessati
a valutare yb − y.
Definizione 1.1.1 (Vicinanza (o distanza) in senso assoluto) Diremo che yb è vicino in sen-
so assoluto ad y se
|b
y − y| ≃ C(x)|b
x − x|, (1.1)
dove C(x) ∈ R è detto numero di condizionamento assoluto.
In prima approssimazione, per x b ̸= x, si ha
b in un intorno di x, con x
x) − f (x)
f (b
yb − y = f (b
x) − f (x) = x − x) ≃ f ′ (x)(b
(b x − x).
b−x
x
Si ha quindi
C(x) ≃ |f ′ (x)|.
Definizione 1.1.2 (Vicinanza (o distanza) in senso relativo) Diremo che yb è vicino in senso
relativo ad y se
|b
y − y| |b
x − x|
≃ κ(x) , (1.2)
|y| |x|
dove k(x) ∈ R è detto numero di condizionamento relativo.
In prima approssimazione, per x b ̸= x, si ha
b in un intorno di x, con x
yb − y x) − f (x)
f (b x) − f (x)
f (b x x xb−x
= = x − x)
(b ≃ f ′ (x) .
y f (x) b−x
x xf (x) f (x) x
Si ha quindi
x x
κ(x) ≃ f ′ (x) = f ′ (x) .
f (x) y

5
A differenza del numero di condizionamento assoluto, il numero di condizionamento relativo tiene
conto dell’ordine di grandezza di x e y.
Un problema, in questo caso la valutazione della funzione f , dipende con continuità dai dati se
per ogni x, x
b vicini, f (x) e f (b
x) sono anch’essi vicini (in senso assoluto o relativo), cioè se a piccole
variazioni dei dati, corrispondono piccole variazioni del risultato dell’operazione.
Definizione 1.1.3 (Buona posizione di un problema) Un problema si dice ben posto se di-
pende con continuità dai dati con un numero di condizionamento moderato. Si parlerà di ben
posizione (o buon condizionamento) assoluto o relativo a seconda della stima scelta. Un problema
si dirà invece mal posto quando non è ben posto.
Trattare numericamente un problema mal posto è molto difficile poichè la soluzione può variare
in modo imprevedibile anche per piccoli cambiamenti nelle osservazioni. Esistono tuttavia metodi
che permettono di riformulare un problema mal posto in uno ben posto.

Esempio 1.1.4 È data la funzione f (x) = x. Si ha f ′ (x) = 2√
1
x
, da cui
1 1
C(x) ≃ √ , e κ(x) ≃ .
2 x 2
In questo esempio quindi, la valutazione della funzione f è ben condizionata in senso relativo per
ogni x, mentre è mal condizionata in senso assoluto per x ≈ 0.
Esempio 1.1.5 È data la funzione f (x) = sin(x). Si ha f ′ (x) = cos(x), da cui
x cos(x)
C(x) ≃ | cos(x)| ≤ 1 e κ(x) ≃ .
sin(x)
Ne segue che C(x) è limitato ed il problema è ben posto in senso assoluto. D’altra parte κ(x) cresce
per x ≈ kπ, con 0 ̸= k ∈ Z. Infatti, per x = 6.2 ≈ 2π e x̂ = 6.2 + 0.01 si ha
|b
x − x|
= 1.6 · 10−3 ,
|x|
mentre
|f (b
x) − f (x)| | sin(bx) − sin(x)|
= = 0.11998.
|f (x)| | sin(x)|
Quindi ad una variazione dell’ordine di 10−3 nei dati, corrisponde una perturbazione dell’ordine di
10−1 nel risultato, cioè di . ben due ordini di grandezza superiore. Questo problema è quindi mal
condizionato in senso relativo, il che è ulteriormente confermato dal numero di condizionamento
relativo, κ(x) ≃ 74.36.
Esempio 1.1.6 È data la funzione f (x) = ln(x), in un intorno di 1. Si ha f ′ (x) = x1 , da cui
x
k(x) ≃ .
x ln(x)
Notiamo che per x = 1.01 e x
b = 1.015 si ha
|b
x − x| |f (b
x) − f (x)| | ln(b
x) − ln(x)|
= 4.9 · 10−3 , mentre = = 0.4962.
|x| |f (x)| | ln(x)|
Quindi anche in questo caso si perdono due ordini di grandezza e il numero di condizionamento
relativo calcolato è κ(x) ≃ 100.5,. Questo problema risulta mal condizionato in senso relativo.
Il significato di numero di condizionamento moderato cambierà da problema a problema e questo
concetto tornerà più volte anche in seguito.

6
1.2 Stabilità di metodi numerici
Consideriamo il problema ben posto
F (x, d) = 0, (1.3)
con x incognita e d che indica i coefficienti del problema (e.g., i dati del problema). Un metodo
numerico consiste nella risoluzione di una successione di equazioni

Fn (xn , dn ) = 0, n ≥ 1, (1.4)

con la sottintesa speranza che xn → x per n → ∞, ovvero che la soluzione numerica converga alla
soluzione esatta. Affinchè questo avvenga, è necessario che Fn ≈ F e dn ≈ d.
Definizione 1.2.1 (Metodo consistente) Supponendo che il dato d del problema (1.3) sia am-
missibile per Fn , un metodo numerico si dice consistente se

Fn (x, d) = Fn (x, d) − F (x, d) → 0, per n → +∞,

essendo x la soluzione di (1.3) corrispondente al dato d.

Definizione 1.2.2 (Metodo fortemente consistente) Un metodo numerico è detto fortemente


consistente se
Fn (x, d) = 0, ∀n,
e non solo per n → +∞.

In generale quindi, non saranno fortemente consistenti tutti quei metodi numerici ottenuti dal
troncamento di operazioni di passaggio al limite. Invece, sono fortemente consistenti i metodi che
provengono da strategie di punto fisso, cioè del tipo xn+1 = Φ(xn ), in quanto se Φ è una contrazione,
la soluzione esatta x soddisfa x = Φ(x).

Definizione 1.2.3 (Metodo numerico ben posto) Un metodo numerico si dice ben posto o
stabile se, per ogni n fissato,
1. Esiste xn in corrispondenza del dato dn ;
2. Il calcolo di xn in funzione di dn sia unico (o, più precisamente, riproducibile);

3. xn dipenda con continuità dai dati, cioè

∀µ > 0, ∃ Cn (µ, dn ) tale che ∀ δdn , ∥δdn ∥ < µ si ha ∥δxn ∥ ≤ Cn (µ, dn )∥δdn ∥,

dove δdn e δxn indicano rispettivamente la perturbazione su dn e xn .


La grandezza Cn (µ, dn ) è detta numero di condizionamento del metodo numerico. Nel caso il
problema sia posto nella forma x = f (d), cosicchè il metodo numerico possa essere scritto nella
forma xn = fn (dn ), Cn può essere espresso in termini dei numeri di condizionamento assoluto e
relativo (C e κ) visti in precedenza (si veda (1.1)-(1.2)).

Esempio 1.2.4 Si consideri la funzione f (a, b) = a + b. Si è visto che a causa degli errori di
arrotondamento, sulla macchina il problema della valutazione di questa funzione può essere mal
posto per a ≈ −b. Infatti, il calcolo di f può condurre alla cancellazione di cifre significative nella
rappresentazione del risultato.

7
L’obbiettivo ultimo dell’approssimazione numerica è, naturalmente, quello di costruire, attra-
verso problemi numerici del tipo (1.4), soluzioni xn che “si avvicinano” tanto più alla soluzione del
problema dato (1.3) quanto più n diventa grande. Tale concetto è formalizzato nella definizione
che segue.

Definizione 1.2.5 (Metodo convergente) Un metodo numerico Fn (xn , dn ) = 0, si dice conver-


gente se per ogni ϵ > 0, esiste n0 (ϵ) ed esiste δ(n0 , ϵ) > 0 tali che

∀ n > n0 (ϵ), ∀ dn : ∥d − dn ∥ < δ(n0 , ϵ) si ha ∥x(d) − xn (dn )∥ ≤ ϵ,

dove d e dn sono dati ammissibili rispettivamente per il problema (1.3) associato alla soluzione x(d)
e per il problema (1.4) associato alla soluzione xn .

La definizione sopra dice che un metodo numerico è convergente se la successione di valori {xn }
calcolati risolvendo il problema (1.4) tende a x per n → +∞. Non è detto che questa convergenza
avvenga in modo monotòno. Per il caso scalare, una stima dell’andamento della convergenza viene
fornita, per esempio, dall’errore assoluto

|x − xn |,

e dall’errore relativo
|x − xn |
, se x ̸= 0.
|x|
Siccome la soluzione x non è nota, in pratica bisogna utilizzare altri strumenti per monitorare la
convergenza. Vedremo in seguito alcuni esempi a seconda dei problemi specifici.

Teorema 1.2.6 (Teorema di equivalenza di Lax-Richtmyer) Sia dato un problema ben po-
sto, con dn → d per n → ∞. Allora, per approssimazioni numeriche consistenti, stabilità e
convergenza sono equivalenti.

Dim. Limitiamo la dimostrazione al caso lineare, dove quindi approssimiamo il problema Lx = d,


con x incognita, con il problema numerico Ln xn = dn .
⇒ . Supponiamo che il metodo sia stabile e ne proviamo la convergenza. Si ha, dn → d per
n → ∞. La consistenza dice che Ln x−d → 0 per n → +∞, da cui Ln x−Lx = Ln x−dn +dn −d → 0
per n → ∞. La stabilità implica che L−1 −1
n rimane uniformemente limitata, infatti da xn = Ln dn =
′ −1 ′ −1
fn (dn ) (x = f (d) è la forma esplicita del problema), si ha che f = Ln e ∥f ∥ = ∥Ln ∥ < ∞, per
quanto visto sul condizionamento di un problema. Quindi

x − xn = L−1 −1 −1 −1
n Ln x − Ln Lx + Ln Lx − Ln Ln xn

= L−1 −1
n (Ln x − Lx) + Ln (Lx − Ln xn )

= L−1 −1
n (Ln x − Lx) + Ln (d − dn ) → 0 per n → +∞.

Dato che Ln x − Lx → 0 e d − dn → 0 per n → +∞, segue x − xn → 0 per n → ∞, cioè il metodo


numerico è convergente.
⇐ . Supponiamo ora che il metodo numerico sia convergente e denotiamo con xn (d) la soluzione
di Ln x = d, e con xn (d + ∆d) quella di Ln x = d + ∆d. Allora

∥xn (d + ∆d) − xn (d)∥ = ∥xn (d + ∆d) − xn (d) + x(d + ∆d) − x(d + ∆d) + x(d) − x(d)∥
≤ ∥x(d) − xn (d)∥ + ∥x(d + ∆d) − x(d)∥ + ∥xn (d + ∆d) − x(d + ∆d)∥
≤ ϵ(1) (2)
n + C1 ∥∆d∥ + ϵn ,

8
dove la prima e la terza disuguaglianza nell’ultima espressione seguono rispettivamente dalla con-
vergenza di xn (d) e di xn (d + ∆d), mentre la seconda dalla ben posizione del problema Lx = d.
Quindi la perturbazione ∥xn (d + ∆d) − xn (d)∥ è controllata per n sufficientemente grande tale che
(i)
ϵn < ∥∆d∥, per i = 1, 2. □.
Quindi per un metodo numerico le parole chiave sono: accuratezza, stabilità ed efficienza. La
convergenza deve essere assicurata, infatti non avrebbe senso utilizzare un metodo non convergente,
ma il metodo deve essere anche stabile, quindi affidabile, ed efficiente, cioè non deve essere troppo
costoso in termini di tempo di macchina.

1.3 Sorgenti di errore nei modelli computazionali


Se consideriamo un problema della forma (1.3) e vogliamo risolverlo con un metodo numerico, allora
la soluzione effettivamente calcolata risolvendo
Fn (xn , dn ) = 0,
sarà una certa quantità xn che differirà dalla soluzione x di (1.3) per una certa quantità detta errore.
Si possono avere vari tipi di errore che contribuiscono ad aumentare la distanza tra la soluzione x
e la soluzione numerica xn :
ˆ Errori dovuti al modello matematico (per esempio, il modello rappresenta in modo non fedele
il problema fisico);
ˆ Errori nell’insieme dei dati (per esempio, i dati sono stati raccolti in modo non accurato);
ˆ Errori di troncamento nel modello numerico: ad esempio, quando si passa dal continuo al
discreto, oppure in presenza di passaggi al limite, questi vengono troncati per avere un numero
finito di passi;
ˆ Errori di arrotondamento (legati alla rappresentazione dei numeri nel calcolatore);
ˆ Errore computazionale (di responsabilità dell’analista numerico).
L’analisi dell’errore, e quindi l’analisi di stabilità di un metodo numerico, può essere fatta
seguendo diverse prospettive:
1. Analisi in avanti, in cui si stima l’errore (relativo o assoluto)
|x − xn |
|x − xn |, oppure ,
|x|
dovuto sia a perturbazioni nei dati, sia ad errori intrinseci al metodo numerico;
2. Analisi all’indietro, in cui ci si chiede per quali dati la soluzione calcolata xn sarebbe la
soluzione esatta. Quindi se
xn ≈ x,
ci chiediamo se esiste δdn tale che
Fn (xn , dn + δdn ) = 0.
Quindi |δdn | è detto errore assoluto all’indietro mentre |δdn |/|dn | errore relativo all’indietro.
L’idea di stimare l’errore all’indietro permette di interpretare l’errore stesso come perturba-
zione nei dati. L’avere un errore relativo più piccolo dell’errore nei dati da affidabilità al
risultato ottenuto. In pratica, si dirà che un metodo è stabile secondo l’analisi all’indietro se
xn è soluzione di un problema “vicino”, nel senso che δdn è piccolo, in qualche norma.

9
L’analisi in avanti e quella all’indietro sono due diverse modalità della cosiddetta analisi a
priori. Essa può essere applicata per indagare non solo la stabilità di un metodo numerico, ma
anche la convergenza di quest’ultimo alla soluzione del problema esatto (1.3). Si parlerà in questo
caso di analisi a priori dell’errore, e potrà ancora essere realizzata con la tecnica in avanti o con
quella all’indietro. Essa si distingue dalla cosiddetta analisi a posteriori dell’errore, la quale mira
a fornire una stima della bontà dell’approssimazione sulla base di quantità effettivamente calcolate
e disponibili, usando uno specifico metodo numerico. Tipicamente, nell’analisi a posteriori si stima
l’errore x − xn , che non è in generale disponibile a meno di non conoscere la soluzione esatta, in
funzione del residuo rn = F (xn , dn ).

Esempio 1.3.1 Consideriamo il sistema lineare Ax = b, con A matrice quadrata non singolare e
b termine noto. Per il sistema perturbato Ãx̃ = b̃, l’analisi in avanti fornisce una stima dell’errore
x − x̃ in funzione di A − Ã e di b − b̃. D’altra parte, l’analisi all’indietro stima le più piccole
perturbazioni δA e δb che dovrebbero essere imposte ai dati A e b in modo che risulti

(A + δA)b
x = b + δb,

dove x
b è una soluzione calcolata del sistema lineare originario con un metodo qualsiasi. Nell’analisi
a posteriori si cerca infine una stima dell’errore x − x
b in funzione del residuo r = b − Ab
x.

Definizione 1.3.2 (Metodo stabile all’indietro) Un metodo numerico si dice stabile all’indie-
tro (backward stable, in inglese) se ha un errore all’indietro piccolo.

Osserviamo quindi che con le definizioni date, si ha

errore in avanti ≲ n. cond. numerico × errore all’indietro.

Introduciamo infine altri due concetti chiave del calcolo numerico: la precisione e l’accuratezza.
Con la parola precisione ci si riferisce all’esattezza delle operazioni +, ×, . . . , con il termine accu-
ratezza ci si riferisce invece all’errore di una quantità approssimata. Nel caso di grandezze scalari,
i due concetti coincidono, mentre per calcoli vettoriali o matriciali l’accuratezza può essere molto
peggiore della precisione.

10
Capitolo 2

Risoluzione di sistemi lineari:


metodi diretti

Dato il sistema lineare1


Ax = b, (2.1)
n×n n
con A ∈ R non singolare e b ∈ R , esistono, in generale, due tipologie di metodi per la sua
risoluzione:
(i) Metodi diretti: prevedono la “trasformazione” del problema in uno più semplice da risolvere
in un numero finito di passi;
(ii) Metodi iterativi: costruiscono una successione di iterati xk ∈ Rn che, sotto opportune ipotesi,
convergono alla soluzione di (2.1).
In questo capitolo saranno trattati alcuni dei metodi della prima classe, mentre nel capitolo
successivo verranno discussi alcuni metodi iterativi.

2.1 Analisi di stabilità


In questa sezione introduciamo alcuni concetti e risultati sulla stabilità nell’approssimazione di
sistemi lineari. Questi risultati sono di particolare rilevanza nell’uso di metodi diretti. Nel caso di
metodi iterativi, si suppone che gli errori di approssimazione siano molto più grandi della precisione
di macchina. Nel seguito, u indica l’unità di round-off, u = 21 β 1−t con β base della rappresentazione
macchina (in generale, β = 2) e t numero di cifre della rappresentazione macchina.
Iniziamo con la definizione di norma di matrice, usata in modo sistematico in molti risultati
di analisi delle matrici e negli aspetti numerici. La definizione è presentata per matrici quadrate
complesse, ma può essere generalizzata al caso di matrici rettangolari, con opportune modifiche.

Definizione 2.1.1 Una funzione ∥·∥ : Cn×n → R è una norma di matrice se, per ogni A, B ∈ Cn×n
soddisfa le seguenti proprietà:
1. ∥A∥ ≥ 0 e ∥A∥ = 0 se e solo se A = 0, dove 0 indica la matrice nulla;
1 Per semplicità consideriamo sistemi lineari in R. Molti degli algoritmi e risultati discussi possono essere
generalizzati al caso complesso, con alcune semplici modifiche.

11
2. ∥αA∥ = |α| · ∥A∥ ∀α ∈ C;
3. ∥A + B∥ ≤ ∥A∥ + ∥B∥;
4. ∥AB∥ ≤ ∥A∥ ∥B∥, da cui discende ∥Am ∥ ≤ ∥A∥m , ∀m ∈ N.

La definizione può essere generalizzata al caso rettangolare, con le opportune modifiche sulle
dimensioni delle matrici. Le norme più usate nell’algebra lineare numerica sono:
 1/2
X
Norma di Frobenius: ∥A∥F :=  |Ai,j |2  ,
i,j
X
Norma ℓ1 e ℓ∞ : ∥A∥ℓ1 = |Aij |, ∥A∥ℓ∞ = maxi,j |Aij |.
i,j

∥Ax∥2
Norma-2: ∥A∥2 := max n ,
0̸=x∈R ∥x∥2
Per la norma diPFrobenius, notiamo che vale ∥A∥2F = trace(AH A), infatti posto A = [a1 , . . . , an ],
n
si ha che ∥A∥2F = j=1 ∥aj ∥22 , e la diagonale di AH A è proprio elementi uguali a ∥aj ∥22 , j = 1, . . . , n.
Come esercizio, verifichiamo che per la norma di Frobenius P vale la quarta proprietà. Scriviamo
n
AB = [Ab1 , . . . , Abn ] e A = [âH H 2
1 ; . . . ; ân ]. Quindi ∥AB∥F =
2
j=1 ∥Abj ∥2 , con

n
X n
X
∥Abj ∥22 = H 2
(âi bj ) ≤ ∥ai ∥2 ∥bj ∥2 = ∥A∥2F ∥bj ∥2 ,
i=1 i=1
Pn Pn
dove è stata usata la disuguaglianza di Schwarz. Quindi ∥AB∥2F = j=1 ∥Abj ∥22 ≤ j=1 ∥A∥2F ∥bj ∥2 =
Pn
∥A∥2F j=1 ∥bj ∥2 = ∥A∥2F ∥B∥2F .
Per la norma ℓ1 , si ha
n
X n
X n
X
∥AB∥ℓ1 = | Aik Bkj | ≤ |Aik Bkj | (2.2)
i,j=1 k=1 i,j,k=1
Xn Xn n
X
≤ |Aik Bmj | = ( |Aik |)( |Bmj |) = ∥A∥ℓ1 ∥B∥ℓ1 . (2.3)
i,j,k,m=1 i,k=1 j,m=1

Si noti che ∥A∥ℓ∞ non è una norma di matrice secondo la definizione data, in quanto non
soddisfa la quarta proprietà (In tal caso si parla di norma generalizzata, in alcuni casi di semi-
norma). Infatti, sia J = [1, 1; 1, 1]. Allora ∥J∥ℓ∞ = 1, e d’altra parte, 2 = ∥J 2 ∥ℓ∞ ≤ ∥J∥2ℓ∞ = 1,
che è un assurdo.
Oltre alla norma-2 descritta sopra, in generale la norma-p matriciale indotta dalla norma-p
vettoriale è definita da:
∥Ax∥p
∥A∥p := max n = max ∥Ax∥p .
0̸=x∈C ∥x∥p ∥x∥p =1
m
X
Altri esempi di norme matriciali indotte sono quindi la norma-1: ∥A∥1 := max |Ai,j |, e la
j=1,...,n
i=1
n
X
norma-∞: ∥A∥∞ := max |Ai,j |,.
i=1,...,m
j=1
Presentiamo ora alcune delle principali proprietà delle norme di matrice:

12
1. Se ∥ · ∥ è una norma matriciale indotta, allora

∥Ax∥ ≤ ∥A∥ ∥x∥, ∀x ∈ Cn ;

2. Se ∥ · ∥ è una norma matriciale indotta, allora ∥I∥ = 1 dove I indica la matrice identità. Per
una qualsiasi norma matriciale vale ∥I∥ ≥ 1 (infatti , ∥I∥ = ∥I2 ∥ ≤ ∥I∥ ∥I∥ da cui segue 1 ≤ ∥I∥);
3. ∥A−1 ∥ ≥ 1
∥A∥ con A matrice quadrata invertibile e ∥ · ∥ una qualsiasi norma matriciale.

La proprietà 2 mostra che la norma di Frobenius non può essere una norma indotta, infatti se
I ∈ Rn×n indica la matrice identità di dimensione n, allora

∥I∥F = n ̸= 1 per n > 1.

Se A è una matrice reale n × n simmetrica (A = AT ) e definita positiva, cioè soddisfa xT Ax > 0


per ogni 0 ̸= x ∈ Rn , allora è possibile definire la norma energia (o norma-A) per un vettore x ∈ Rn :
1
∥x∥A := (xT Ax) 2 .

Il seguente Lemma è uno strumento molto utile per le stime degli errori.

Lemma 2.1.2 Sia ∥·∥ una norma matriciale indotta e sia A ∈ Rn×n matrice con ∥A∥ < 1. Allora
la matrice I + A è non singolare, e vale
1
∥(I + A)−1 ∥ ≤ .
1 − ∥A∥

Dimostrazione. Per ∥A∥ < 1 si ha che |λ| < 1 per ogni autovalore λ di A. Infatti

∥Ax∥
∥A∥ = max < 1,
x̸=0 ∥x∥

e se λ
b è autovalore di A con autovettore x
b si ha che

∥Abx∥ ∥λb
b x∥
1> = = |λ|.
b
∥b
x∥ ∥b
x∥

Questo significa che I+A non ha autovalori nulli e quindi non è singolare. Da (I+A)(I+A)−1 = I,
segue che (I + A)−1 = I − A(I + A)−1 , da cui, essendo ∥I∥ = 1, segue

∥(I + A)−1 ∥ = ∥I − A(I + A)−1 ∥ ≤ ∥I∥ + ∥A(I + A)−1 ∥ ≤ 1 + ∥A∥ ∥(I + A)−1 ∥.

Portando a sinistra il termine ∥A∥ ∥(I + A)−1 ∥ e raccogliendo, otteniamo

(1 − ∥A∥)∥(I + A)−1 ∥ ≤ 1,

da cui segue il risultato per 1 − ∥A∥ > 0. □

Definizione 2.1.3 (Numero di condizionamento di una matrice) Sia A ∈ Rn×n non singo-
lare. Si dice numero di condizionamento di A il numero reale

κ(A) = ∥A∥ ∥A−1 ∥,

con ∥ · ∥ norma di matrice. Inoltre vale κ(A) ≥ 1.

13
Nel sequente risultato viene mostrato che 1/κ(A) è una ottima misura della distanza di A
dall’essere una matrice singolare.

Proposizione 2.1.4 Sia A ∈ Rn×n non singolare e ∥ · ∥ norma matriciale indotta. Allora
 
∥δA∥ 1
min / A + δA è singolare = . (2.4)
∥A∥ κ(A)

Dimostrazione. Poichè κ(A) = ∥A∥ ∥A−1 ∥, mostrare l’uguaglianza (2.4) equivale a mostrare
che
1
min {∥δA∥ / A + δA è singolare } = ,
∥A−1 ∥
1
Dal Lemma 2.1.2 segue che se ∥A−1 ∥ ∥δA∥ < 1, cioè se ∥δA∥ < , allora I + A−1 δA è non
∥A−1 ∥
singolare, da cui anche A + δA è non singolare. Quindi, affinchè A + δA sia singolare, deve valere
∥A−1 ∥ ∥δA∥ ≥ 1, cioè ∥δA∥ ≥ ∥A1−1 ∥ .
È possibile quindi costruire una matrice δA che raggiunga l’uguaglianza: sia x ∈ Rn tale
che ∥x∥ = 1 e tale che ∥A−1 ∥ = ∥A−1 x∥, cioè x = argmax∥x∥=1 ∥A−1 x∥. Inoltre, sia y :=
A−1 x A−1 x
−1
= , cosicchè ∥y∥ = 1. Quindi
∥A x∥ ∥A−1 ∥

xy T
δA := − ,
∥A−1 ∥
e si ha
∥δAz∥ ∥xy T z∥ ∥x∥ |y T z|
∥δA∥ = max = max −1
= −1
max . (2.5)
z̸=0 ∥z∥ z̸=0 ∥A ∥ ∥z∥ ∥A ∥ z̸=0 ∥z∥
T
Si ha |y∥z∥z| = | cos θ|, dove θ è l’angolo compreso tra y e z. Quindi il massimo, cioè 1, si ottiene
per z = αy, con α ̸= 0. Quindi, siccome ∥x∥ = 1, vale ∥δA∥ = 1/∥A−1 ∥. Rimane da mostrare che
A + δA è singolare. Infatti si ha: (A + δA)y = Ay + δAy = x/∥A−1 ∥ − x(y T y)/∥A−1 ∥ = 0. □
Per il calcolo quantitativo ed anche qualitativo di κ2 (A), per A simmetrica vale il seguente
risultato,
|λmax |
κ2 (A) = ,
|λmin |
dove λmax = arg maxλ∈spec(A) |λ| e λmin = arg minλ∈spec(A) |λ| indicano rispettivamente l’autovalore
più grande e quello più piccolo in modulo di A. Per dimostrare tale proprietà, mostriamo innanzi
tutto che ∥A∥ = λmax . Sia A = QΛQT la decomposizione spettrale di A simmetrica, con Q
ortogonale e Λ = diag(λ1 , . . . , λn ), matrice diagonale contenente gli autovalori di A. Si ha
∥Ax∥2
∥A∥2 = max = max ∥Ax∥2 = max ∥QΛQT x∥2 ,
x̸=0 ∥x∥2 ∥x∥2 =1 ∥x∥2 =1

Ricordando che una matrice ortogonale è un’isometria (cosicchè ∥Qx∥2 = ∥x∥2 ), si ha

∥A∥2 = max ∥QΛQT x∥2 = max ∥ΛQT x∥2 = max ∥Λy∥2 .


∥x∥2 =1 ∥QT x∥2 =1 ∥y∥2 =1

Essendo Λ diagonale, si ha direttamente


n
X n
X
∥Λy∥22 = λ2i yi2 ≤ max |λ|2 yi2 = max |λ|2 ∥y∥22 .
λ∈spec(A) λ∈spec(A)
i=1 i=1

14
Dunque
∥A∥2 ≤ max |λ| = |λmax |,
λ∈spec(A)

e il massimo viene raggiunto considerando l’autovettore x b di norma unitaria, ∥b


x∥2 = 1, associato a
λmax , poichè ∥Ab
x∥2 = ∥λmax x b∥2 = |λmax |. Abbiamo quindi mostrato che, per A simmetrica, si ha
∥A∥2 = |λmax |.
Avendosi inoltre che gli autovalori di A−1 sono i reciproci degli autovalori di A, si procede come
|λmax |
sopra per ottenere ∥A−1 ∥2 = |λmin1
| . In conclusione, κ2 (A) = ∥A∥2 ∥A
−1 1
∥2 = |λmax | |λmin | = |λmin | .

In particolare, questa proprietà mostra che κ2 (A) dipende da come sono raggruppati gli auto-
valori di A: più sono raggruppati, più si riduce la distanza relativa tra λmax e λmin che implicherà
un più basso numero di condizionamento.
Come già detto, un metodo numerico per la risoluzione del sistema lineare (2.1) genera una
soluzione x + δx tale che
(A + δA)(x + δx) = b + δb, (2.6)
per qualche perturbazione δA, δb. Il prossimo risultato fornisce una stima dell’errore relativo atteso,
∥δx∥/∥x∥, (quindi un errore in avanti) in funzione della perturbazione dei dati. Il risultato evidenzia
il ruolo di κ(A) nella perturbazione della soluzione.

Teorema 2.1.5 Sia A ∈ Rn×n non singolare e sia δA ∈ Rn×n tale che ∥A−1 ∥ ∥δA∥ < 1 con
∥ · ∥ norma indotta. Se x ∈ Rn è soluzione del sistema lineare (2.1) e δx ∈ Rn è tale che valga
l’equazione (2.6), allora  
∥δx∥ κ(A) ∥δb∥ ∥δA∥
≤ + . (2.7)
∥x∥ 1 − κ(A) ∥δA∥ ∥b∥
∥A∥
∥A∥

Dimostrazione. La condizione ∥A−1 ∥ ∥δA∥ < 1 implica che A + δA sia non singolare. Questo
si deduce dalla Proposizione 2.1.4, oppure, direttamente, dal seguente ragionamento:

A + δA = A(I + A−1 δA),

dove ∥A−1 δA∥ ≤ ∥A−1 ∥ ∥δA∥ < 1. Quindi il Lemma 2.1.2 implica che I + A−1 δA è non singolare.
Dato che A è non singolare per ipotesi, si ha che anche A + δA è non singolare.
Ora sia x soluzione di (2.1), cioè Ax = b. Sostituendo questa relazione nell’equazione (2.6) si
ottiene
Aδx + δA(x + δx) = δb, ⇒ (A + δA)δx = δb − δAx,
da cui, moltiplicando per A−1 ,

(I + A−1 δA)δx = A−1 (δb − δAx).

Grazie al Lemma 2.1.2, vale


1 1
∥(I + A−1 δA)−1 ∥ ≤ −1
≤ −1
.
1 − ∥A δA∥ 1 − ∥A ∥ ∥δA∥

(la seconda disugaglianza segue da ∥A−1 δA∥ ≤ ∥A−1 ∥ ∥δA∥). Quindi,

∥A−1 ∥  
˙ + ∥δb∥ .
∥δx∥ = ∥(I + A−1 δA)−1 A−1 (δb − δAx)∥ ≤ −1
∥δA∥∥x∥ (2.8)
1 − ∥A ∥ ∥δA∥

15
1 ∥A∥
Ricordando che b = Ax, si ha ∥b∥ ≤ ∥A∥ ∥x∥ per qualsiasi norma indotta, cioè ≤ .
∥x∥ ∥b∥
Dividendo quindi la disuguaglianza (2.8) per ∥x∥ e raccogliendo ∥A∥ si ottiene

∥A−1 ∥ ∥A−1 ∥ ∥A∥


   
∥δx∥ ∥δb∥ ∥δA∥ ∥δb∥
=≤ ∥δA∥ + ≤ + .
∥x∥ 1 − ∥A−1 ∥ ∥δA∥ ∥x∥ 1 − ∥A−1 ∥ ∥δA∥ ∥A∥ ∥b∥

∥δA∥
Il risultato è ottenuto osservando che ∥A−1 ∥ ∥δA∥ = κ(A) . □
∥A∥
Il risultato fornisce un esempio di relazione tra l’errore in avanti e l’errore all’indietro, come
descritto nel capitolo precedente. Infatti si verifica che l’errore relativo in avanti, ∥δx∥/∥x∥ è
maggiorato dall’errore all’indietro, moltiplicato per il numero di condizionamento della matrice.
In generale il Teorema 2.1.5 può fornire stime pessimistiche di ∥δx∥, anche se ci sono esempi di
matrici, come il seguente, per i quali la stima è raggiunta, almeno qualitativamente.

Esempio 2.1.6 La matrice di Hilbert è definita come

1 12 1
 
3 ...
 1 1 1 .. 
1 
 2 3 4
. 
Hi,j = , Hn =   ∈ Rn×n .

i+j−1  1 1 1 ..
 3 4 5
. 

.. . . .. ..
. . . .

La matrice di Hilbert è molto mal condizionata al crescere della dimensione. Ad esempio, se


consideriamo la norma-2, per n = 4 si ha κ2 (H4 ) = 1.551 · 104 , e già per n = 8, si ha κ2 (H8 ) =
1.526 · 1010 . In generale si ha κ2 (Hn ) ≈ e3.5n per n sufficientemente grande.
Con la matrice H8 , consideriamo H8 x = b con b = (1, . . . , 1)T ∈ R8 . Supponiamo che sia la
matrice che il termine noto vengano perturbati,

H
b 8 = H8 + δH8 , bb = b + δb,

dove δH8 = 10−11 · E, δb = 10−11 e con E ed e matrice e vettore di numeri casuali presi da una di-
stribuzione normale (funzione randn in Matlab). Un calcolo diretto mostra che ∥δH8 ∥ ≈ 6.6·10−11 ,
e ∥δb∥ ≈ 2.4·10−11 , quindi entrambe sono perturbazioni piuttosto piccole. Siccome ∥δH8 ∥ ∥H−1 8 ∥=
6 · 10−1 < 1 è possibile applicare il Teorema 2.1.5, il quale prevede una perturbazione nella solu-
zione finale del tipo ∥δx∥ ∥δx∥
∥x∥ < 4.72. In effetti il calcolo diretto mostra che ∥x∥ = 0.0708 . . ., quindi
leggermente minore della stima fornita dal teorema, ma comunque di quasi 10 ordini di grandezza
superiore alla perturbazione dai dati.

Corollario 2.1.7 Nelle ipotesi del Teorema 2.1.5, se δA = 0, allora


1 ∥δb∥ ∥δx∥ ∥δb∥
≤ ≤ κ(A) .
κ(A) ∥b∥ ∥x∥ ∥b∥
Dimostrazione. Dimostriamo solo la prima disuguaglianza in quanto la seconda segue diretta-
mente dalla (2.7) per δA = 0. Dalla relazione Aδx = δb discende

∥δb∥ ≤ ∥A∥ ∥δx∥.

Moltiplicando ambo i membri per ∥x∥ e ricordando che ∥x∥ ≤ ∥A−1 ∥ · ∥b∥, si ha

∥x∥ ∥δb∥ ≤ κ(A)∥b∥ ∥δx∥,

16
e quindi la disuguaglianza desiderata. □
Nell’interesse algoritmico, in generale ∥δb∥ e ∥δA∥ dipendono dal troncamento avvenuto durante
la rappresentazione dei dati sulla macchina e dovranno essere stimati in funzione delle caratteristiche
dell’aritmetica finita utilizzata. È quindi ragionevole supporre che le perturbazioni relative sui dati
soddisfino
∥δb∥ ∥δA∥
< γ, < γ,
∥b∥ ∥A∥
con γ costante “piccola”, cioè si suppone che la perturbazione nel dato sia significativamente più
piccola della norma del dato stesso. Si considera spesso γ = β 1−t dove β è la base della rap-
presentazione dei numeri macchina (in generale, β = 2) e t il numero di cifre significative della
rappresentazione stessa.

2.2 Risoluzione di sistemi triangolari


È dato il sistema lineare
Lx = b, (2.9)
dove la matrice dei coefficienti L è triangolare inferiore (dove “L” sta per Lower triangular ) cioè
della forma  
L11
 L21 L22 
L= . .
 
 .. ..
... . 
Ln1 . . . . . . Lnn
La condizione di non singolarità di L è assicurata da Lii ̸= 0, ∀i. Per risolvere il sistema lineare
(2.9), è possibile calcolare le componenti del vettore x in modo sequenziale, con il metodo delle
sostituzioni in avanti :
b1
x1 = ,
L11
1
x2 = (b2 − L21 x1 ) ,
L22
..
.  
i−1
1  X
xi = bi − Lij xj  , i = 3, . . . , n. (2.10)
Lii j=1

Considerazioni analoghe valgono per un sistema lineare Ux = b, con U matrice triangolare superiore
(“U” sta per Upper triangular). In questo caso, l’algoritmo per determinare le componenti del
vettore incognito x prende il nome di metodo delle sostituzioni all’indietro che, nel caso generale,
assume la seguente forma:
bn
xn = ,
Unn
..
.  
n
1  X
xi = bi − Uij xj  , i = n − 1, . . . , 1. (2.11)
Uii j=i+1

17
In entrambi i casi, l’i-esima componente del vettore x viene calcolata con (2(i−1)−1)+1+1 = 2i−1
operazioni floating point (flops). Questo significa che per la risoluzione di un sistema triangolare
n × n sono necessarie
n
X n(n + 1)
(2i − 1) = 2 − n = n2 flops.
i=1
2

Si può dimostrare che la soluzione trovata risolve il problema triangolare (assumendo δb = 0)


nu
(L + δL)x = b, con ∥δL∥F ≤ ∥L∥F , (2.12)
1 − nu
o in alternativa, ∥δL∥F ≤ nu∥L∥F + O(u2 ). Quindi se ∥δL∥F è piccola, la soluzione calcolata risolve
un problema vicino, e quindi il metodo è stabile per l’analisi dell’errore all’indietro. Se nuκF (L) < 1,
allora
∥δx∥F nuκF (L)
≤ .
∥x∥F 1 − nuκF (L)
Tale risultato mostra che la perturbazione nella soluzione è piccola (quindi un piccolo errore in
avanti), se il problema è ben posto.

2.2.1 Calcolo dell’inversa di una matrice triangolare


L’algoritmo descritto in (2.10) può essere adattato per il calcolo esplicito dell’inversa di una matrice
triangolare inferiore L. Infatti, osserviamo che se vi indica l’i-esimo vettore colonna dell’inversa,
L−1 = [v1 , . . . , vn ], allora ogni colonna i dell’inversa è soluzione del seguente sistema lineare

Lvi = ei , i = 1, . . . , n, (2.13)

essendo {ei } la base canonica di Rn . A priori, questo comporta la risoluzione di n sistemi lineari
triangolari di dimensioni n × n. D’altra parte, per ogni i, le prime i − 1 componenti del vettore
vi = [v(1 : i−1); v(i : n)] sono nulle. Questo può essere visto confrontando i due lati dell’uguaglianza,
    
L1:i−1,1:i−1 0 v(1 : i − 1) 01:i−1
= ,
Li:n,1:i−1 Li:n,i:n v(i : n) e1

con ei = [01:i−1 ; e1 ], dove e1 qui ha dimensione n − i + 1. I sistemi rimanenti, Li:n,i:n v(i : n) = e1 ,


sono ancora triangolari inferiori ma di dimensioni k, k = i, . . . , n. Il costo computazionale per il
calcolo dell’inversa di una matrice triangolare inferiore è quindi
n
X n(n + 1)(2n + 1) n3
j2 = + O n2 .

=
j=1
6 3

Questa procedura può essere applicata anche per il calcolo dell’inversa di una matrice triangolare
superiore e, anche in questo caso, il numero di operazioni floating point previsto dall’algoritmo è
3
un n3 + O(n2 ).

2.3 Fattorizzazioni
È dato il sistema lineare Ax = b, con A ∈ Rn×n matrice invertibile e b ∈ Rn . Se A non ha una
struttura particolare, una procedura di risoluzione del sistema consiste nella fattorizzazione delle
matrice nel prodotto di due matrici, per le quali la risoluzione dei sistemi associati abbia un costo

18
computazionale più basso che per l’intera matrice. Supponendo che sia possibile determinare una
fattorizzazione del tipo A = BC, si risolveranno in sequenza i seguenti sistemi lineari:

i) By = b, ii) Cx = y. (2.14)

Alcuni esempi di fattorizzazioni sono:


ˆ Fattorizzazione LU:
A = LU,
dove L è triangolare inferiore mentre U è triangolare superiore. Questa fattorizzazione,
quando esiste, è ottenuta applicando l’algoritmo di eliminazione di Gauss;
ˆ Fattorizzazione di Cholesky:
A = LLT ,
dove L è triangolare inferiore e A è simmetrica e definita positiva. La fattorizzazione è
ottenuta applicando il metodo di Cholesky;
ˆ Fattorizzazione QR:
A = QR,
dove Q è unitaria e R è triangolare superiore. Questa fattorizzazione esiste per ogni matrice
A, anche rettangolare, ed è ottenuta mediante trasformazioni ortogonali, per esempio di
Householder, o mediante processi di ortogonalizzazione di Gram-Schmidt.
Il costo di queste fattorizzazioni è un O(n3 ) a cui va aggiunto il costo della risoluzione dei sistemi
in (2.14). In tutte le fattorizzazioni elencate, tale costo è O(n2 ) (nel caso della fattorizzazione QR,
la risoluzione del sistema con Q corrisponde all’operazione y = QT b, il cui costo è ancora O(n2 )).
Nel seguito di questo capitolo saranno trattate in dettaglio le fattorizzazioni LU e di Cholesky,
mentre la fattorizzazione QR verrà descritta nell’ambito dei problemi agli autovalori ed ai minimi
quadrati.

2.3.1 Metodo di eliminazione di Gauss


Consideriamo il sistema lineare
Ax = b, (2.15)
con A ∈ Rn×n e b ∈ Rn . Questa procedura determina una fattorizzazione di A,

A = LU,

con L ∈ Rn×n triangolare inferiore e U ∈ Rn×n triangolare superiore, chiamata fattorizzazione LU.
In particolare la procedura calcola direttamente la matrice U mentre solo implicitamente la matrice
L. Durante la riduzione verrà sfruttata in modo essenziale la proprietà per la quale sostituendo
un’equazione del sistema con la differenza tra l’equazione stessa ed un’altra, moltiplicata per una
costante non nulla, si ottiene un sistema equivalente (cioè con la stessa soluzione) a quello di
partenza.
Sia dunque la matrice A(1) := A ed indichiamo il sistema originario come

A(1) x = b(1) .
(1)
Supponendo che A11 ̸= 0, definiamo i seguenti moltiplicatori
(1)
Ai1
mi1 = (1)
, i = 2, 3, . . . , n,
A11

19
L’applicazione della strategia di eliminazione per gli elementi della prima colonna viene fatta
mediante la seguente operazione:
(2) (1) (1)
Aij = Aij − mi1 A1j , i = 2, . . . , n, j = 1, . . . , n (2.16)
(2) (1) (1)
bi = bi − mi1 b1 , i = 2, . . . , n,

che determina un nuovo sistema, equivalente a quello di partenza, della forma


 (1) (1) (1)
   (1) 
A11 A12 . . . A1n x1 b1
(2) (2)    (2) 
 0 x
A22 . . . A2n   2   b2 
 
(2) (2)
  ..  =  .  ⇔ A x = b . (2.17)
 . .. ..   
 .
 . . .   .   .. 
(2) (2) xn (2)
0 A n2. . . Ann bn

La procedura quindi ha eliminato gli elementi della prima colonna, sotto la diagonale principale,
nella matrice risultante A(2) , mantenendo il sistema equivalente al precedente. Si noti che l’ope-
razione in (2.16) non è necessaria per i = 2 e j = 1, in quanto si sa a priori che gli elementi sotto
la diagonale, della prima colonna, saranno zero. Quindi in una tipica implementazione, entram-
bi gli indici sono definiti da 2 in poi, cioè i, j = 2, . . . n. Useremo questa notazione nel seguito.
Questo risparmio computazionale richiede comunque che al termine della procedura di eliminazione
di Gauss, gli elementi sotto la diagonale principale siano comunque scartati, perchè “logicamente”
zero.
(k)
Proseguendo in modo analogo, e supponendo Akk ̸= 0 per k = 1, . . . , i − 1, viene definito il
moltiplicatore
(k)
Aik
mik = (k) , i = k + 1, . . . , n,
Akk
e le nuove componenti
(k+1) (k) (k)
Aij = Aij − mik Akj , i, j = k + 1, . . . , n,

(k+1) (k) (k)


bi = bi − mik bk , i = k + 1, . . . , n.

Si otterrà una successione finita di sistemi lineari A(k) x = b(k) , k = 1, . . . , n, dove per k ≥ 2, la
matrice A(k) ha la forma seguente
 (1) (1) (1) 
A11 A12 ... ... ... A1n
(2) (2)

 0 A22 A2n 

 .. .. .. 

. . .

A(k) = .
 
(k) (k)
 0 ... 0 Akk ... Akn 
.. .. .. ..
 
 
 . . . . 
(k) (k)
0 ... 0 Ank ... Ann

Al termine delle n − 1 iterazioni, cioè per k = n, si ottiene un sistema triangolare superiore

A(n) x = b(n) , (2.18)

con U := A(n) triangolare superiore. Per risolvere il sistema (2.18) è possibile utilizzare il metodo
delle sostituzioni all’indietro con un costo computazionale di O(n2 ) flops, a cui va aggiunto il

20
costo della fattorizzazione. Il numero di operazioni floating point per portare a termine la k-esima
iterazione dell’eliminazione di Gauss è di n − k operazioni per il calcolo di mik , poi 2(n − k)(n − k)
operazioni per l’aggiornamento di A(k+1) , e 2(n − k) operazioni per l’aggiornamento di b(k) , per un
totale di (n − k) + 2(n − k)(n − k) + 2(n − k) = 2(n − k)2 + 3(n − k) operazioni al passo k. Il costo
totale della procedura di eliminazione è quindi:
n−1 n−1 n−1 n−1
! n−1
X
2
X
2
X
2
X X 2
[2(n − k) + 3(n − k)] = 2 n + k −2 nk + 3 (n − k) = n3 + O(n2 ).
3
k=1 k=1 k=1 k=1 k=1

Il processo di eliminazione di Gauss è equivalente ad una fattorizzazione del tipo A = LU.


La matrice U corrisponde a A(n) , mentre L non viene esplicitamente costruita. In effetti L viene
costruita implicitamente mediante i moltiplicatori mik definiti durante l’iterazione. Infatti, sia
   
1 0
 −m21 1   m21 
   
 −m31 0 1
(1)
M =  = I − m1 e1 , con m1 =  m31  ∈ Rn .
T
  
 .. .. . . . .   .. 
 . . . .   . 
−mn1 0 . . . 0 1 mn1

Analogamente, al k-esimo ciclo di eliminazione sia


 
1  
 ..  0
 0 .   ..

.
 
 .. .. ..   
 . . .  
 0 

(k)
M = 0  = I − mk eTk , con mk =  n
mk+1,k  ∈ R .
 
... 0 1

 
 0 ... 0 −mk+1,k 1
 
  . 

 . .. .. .. ..
  .. 
 ..

. . . . 
mnk
0 ... 0 −mnk 0 ... 1

Si verifica che
 
1
 .. 

 0 . 

 .. .. .. 
 . . . 
(k) −1
(M ) =  = I + mk eTk ,
 
 0 ... 0 1 

 0 ... 0 mk+1,k 1 

 .. .. .. .. .. 
 . . . . . 
0 ... 0 mnk 0 ... 1

infatti

(I − mk eTk )(I + mk eTk ) = I + mk eTk − mk eTk − (mk eTk )(mk eTk ) = I − mk (eTk mk ) eTk = I,
| {z }
=0

dove è stato sfruttato il fatto che mk ha componenti zero fino alla k-esima inclusa.
Scrivendo esplicitamente il prodotto M(1) A, si verifica che questo coincide con il calcolo in
(2.17), ed analogamente per M(1) b. Quindi si ha

M(1) Ax = M(1) b ⇔ A(2) x = b(2) .

21
In modo analogo si verifica che

M(n−1) M(n−2) · · · M(2) M(1) A = A(n) (2.19)

con A(n) = U, e
M(n−1) M(n−2) · · · M(2) M(1) b = b(n) . (2.20)
Sia L−1 := M(n−1) M(n−2) · · · M(2) M(1) ; questa matrice è triangolare inferiore, in quanto prodotto
di matrici triangolari inferiori, e anche non singolare, poichè tutti i suoi elementi diagonali sono
diversi da zero (sono tutti 1). La matrice L cercata è quindi data da

L = (M(1) )−1 (M(2) )−1 · · · (M(n−2) )−1 (M(n−1) )−1


n−1
X
= (I + m1 eT1 )(I + m2 eT2 ) · · · (I + mn−1 eTn−1 ) = I + mi eTi ,
i=1

dove l’ultima uguaglianza è ottenuta osservando che (mi eTi )(mj eTj ) = 0, ∀ i < j. Dunque, sotto
la diagonale principale, la matrice L contiene tutti i moltiplicatori della procedura di eliminazione.
Dalla (2.19) si ottiene L−1 A = A(n) = U, cioè A = LU.
(k)
La procedura vista fino ad ora può essere applicata solo sotto l’ipotesi restrittiva che Akk ̸= 0,
come appare evidente nell’esempio che segue.

Esempio 2.3.1 Consideriamo la matrice


 
1 2 3
A= 2 4 5 .
7 8 9

Dopo il primo ciclo di eliminazione,


 
1 2 3
A(2) = 0 0 −1  ,
0 −6 −12
(2)
e la procedura si ferma poichè A22 = 0.

Il seguente teorema dà condizioni sufficienti per l’esistenza ed unicità della fattorizzazione LU
di A.

Teorema 2.3.2 Sia A ∈ Rn×n e siano Ak le sue sottomatrici principali dominanti di dimensione
k × k. Se Ak è non singolare per k = 1, . . . , n − 1 allora esiste ed è unica la fattorizzazione LU di
A in cui gli elementi diagonali della matrice L sono tutti 1.

Dimostrazione. Si procede per induzione su n.


Sia n = 1. Allora A = (A11 ) e quindi L = 1, e U = A11 , univocamente determinati.
Sia ora n = k > 1. Allora
 
Ak−1 d
Ak = , d, c ∈ Rk−1 , α ∈ R. (2.21)
cT α

Per ipotesi induttiva si ha Ak−1 = Lk−1 Uk−1 non singolare. Siano quindi
   
Lk−1 0 Uk−1 v
Lk := , Uk := ,
uT 1 0 β

22
con u, v ∈ Rk−1 e β ∈ R da determinare. Dal confronto tra Ak e
 
Ak−1 Lk−1 v
Lk Uk = ,
uT Uk−1 uT v + β

si ottiene
Lk−1 v = d, uT Uk−1 = cT , uT v + β = α.
Essendo Lk−1 e Uk−1 non singolari per ipotesi, u, v, e β sono univocamente determinati. □
Si noti che la fattorizzazione LU può esistere anche se A è singolare. La singolarità di A si
rifletterà nella singolarità di U.
Nonostante i fattori della decomposizione LU siano strettamente legati alla matrice che deter-
minano, alcune buone proprietà di A possono non essere trasmesse ai fattori, come mostrato nel
seguente esempio.

Esempio 2.3.3 Sia


10−4
 
1
A= .
1 1
Un calcolo diretto mostra che κ(A) ≈ 4, e quindi la matrice è ben condizionata. L’eliminazione di
Gauss determina la matrice
10−4
 
1
U= ,
0 1 − 104
il cui numero di condizionamento è κ(U) ≈ 108 , cioè la matrice U è molto mal condizionata. Siccome
A = LU, sarebbe auspicabile che questa relazione si riflettesse anche sui numeri di condizionamento,
cioè che si avesse qualcosa del tipo κ(A) ≈ κ(L), κ(U), cosa che in questo caso non avviene.

Per poter applicare l’eliminazione di Gauss ad una classe di matrici molto più ampia, e per
migliorarne le proprietà di condizionamento, è necessario introdurre operazioni di permutazione di
righe e/o colonne della matrice di partenza.

Definizione 2.3.4 (Matrice di permutazione) Si dice matrice di permutazione una matrice


ottenuta permutando le righe o le colonne della matrice identità.

Esempio 2.3.5 Data la matrice identità I ∈ R3×3 , esempi di matrice di permutazione sono dati
dalle matrici    
0 1 0 0 0 1
Π =  1 0 0 , Π =  0 1 0 .
0 0 1 1 0 0

Il seguente risultato mostra che è sempre possibile determinare una fattorizzazione LU di una
matrice permutata di A.

Teorema 2.3.6 Sia A ∈ Rn×n . Allora esiste una matrice di permutazione Π per cui si può
ottenere la fattorizzazione LU di ΠA, cioè ΠA = LU.

Dimostrazione. La dimostrazione procede per induzione su n.


Sia n = 1. Come nella dimostrazione del Teorema 2.3.2, si ha L = 1 e U = A11 , da cui Π = 1.
Sia ora n = k > 1, e si hanno due possibilità: i) La matrice A ha tutta la prima colonna nulla,
cioè è della forma
cT
 
0
A= ,
0 Ak−1

23
dove 0 ∈ Rk−1 indica il vettore nullo e Ak−1 è la sottomatrice (k − 1) × (k − 1) di A. Allora, per
ipotesi induttiva, esistono Πk−1 , Lk−1 e Uk−1 tali che

Πk−1 Ak−1 = Lk−1 Uk−1 .

Quindi
0T cT cT
      
1 0 1 0
A= = .
0 Πk−1 0 Πk−1 Ak−1 0 Lk−1 Uk−1
| {z } | {z }| {z }
Π L U

ii) La seconda possibilità è che non tutta la prima colonna di A sia nulla. Sia quindi i tale che
α := Ai1 ̸= 0 e sia Π′ la matrice di permutazione definita permutando la prima e la i-esima riga
della matrice identità. Quindi

cT 1 0T cT
    
α α
Π′ A = = ,
d Ak−1 g Ik−1 0 Bk−1

dove c, d, g, 0 ∈ Rk−1 e Bk−1 ∈ R(k−1)×(k−1) , e g e Bk−1 sono da determinare. Perchè la fattorizza-


zione sia corretta, dev’essere (calcolando il prodotto esplicitamente), gα = d e gcT + Bk−1 = Ak−1 ,
da cui segue
1 1
g = d, Bk−1 = Ak−1 − dcT .
α α
Per ipotesi induttiva, essendo Bk−1 di dimensioni (k − 1) × (k − 1), esiste Πk−1 tale che

Πk−1 Bk−1 = Lk−1 Uk−1 ⇒ Bk−1 = ΠTk−1 Lk−1 Uk−1 ,

(Πk−1 è una matrice ortogonale, quindi Π−1 T


k−1 = Πk−1 ). Si ha quindi

0T 0T cT
   
′ 1 1 α
ΠA = T
g Ik−1 0 Πk−1 Lk−1 0 Uk−1

0T cT
  
1 α
= T
g Πk−1 Lk−1 0 Uk−1

0T 0T cT
   
1 1 α
= ,
0 ΠTk−1 Πk−1 g Lk−1 0 Uk−1

da cui

0T 0T cT
    
1 ′ 1 α
Π A= . □
0 Πk−1 Πk−1 g Lk−1 0 Uk−1
| {z } | {z }| {z }
Πk Lk Uk

La matrice Π non è unica (vedi Esempio 2.3.7). La scelta delle permutazioni da applicare è
guidata dalla ricerca dell’elemento più grande della colonna, per assicurare la migliore stabilità
(si veda la sezione 2.3.3). Il coefficiente cosı̀ trovato, che verrà posizionato sulla diagonale della
matrice permutata, si chiama pivot, e la procedura prende il nome di pivoting parziale. Se la ricerca
dell’elemento più grande non si limita alla colonna k-esima in esame, ma spazia tra tutte le colonne
e righe dalla k-esima alla n-esima, allora si parla di pivoting completo (o totale). Nel caso il pivot
sia determinato in una colonna diversa dalla k-esima, allora è necessario scambiare le due colonne
della matrice, con conseguente permutazione della soluzione finale.

24
Il pivoting parziale comporta un costo addizionale di circa n2 flops da aggiungere al costo dell’e-
liminazione di Gauss standard (2n3 /3 + O(n2 )). Il pivoting completo ha un costo molto più elevato,
cioè di 2n3 /3, che comporta un considerevole aggravio del costo computazionale dell’eliminazione
di Gauss.

Esempio 2.3.7 Sia  


1 2 −1
A =  −1 −2 0  .
1 1 2
La sottomatrice principale 2 × 2 è singolare, per cui la fattorizzazione LU si bloccherà dopo la prima
iterazione con uno zero nel secondo elemento diagonale. D’altra parte, definendo
    
1 0 0 1 0 0 1 2 −1
Π =  0 0 1  , si ottiene ΠA =  1 1 0   0 −1 3  ,
0 1 0 −1 0 1 0 0 −1
oppure,
    
0 0 1 1 0 0 1 1 2
Π′ =  0 1 0 , con cui Π′ A =  −1 1 0  0 −1 2 .
1 0 0 1 −1 1 0 0 −1

Esempio 2.3.8 Richiamando l’Esempio 2.3.3, sia

10−4
 
1
A= ,
1 1

e un calcolo diretto mostra che κ(A) ≈ 4. Applicando l’eliminazione di Gauss con pivoting,
otteniamo la matrice  
1 1
U= ,
0 1 − 10−4
il cui numero di condizionamento κ(U) ≈ 4. Abbiamo quindi mostrato come la strategia di pivoting
riesca a ridurre gli errori di arrotondamento: nell’Esempio 2.3.3, applicando l’eliminazione di Gauss
senza pivoting, ottenevamo una matrice U con un grande numero di condizionamento.

2.3.2 Fattorizzazione di Cholesky


Definizione 2.3.9 (Matrice simmetrica definita positiva, s.d.p.) Sia A ∈ Rn×n una matri-
ce simmetrica. Si dice che A è definita positiva se xT Ax > 0 per ogni 0 ̸= x ∈ Rn .

La notazione usata per indicare una matrice simmetrica e definita positiva è anche A > 0.

Lemma 2.3.10 Una matrice simmetrica A è definita positiva se e solo se i determinanti di tutte
le sue sottomatrici principali dominanti (“di testa”) sono positivi.

Se A è s.d.p., allora i suoi elementi diagonali siano tutti positivi: (A)ii > 0 ∀i, dato che
Aii = eTi Aei dove ei è lo i-esimo elemento della base canonica. Con un ragionamento analogo si
dimostra che A è definita positiva se e solo se i suoi autovalori (tutti reali) sono positivi.
Nel caso in cui la matrice dei coefficienti A di (2.15) sia simmetrica e definita positiva, la
fattorizzazione LU si semplifica, dando luogo ad una fattorizzazione simmetrica A = L bLb T con L
b
triangolare inferiore (con diagonale non necessariamente unitaria), detta fattorizzazione di Cholesky.

25
Teorema 2.3.11 [Fattorizzazione di Cholesky] Sia A ∈ Rn×n simmetrica e definita positiva.
Allora esiste ed è unica la fattorizzazione A = L
bLb T , dove L
b è triangolare inferiore, non singolare
con L
b ii > 0.

Dimostrazione. Il risultato del Lemma 2.3.10 assicura che esiste ed è unica la fattorizzazione
LU di A, A = LU. Sia D la matrice diagonale avente sulla diagonale gli elementi diagonali della
matrice U, cioè D = diag(U). Quindi

A = LD(D−1 U) = LDR, dove R = D−1 U.

Si noti che R cosı̀ definita è una matrice triangolare superiore avente diagonale unitaria. Essendo
A simmetrica, vale
LDR = A = AT = (LDR)T = RT DLT ,
e per l’unicità della decomposizione deve valere RT = L e DR = DLT , quindi dev’essere R = LT ,
da cui A = LDLT , con D diagonale. Mostriamo infine che D > 0. Sia x ̸= 0, allora per A > 0
vale 0 < xT Ax = xT LDLT x = y T Dy, dove è stato posto y = LT x ̸= 0. Dunque

A = LDLT = LD1/2 D1/2 LT = L


bLbT , b := LD1/2 . □
con L

In effetti il Teorema 2.3.11 è una doppia implicazione: se è possibile determinare L


b non singolare
T
tale che A = L bLb , allora la matrice simmetrica A è anche definita positiva. Infatti, per x ̸= 0 si ha
xT Ax = xT L b T x = ∥L
bL b T x∥2 ≥ 0. Siccome L b T x∥2 > 0, da cui segue
b è non singolare, segue che ∥L
che A > 0.
Il fattore L
b può essere determinato in modo costruttivo, da cui segue l’effettivo algoritmo. Nel

b≡L
seguito riportiamo il primo passo: sia n = 1, allora L b 11 = A11 . Sia allora n > 1. Scriviamo
  √  √ 1
A11 v T vT
  
A11 0 1 0 A11 √A
A= = √1 v
11 ,
v A2 A
I 0 Ã2 0 I
11

1
con v ∈ Rn−1 , e Ã2 = A2 − vv T ∈ R(n−1)×(n−1) . Si noti che Ã2 è ancora s.d.p.. Infatti,
A11
scrivendo il prodotto sopra come A = LDLT con D = diag(1, Ã2 ), si ha che per x ̸= 0 e y =
LT x ̸= 0 vale 0 < xT Ax = (xT L)D(LT x) = y T Dy, per cui D è definita positiva, da cui segue che
anche Ã2 è definita positiva (si noti che L è non singolare perchè ha diagonale con elementi tutti
non nulli). Per ipotesi induttiva si può quindi scrivere Ã2 = L̃L̃T . Si ha dunque che
  √  √ 1
A11 v T vT
   
A11 0 1 0 1 0 A11 √A
A= = √1 v
11 .
v A2 A11
I 0 L̃ 0 L̃T 0 I

La matrice L
b cercata è
√ !
b≡ A11 0
L √1 v
.
A

11

Usando la procedura appena descritta, si può ricavare il seguente algoritmo di Cholesky,


Algoritmo di Cholesky
For j = 1, . . . , n, P
Lb jj = (Ajj − j−1 L b 2 1/2 ,
k=1 jk )
For i = j + 1, . . . , n,
b ij = (Aij − Pj−1 L
L k=1 ik Ljk )/Ljj ,
b b b
end

26
end
Il costo computazionale dell’algoritmo è di 13 n3 + O(n2 ) operazioni floating point. Questo costo
va confrontato con quello della fattorizzazione LU: la fattorizzazione di Cholesky costa la metà sia
in termini di operazioni, che in termini di memoria, in quanto viene memorizzata una sola matrice
triangolare. L’algoritmo di Cholesky non richiede alcuna strategia di pivoting, in quanto si dimostra
che la fattorizzazione risulta essere già stabile.
Se la matrice A è simmetrica
q ma non definita positiva, l’algoritmo si interrompe, in quanto non
è possibile determinare L b ii per qualche i = 1, . . . , n − 1.
L’algoritmo di Cholesky può essere usato come procedura poco costosa per verificare se una
matrice simmetrica A è definita positiva: se la fattorizzazione si blocca per un elemento diagonale
non positivo, significa che A non è definita positiva.
Esiste una fattorizzazione di “tipo Cholesky” anche per matrici simmetriche ma non definite
positive: ΠAΠT = LDLT , dove D in generale è una matrice diagonale a blocchi, con blocchi
simmetrici 1 × 1 o 2 × 2, ma non necessariamente definiti positivi.

2.3.3 Analisi dell’errore


In questa sezione analizziamo le proprietà di stabilità della fattorizzazione LU.

Teorema 2.3.12 Sia A ∈ Rn×n e siano L̃ = L + δL, e Ũ = U + δU, i fattori della decomposizione
LU di A effettivamente calcolati. Allora

L̃Ũ = A + E, con ∥E∥F ≤ 2nu(∥A∥F + ∥L̃∥F ∥Ũ∥F ) + O(u2 n2 ).

Il risultato del Teorema, che non dimostriamo, mostra che i fattori calcolati rappresentano la
fattorizzazione esatta di una matrice “vicina” ad A, cioè A + E; viene inoltre fornita una stima di
tale vicinanza, in termini della norma di E. La fattorizzazione è quindi stabile, nel senso dell’analisi
all’indietro, se ∥E∥F è piccola rispetto a ∥A∥F .

Teorema 2.3.13 Siano L̃ e Ũ come nel Teorema 2.3.12, e sia x̃ la soluzione del sistema lineare
L̃Ũx̃ = b. Allora x̃ è anche soluzione del sistema

(A + δA)x̃ = b, dove ∥δA∥F ≤ 4nu(∥A∥F + ∥L̃∥F ∥Ũ∥F ) + O(u2 n2 ).

Dimostrazione. La soluzione x̃ è ottenuta mediante la risoluzione a cascata di L̃y = b, e Ũx = ỹ.


Grazie a (2.12), ỹ risolve il sistema

(L̃ + EL̃ )ỹ = b, dove ∥EL̃ ∥F ≤ nu∥L̃∥F , (2.22)

e x̃ risolve il sistema
(Ũ + EŨ )x̃ = ỹ, dove ∥EŨ ∥F ≤ nu∥Ũ∥F . (2.23)
Combinando (2.22) e (2.23) si ottiene (L̃ + EL̃ )(Ũ + EŨ )x̃ = b. Svolgendo il prodotto matriciale si
ottiene
(L̃Ũ + L̃EŨ + EL̃ Ũ + EL̃ EŨ )x̃ = b.
Dal Teorema 2.3.12, si ha che L̃Ũ = A + E e, definendo

δA := E + L̃EŨ + EL̃ Ũ + EL̃ EŨ ,

27
si ottiene che x̃ è soluzione del sistema (A + δA)x̃ = b, con

∥δA∥F ≤ ∥E∥F + ∥L̃∥F ∥EŨ ∥F + ∥EL̃ ∥F ∥Ũ∥F + ∥EL̃ ∥F ∥EŨ ∥F


≤ ∥E∥F + nu∥L̃∥F ∥Ũ∥F + nu∥L̃∥F ∥Ũ∥F + O(u2 n2 )
≤ 2nu(∥A∥ + ∥L̃∥F ∥Ũ∥F ) + 2nu∥L̃∥F ∥Ũ∥F + O(u2 n2 )
≤ 4nu(∥A∥ + ∥L̃∥F ∥Ũ∥F ) + O(u2 n2 ). □
∥δA∥F
Il metodo di eliminazione di Gauss è stabile all’indietro se ∥A∥F = O(u), cioè se

4nu(∥A∥ + ∥L̃∥F ∥Ũ∥F ) = O(u)∥A∥F . (2.24)

Se il metodo viene applicato con la procedura di pivoting, si ha che |L̃ij | ≈ 1, e quindi ∥L̃∥F ≤ n.
Perchè (2.24) sia soddisfatta, è dunque sufficiente controllare la crescita di ∥Ũ∥F .
Sia
∥Ũ∥max
gpp :=
∥A∥max
il fattore di crescita della fattorizzazione LU con pivoting parziale, dove ∥A∥max = maxi,j |Aij |.

Proposizione 2.3.14 Il fattore di crescita per il metodo di elimininazione di Gauss con pivot
parziale verifica gpp ≤ 2n−1 .
(2) (1) (1)
Dim. Alla prima iterazione dell’eliminazione di Gauss con pivot parziale si ha |ai,j | = |ai,j − mi,1 a1,j | ≤
(1) (1)
|ai,j | + |mi,1 | |a1,j | ≤ 2∥A∥max , dove abbiamo usato il fatto che con il pivot parziale, |mi,1 | ≤ 1 per ogni i. Quindi
ad ogni passo si ha un possibile raddoppio del valore degli elementi rimanenti. Dopo n − 1 passi si avrà quindi che
l’ultimo elemento può essere in effetti 2n−1 volte l’elemento più grande di A. □

Tale stima è estremamente pessimistica, anche se è raggiungibile per certe matrici considerate
“patologiche”.
Esempio. Un esempio che mostra che tale stima è raggiungibile è dato dalla matrice
 
1 0 0 0 ... 0 1
−1 1 0 0 ... 0 1
 
−1 −1 1 0 ... 0 1
A = −1 −1 −1 ∈ Rn×n .
 
 1 0... 0 1 
 .. .. .. .. .. .. .. .
 . . . . . . . .. 
−1 −1 −1 −1 . . . −1 −1 1

Il metodo di eliminazione di Gauss non fa pivoting, e determina Un,n = 2n−1 .

Con questa stima, usando la stima2 ∥Ũ∥F ≤ ngpp ∥A∥F , si ottiene ∥δA∥F ≤ (4nu+4n3 ugpp )∥A∥F ,
da cui
∥δA∥F = O(4n3 ugpp ∥A∥F ).

2.4 Sistemi con matrice a banda


In questa sezione vengono trattati sistemi la cui matrice dei coefficienti ha una struttura “a banda”,
che permette una implementazione efficiente della fattorizzazione LU.
2 Si ha ∥U ∥2F = |uij |2max u2ij /|uij |2max ≤ ∥U ∥2max n2 e ∥A∥max ≤ ∥A∥F , da cui gpp ≥ ∥U ∥F /(∥A∥F n).
P
i,j

28
Definizione 2.4.1 (Matrice a banda) Una matrice A ∈ Rn×m si dice a banda con banda infe-
riore bL e banda superiore bU se
Aij = 0, per i > j + bL e i < j − bU .
Una matrice A a banda risulta quindi avere la forma
× ◦
 
0 ... ... 0
 .. ..
 ∗ × ◦ . .
..
 
 .. .. 
 ∗ . × ◦ . .

A= ,
 .. .. .. .. 
 0
 . . . . 0 

 . .. .. .. ..
 ..

. . . . ◦ 
0 ... 0 ∗ ∗ ×
dove gli elementi “*” costituiscono la banda inferiore (nell’esempio bL = 2) e gli elementi ◦ la banda
superiore (nell’esempio bU = 1) di A. La seguente proposizione, che non dimostriamo, descrive il
vantaggio - computazionale e di memoria - di avere a disposizione una matrice a banda.
Proposizione 2.4.2 Sia A una matrice a banda con banda inferiore bL e banda superiore bU , e
supponiamo che esista la sua fattorizzazione LU (senza pivoting), A = LU. Allora L e U sono
matrici a banda di ampiezza rispettivamente bL e bU . Inoltre L e U possono essere costruite con
O(nbU bL ) operazioni floating points.

2.4.1 Caso tridiagonale. L’algoritmo di Thomas


Un caso particolarmente interessante è quello in cui A è tridiagonale, cioè con bU = bL = 1.
Matrici di questo tipo si ottengono in svariate applicazioni, per esempio durante la discretizza-
zione di certi problemi differenziali ai limiti uno-dimensionali, e nella costruzione di alcune spline
nell’approssimazione di funzioni.
Esempio 2.4.3 A titolo di semplice esempio, mostriamo che la risoluzione numerica mediante
discretizzazione con differenze finite del problema differenziale uno-dimensionale u′′ (x) = f (x) con
x ∈ (0, 1) e u(0) = u(1) = 0, determina un sistema lineare con matrice dei coefficienti tridiagonale.
Infatti, consideriamo una suddivisione equispaziata 0 = x0 < x1 < · · · < xn+1 = 1 dell’intervallo
[0, 1], con h = xj − xj−1 . Poniamo uj := u(xj ). Allora per ogni nodo interno si ha
1 1
uj+1 = uj + hu′ (xj ) + h2 u′′ (xj ) + O(h3 ), uj−1 = uj − hu′ (xj ) + h2 u′′ (xj ) + O(h3 ).
2 2
Sommando le due relazioni si ottiene la stima u′′ (xj ) ≈ h12 (uj−1 − 2uj + uj+1 ) per h → 0. In ogni
punto interno, l’equazione differenziale è quindi approssimata come h12 (uj−1 − 2uj + uj+1 ) = f (xj ).
Per tutti i nodi interni, e tenendo conto che u(x0 ) = 0 = u(xn ), si ha dunque
 
1 −2 1    
h2 (−2u 1 + u 2 ) = f (x 1 ), u1 f (x1 )
1
 1 −2 1 
h2 (u1 − 2u2 + u3 ) = f (x2 ), 1    u2   f (x2 ) 
cioe′  .. .. ..   ..  =  .. (2.25)
   
.
.. .. 2  . . .
h

. .   .   . 
1
 −2 1 
h2 (un−1 − 2un ) = f (xn ), un f (xn )
1 −2
Il sistema a destra, Au = f , ha matrice tridiagonale e simmetrica, ed il termine noto contiene i
valori della funzione f nei nodi interni. Le componenti del vettore soluzione del sistema lineare sono
le approssimazioni nei nodi interni dei valori della funzione u soluzione del problema differenziale.

29
È dato il sistema con matrice tridiagonale
 
a1 c1 0 ... 0
 .. .. 

 b2 a2 c2 . . 

Ax = f, con A=
 .. .. .. .

(2.26)
 0 . . . 0 
 .. .. .. .. 
 . . . . cn−1 
0 ... 0 bn an
L’algoritmo per l’implementazione della fattorizzazione LU di A può essere estremamente semplifi-
cato e reso meno costoso, e prende il nome di algoritmo di Thomas. Dal teorema precedente segue
che le matrici L e U sono bidiagonali, ed hanno la forma
   
1 α1 γ1
 β2 1 .
α2 . .
  
   
 . ..   
L=  β 3
,
 U = 
 . .. . ..
.

 .. ..   
 . .   αn−1 γn−1 
βn 1 αn
Moltiplicando in modo esplicito L ed U e confrontando i valori con quelli di A, si ottiene γi = ci ,
i = 1, . . . , n − 1, e
bi
α1 = a1 , βi = , αi = ai − βi ci−1 , i = 2, . . . , n.
αi−1
Il numero di operazioni floating point necessarie per questa iterazione è dato da n − 1 divisioni per
generare i coefficienti βi , e 2(n − 1) operazioni per generare αi . In totale l’algoritmo di Thomas
richiede (n − 1) + 2(n − 1) = 3n − 3 flops, da confrontare con i 32 n3 + O(n2 ) flops richiesti per
l’eliminazione di Gauss con matrice generica. Il costo per matrici tridiagonali è quindi inferiore di
due ordini di grandezza.
Una volta determinati i coefficienti di L ed U, la determinazione della soluzione x richiede la
risoluzione a cascata dei due sistemi
Ly = f, Ux = y. (2.27)
La struttura bidiagonale di L e U può essere sfruttata anche nella risoluzione di questi sistemi.
Infatti per Ly = f si ha
y1 = f1 , yi = fi − βi yi−1 , i = 2, . . . , n,
al costo di 2(n − 1) flops. Applicando il metodo di sostituzione all’indietro al secondo sistema,
Ux = y, si ha
yn 1
xn = , xi = (yi − ci xi+1 ), i = n − 1, . . . , 1,
αn αi
al costo di 3(n − 1) + 1 f lops. Il costo della risoluzione dei sistemi bidiagonali (2.27) è quindi di
2(n − 1) + 3(n − 1) + 1 = 5n − 4 f lops. Ciò significa che il costo totale della risoluzione del sistema
tridiagonale (2.26), che tiene conto sia della fattorizzazione della matrice dei coefficienti sia della
risoluzione dei sistemi bidiagonali (2.27), è di
3n − 3 + 5n − 4 = 8n + O(1) flops.
Si noti che per la risoluzione dei due sistemi bidiagonali, non è necessario creare esplicitamente
L e U, ma solo memorizzare i termini {βi } e {αi }.

30
2.5 Applicazioni
In questa sezione sono proposte alcune applicazioni degli algoritmi e delle proprietà proposte. Ver-
ranno anche introdotti ulteriori risultati sulle proprietà delle matrici, che risulteranno utili per lo
svolgimento di alcuni esercizi.

Esercizio 2.5.1 Determinare |det (A)| mediante la fattorizzazione LU e stimarne il costo compu-
tazionale.

Risoluzione. Supponiamo dapprima che sia possibile fattorizzare A come A = LU. Si ha


det (A) = det (LU) = det (L)det (U), dove nell’ultima uguaglianza è stata applicata la formula di
Binet. Le matrici L e U sono triangolari, quindi il loro determinante è il prodotto dei loro elementi
diagonali. QDato che tutti gli elementi diagonali di L sono uguali ad 1, si ha det (L) = 1, mentre
n Qn
det (U) = i=1 Uii . Quindi det (A) = i=1 Uii . Il costo complessivo di questa operazione è di
2 3 3
3 n + n f lops, poichè sono necessari 2n /3 f lops per la fattorizzazione, e altri n per
Qn la prodottoria.
Nel caso in cui ΠA = LU,, allora possiamo solo dire che |det (A)| = | i=1 Uii |, poichè
|det (Π)| = 1 essendo Π una matrice ortogonale.

Esercizio 2.5.2 Sia  


α 3α
A= ,
1 1
n
X
e ∥A∥∞ = max |Aij |. Determinare α in modo che κ∞ (A) sia minimo.
i=1,...,n
j=1

Risoluzione. Si ha direttamente ∥A∥∞ = max{4α, 2}. Inoltre,


 1 3 

2α 2
A−1 = 
 
,
1 1
 

2α 2
per cui  
−1 1 3 1 1 1 3
∥A ∥∞ = max + , + = + .
2α 2 2α 2 2α 2
Quindi  
1 3
κ∞ (A) = max {4α, 2} · + .
2α 2
Per 4α ≥ 2, cioè α ≥ 12 , si ha κ∞ (A) = 4α 2α 1
+ 32 = 2 + 6α ≥ 2 + 62 = 5.


D’altra parte, per 4α < 2, cioè per α < 21 , si ha κ∞ (A) = 2 2α


1
+ 32 = α1 + 3 > 5.
1
Per α = si ottiene quindi il minimo, κ∞ (A) = 5.
2

Esercizio 2.5.3 È dato il sistema lineare Ax = b, con A non singolare,

S uv T
 
A= ∈ R2n×2n , u, v ∈ Rn ,
0 ST

Proponi un algoritmo completo che risolva il sistema in modo efficiente.

31
Risoluzione. Scriviamo x = [x1 ; x2 ] e b = [b1 ; b2 ] con blocchi conformi con quelli di A. Quindi
Sx1 + u(v T x2 ) = b1 e S T x2 = b2 . Da A non singolare segue che S e S T sono non singolari. Sia
S T = ΠT LU la fattorizzazione LU di S T con pivoting. Quindi x2 = U −1 (L−1 (Πb2 )). In effetti x2
si puo’ ottenere mediante eliminazione di Gauss, cosi da ottenere direttamente L−1 (Πb2 ), quindi il
calcolo di x2 richiede la sola risoluzione con U , supponendo di aver già calcolato la fattorizzazione.
Le matrici L e Π servono per determinare x1 . Infatti, si ha Sx1 = b1 − u(v T x2 ), da cui x1 =
(U T LT Π)−1 (b1 − u(v T x2 )), cioè x1 = ΠT (L−T ((U −T (b1 − u(v T x2 )))). Quindi, per determinare
x1 occorre 1 prodotto scalare ed una daxpy per ottenere il termine noto, e poi la risoluzione di
un sistema triangolare inferiore e superiore, infine la permutazione delle componenti (zero costo
computazionale, se fatto mediante un vettore).
Per il proseguo, anticipiamo alcune proprietà di autovalori e di norme.
Proposizione 2.5.4 Sia A ∈ Rn×n simmetrica e definita positiva. Allora
xT Ax
∥A∥2 = λmax = max n .
0̸=x∈R xT x
T
Il rapporto xxTAx
x
si chiama rapporto (o quoziente) di Rayleigh. Il risultato vale anche per A
simmetrica ma non necessariamente definita positiva.
Dimostrazione. Il fatto che ∥A∥2 = λmax è già stato dimostrato in precedenza. Rimane da
dimostrare la seconda uguaglianza. Sia A = QΛQT la decomposizione spettrale di A, con Q
ortogonale e Λ = diag(λ1 , . . . , λn ), dove λi > 0 sono gli autovalori di A. Allora
2
P 2
xT Ax xT QΛQT x y T Λy
P
i λi yi i yi
= = = ≤ λmax = λmax .
xT x xT QQT x yT y yT y yT y
Tale maggiorazione vale per ogni x, e quindi anche per quel vettore x che dà il massimo del quoziente
di Rayleigh. Il valore λmax è raggiunto per x uguale all’autovettore corrispondente a λmax . □
Proposizione 2.5.5 Sia A ∈ Rn×n . Allora ∥A∥2 = ∥AT ∥2 .
Dimostrazione. Questa proprietà può essere dimostrata in modo elementare mediante la scom-
posizione di A in valori singolari, e vale anche per A rettangolare. Qui verrà dimostrata per A non
singolare.
Ricordiamo che AT A > 0. Sfruttando la Proposizione 2.5.4 Si ha
∥A∥22 = max ∥Ax∥22 = max xT AT Ax = λmax (AT A),
∥x∥=1 ∥x∥=1

dove λmax (AT A) indica l’autovalore massimo di AT A. Analogamente,


∥AT ∥22 = max ∥AT x∥22 = max xT AAT x = λmax (AAT ).
∥x∥=1 ∥x∥=1

Dato che AT A = AT AAT (AT )−1 , si ha che AT A e AAT sono simili, e quindi hanno gli stessi
autovalori. In particolare sarà uguale il loro autovalore massimo. □
Esercizio 2.5.6 Sia M ∈ Rn×n simmetrica e definita positiva, e sia M = LLT la sua fattorizza-
zione di Cholesky. Mostrare che ∥M∥2 = ∥L∥22 , e κ2 (M) = κ2 (L)2 .

Risoluzione. Usando la fattorizzazione di Cholesky, e sfruttando i risultati delle Proposizioni


2.5.4 e 2.5.5 si ha
2
xT Mx xT LLT x ∥LT x∥22 ∥LT x∥2

∥M∥2 = max T = max = max = max = ∥LT ∥22 = ∥L∥22 .
x̸=0 x x x̸=0 xT x x̸=0 ∥x∥22 x̸=0 ∥x∥2

32
Analogamente si mostra che ∥M−1 ∥2 = ∥L−1 ∥22 . Infine, κ2 (M) = ∥M∥2 ∥M−1 ∥2 = ∥L∥22 ∥L−1 ∥22 =
κ2 (L)2 .

Esercizio 2.5.7 Sia A ∈ Rn×n simmetrica e definita positiva. Dimostrare che

|Aij | < (Aii Ajj )1/2 .

Risoluzione. Dimostriamo la disuguaglianza per induzione su n.


Sia n = 2. Allora, essendo A simmetrica e definita positiva, i suoi autovalori sono tutti positivi
e si ha  
A11 A12
0 < det (A) = det = A11 A22 − A12 A21 = A11 A22 − A212 .
A21 A22
Sia ora n > 2. Siano ei ed ej rispettivamente l’i-esimo e il j-esimo vettore della base canonica
di Rn . Allora la matrice 2 × 2, [ei , ej ]T A[ei , ej ] è definita positiva, infatti per ogni 0 ̸= x ∈ R2 si
ha xT [ei , ej ]T A[ei , ej ]x = y T Ay > 0. Quindi
 
Aii Aij
[ei , ej ]T A[ei , ej ] = .
Aij Ajj

Per ipotesi induttiva abbiamo allora che |Aij | < (Aii Ajj )1/2 . Lo stesso argomento può essere
utilizzato per ogni i, j, con i, j = 1, . . . , n.

La seguente formula, nota col nome di Formula di Sherman-Morrison, permette di scrivere


l’inversa di una matrice con una certa struttura, come modifica di rango uno di una matrice non
singolare. La dimostrazione della formula è una semplice verifica.

Proposizione 2.5.8 Sia A ∈ Rn×n e siano u, v ∈ Rn . Se A è non singolare e 1 + v T A−1 u ̸= 0


vale la seguente formula,

(A + uv T )−1 = A−1 − A−1 u(1 + v T A−1 u)−1 v T A−1 .

Nel caso in cui la modifica sia di rango maggiore di uno, cioè A + UVT con U, V ∈ Rn×r , r ≥ 1,
la formula diventa

(A + UVT )−1 = A−1 − A−1 U(I + VT A−1 U)−1 VT A−1 ,

dove ora (I + VT A−1 U) ∈ Rr×r e si suppone che sia non singolare. Tale generalizzazione è nota
con il nome di Formula di Sherman-Morrison-Woodbury.

Esercizio 2.5.9 Sia B = A + uv T con A ∈ Rn×n e u, v ∈ Rn . Supponendo di avere un metodo con


basso costo computazionale per risolvere il sistema Ax = b, con b ∈ Rn , mostrare come risolvere il
sistema Bx = b, dando opportune condizioni di esistenza per la procedura.

Risoluzione. Applicando la formula di Sherman-Morrison-Woodbury, si ha che

x = (A + uv T )−1 b = (A−1 − A−1 u(1 + v T A−1 u)−1 v T A−1 )b


= A−1 b − A−1 u(1 + v T A−1 u)−1 v T A−1 b.

Siano y1 e y2 , rispettivamente, le soluzioni dei sistemi lineari Ay1 = b, e Ay2 = u, ottenute con il
metodo “veloce”, come da ipotesi. Sostituendo y1 e y2 nella formula, si ottiene
v T y1
x = y1 − y2 (1 + v T y2 )−1 v T y1 = y1 − y2 .
1 + v T y2

33
Una volta calcolati y1 e y2 , il costo computazionale quindi è dato dal calcolo dei due prodotti scalari
v T y1 e v T y2 , cioè 2(2n − 1) flops, e della daxpy, che costa 2n flops. Il costo complessivo per
risolvere il sistema con B è quindi dato dal costo della risoluzione di due sistemi con A, a cui
vanno aggiunte circa 6n operazioni floating point. Se il costo per risolvere sistemi con A è molto
più basso che per B, per esempio nel caso di A a banda, la procedura è quindi molto vantaggiosa.

Esercizio 2.5.10 Determinare un metodo efficiente per risolvere il sistema


 
A11 0 ... 0 A1n
 A21 A22 0 . . . 0 
..
 
 
Ax = b, con A =   0 A32 A33 0 . ,

 . . . .
. . . .

 . . . . 0 
0 ... 0 An,n−1 Ann

e valutarne il costo computazionale.

Risoluzione. È possibile scrivere A = L + A1n e1 eTn , dove L indica la parte triangolare inferiore
di A. Usando la formula di Sherman-Morrison, la soluzione x può essere scritta come

x = A−1 b = (L + A1n e1 eTn )−1 b = L−1 b − L−1 e1 (1 − A1n eTn L−1 e1 )A1n eTn L−1 b,

che richiede la risoluzione dei due sistemi Ly1 = b (3n flops) e Ly2 = e1 (2n flops), con L bidiago-
nale. I prodotti scalari con en non comportano alcun costo computazionale (corrispondono all’estra-
zione della corrispondente componente del vettore), quindi l’unico costo aggiuntivo è l’operazione di
daxpy, che costa 2n flops. Il costo complessivo del calcolo di x è quindi di 7n f lops.

Esercizio 2.5.11 Sia κ(A) il numero di condizionamento di A con la norma indotta Euclidea.
Sia x la soluzione esatta del sistema Ax = b, e sia invece x̃ una soluzione approssimata (es. in
aritmetica finita). Sia r = b − Ax̃ il residuo associato a tale approssimazione. Mostrare che

∥x − x̃∥ ∥r∥
≤ κ(A) .
∥x∥ ∥b∥

Risoluzione. Dalla definizione di residuo si ha che x̃ = A−1 (b − r) = x − A−1 r. Quindi

∥x − x̃∥ ∥A−1 r∥ ∥A−1 ∥ ∥r∥ ∥A∥ ∥A−1 ∥ ∥r∥ ∥r∥ ∥r∥ ∥r∥
= ≤ = = κ(A) ≤ κ(A) = κ(A) .
∥x∥ ∥x∥ ∥x∥ ∥A∥ ∥x∥ ∥A∥ ∥x∥ ∥Ax∥ ∥b∥

Questo esercizio mostra che il residuo, nonostante sia una grandezza molto utilizzata per valutare
la bontà della approssimazione x̃, può non essere molto informativo sull’errore nel caso di un numero
di condizionamento elevato della matrice dei coefficienti A. In particolare, la maggiorazione mostra
la relazione che intercorre tra una stima a posteriori (il residuo) ed una stima a priori (l’errore).
Questo esercizio corrisponde al Corollario 2.1.7, dove il residuo gioca il ruolo di δb.

Esercizio 2.5.12 Determinare il costo computazionale per il calcolo dell’inversa di una matrice A
tridiagonale applicando il metodo di eliminazione di Gauss senza pivoting.

Risoluzione. Il calcolo dei fattori L e U mediante l’algoritmo di Thomas costa 3n−3 flops. Come
nel caso triangolare (Sezione 2.2.1) è quindi necessario risolvere gli n sistemi Ly = ek , Ux = y, per

34
k = 1, . . . , n. Notiamo che il costo per la risoluzione del primo sistema, quello bidiagonale inferiore,
può essere ridotto seguendo lo stesso argomento utilizzato nella Sezione 2.2.1, e ottenendo

yk = fk , yi = fi − βi yi−1 , i = k, . . . , n,

con un costo di n − k flops per k = 1, . . . , n invece di 2n − 2 f lops. Il costo totale dell’inversione è


quindi di
n
X 7 1 7
3n − 3 + (n − k) + n(3n − 2) = n2 + n − 3 = n2 + O(n).
2 2 2
k=1

Esercizio 2.5.13 Siano A ∈ Rn×m con n ≥ m e


 
In A
B= ∈ R(n+m)×(n+m) ,
AT Om

dove In ∈ Rn×n e Om ∈ Rm×m indicano rispettivamente la matrice identità e la matrice nulla.


1. Mostrare che B è non singolare se e solo se AT A è non singolare.
2. Dedurre dal punto precedente un metodo risolutivo per il sistema lineare

Bx = b, b ∈ Rn+m ,

che abbia un costo inferiore a O((n + m)3 ).

Risoluzione. Si verifica facendo il prodotto esplicito che


   
In In In A
B= =: LDLT .
A T Im −AT A Im

La matrice L è necessariamente non singolare in quanto triangolare inferiore con diagonale unitaria.
Si ha quindi che

det (B) = det (LDLT ) = det (L) det (D) det (LT ) = det (D) = det (In ) det (−AT A) = det (−AT A).

Quindi B è non singolare se e solo se AT A è non singolare. (abbiamo utilizzato il fatto che il
determinante di una matrice diagonale a blocchi è il prodotto dei determinanti dei blocchi). La
risoluzione del sistema Bx = b, equivale a risolvere LDLT x = b, da cui x = L−T D−1 L−1 b. Il
calcolo di x quindi prevede lo svolgimento delle seguenti operazioni
1) Risoluzione di Lv = b
2) Risoluzione di Dw = v
3) Risoluzione di LT x = w
Partizioniamo il vettore b come b = [b1 ; b2 ] in modo conforme ai blocchi di righe di B, cosicchè
b1 ∈ Rn e b2 ∈ Rm . Si verifica che
 
In
L−1 =
−AT Im

per cui il punto 1) corrisponde al prodotto L−1 b, il cui unico costo computazionale è dato dal
prodotto −AT b1 , ed è di m(2n − 1), a cui deve essere aggiunto il costo della somma di due vettori
di dimensione m.
Analogamente, il costo del punto 3) corrisponde al prodotto −Aw2 , che è di n(2m − 1), a cui
va aggiunto il costo della somma di due vettori di dimensione n.

35
La risoluzione del sistema a blocchi nel punto 2) richiede la risoluzione del sistema AT Aw2 =
v2 . Siccome AT A è m × m, simmetrica e definita positiva, è possibile usare la fattorizzazione di
Cholesky, con cui la risoluzione di questo sistema ha un costo di 13 m3 + O(m2 ).
Il costo complessivo dell’intera procedura è quindi di 4nm+ 31 m3 +O(m2 )+O(n). Nel caso AT A
debba essere calcolata esplicitamente, allora occorre aggiungere (2n − 1)m2 operazioni aggiuntive.
Si noti che è possibile ottenere il fattore di Cholesky LT direttamente da A (cioè senza il calcolo di
AT A) mediante la fattorizzazione QR (si veda il Capitolo 4).

36
Capitolo 3

Risoluzione di sistemi lineari:


metodi iterativi

Si vuole risolvere il sistema


Ax = b, (3.1)
con A ∈ Rn×n e b ∈ Rn , mediante la costruzione di una successione di soluzioni approssimate {xk },
xk ∈ Rn ∀ k, tali che1
xk → x∗ , k → +∞,
dove x∗ indica la soluzione esatta di (3.1). Ovviamente la successione dev’essere costruita in modo
tale che dopo un certo numero di passi b
k, “piccolo” in termini di costi computazionali, sia soddisfatta
la relazione
∥xbk − x∗ ∥ < tol
per qualche norma vettoriale, e per una tolleranza (tol) fissata, per esempio tol = 10−6 . Esistono
metodi che, almeno in aritmetica esatta, generano una successione finita, xk → x∗ , per k → n, cioè
dopo al piú n passi viene ottenuta la soluzione x∗ .

3.1 Metodi iterativi classici (stazionari)


In questa sezione introduciamo alcuni metodi classici per la risoluzione iterativa di sistemi lineari.
Nella maggior parte dei casi sono stati ormai soppiantati da metodi molto più potenti, in termini
di costo computazionale e velocità di convergenza. D’altra parte rappresentano un ottimo punto
di partenza per investigazioni sia teoriche che applicative, ed in alcune applicazioni, per esempio
metodi multi-livello, vengono ancora usati con successo.
Una strategia generale pr costruire metodi iterativi stazionari è basata su una decomposizione
additiva, detta splitting della matrice dei coefficienti A,

A = P − N, (3.2)
1 Una x(k) ,
notazione alternativa molto usata per xk è in modo che l’indice k di iterazione non venga confuso con
l’indice di componente del vettore. Per non appesantire la notazione useremo xk , ed useremo una diversa notazione
per l’indice di componente, usato molto più di rado in questo contesto.

37
con P e N matrici opportune e P non singolare. Allora
Ax = b, ⇔ Px − Nx = b, ⇔ Px = Nx + b.
Per P non singolare, questa equazione ha la forma x = Φ(x), e quindi è possibile pensare ad una
iterazione di punto fisso, che convergerà sotto opportune ipotesi su Φ. Più precisamente, fissato x0 ,
può essere definita la seguente iterazione del tipo xk+1 = Φ(xk ):
Pxk+1 = Nxk + b, k≥0 ⇔ xk+1 = P−1 Nxk + P−1 b. (3.3)
L’iterata successiva xk+1 è ottenuta risolvendo un sistema lineare con P.
Osservazione: L’iterazione (3.3) può essere scritta come xk+1 = xk +P−1 rk , dove rk = b−Axk
indica il residuo al passo k. Infatti, inserendo la definizione del residuo e ricordando che A = P − N
si ha
xk+1 = xk + P−1 b − P−1 Axk = xk + P−1 b − P−1 Pxk + P−1 Nxk = P−1 b + P−1 Nxk . (3.4)
Per costruzione dell’iterazione di punto fisso, la formulazione (3.3) del metodo iterativo risulta essere
fortemente consistente, in quanto la soluzione esatta x soddisfa l’iterazione per ogni k.
Ogni scelta di P darà luogo ad un distinto metodo, con diverse proprietà di convergenza e diversi
costi computazionali. Alcune proprietà sono comunque comuni, e derivanti dall’iterazione generale.
Definizione 3.1.1 (Metodo convergente) L’iterazione (3.4) definisce un metodo convergente
se l’errore ek := x∗ − xk , soddisfa
lim ek = 0, per ogni x0 iterata iniziale.
k→+∞

Per introdurre il concetto di convergenza dell’iterazione, si richiama la definizione di raggio


spettrale ρ(B) definito come ρ(B) = max |λ|.
λ∈spec(B)

Teorema 3.1.2 Il metodo (3.3) converge alla soluzione esatta x∗ per ogni iterato iniziale x0 se e
solo se la matrice di iterazione
B := P−1 N,
soddisfa ρ(B) < 1.
Dimostrazione. Come relazione preliminare, notiamo che sottraendo x∗ = P−1 Nx∗ + P−1 b da
(3.4), si ottiene
x∗ − xk+1 = P−1 N(x∗ − xk ), ⇔ ek+1 = Bek .
Iterando la relazione,
ek+1 = Bek = B(Bek−1 ) = · · · = Bk+1 e0 .
⇐ Supponiamo che ρ(B) < 1. Allora
lim Bk = 0. (3.5)
k→+∞

Dimostriamo questo fatto nel solo caso diagonalizzabile, sebbene sia dimostrabile anche in presenza
di blocchi di Jordan: si ha
lim Bk = lim (XΛX−1 )k = X( lim Λk )X−1 = 0.
k→+∞ k→+∞ k→+∞

Dalla (3.5) segue che limk→+∞ ek = limk→+∞ B e0 = 0, per ogni e0 ∈ Rn , cioè la successione in
k

(3.3) converge per ogni scelta dell’iterato iniziale x0 .


⇒ Supponiamo che il metodo sia convergente e supponiamo per assurdo che ρ(B) ≥ 1. Allora
esiste almeno un’autocoppia di B, (λ, v) con |λ| ≥ 1. Scegliamo quindi l’iterato iniziale x0 tale che
l’errore iniziale e0 sia proprio uguale all’autovettore v, e0 = v. Dunque, ek = Bk e0 = λk e0 ↛ 0 per
k → +∞. Tale risultato è un assurdo, poichè il metodo è convergente. □

38
Corollario 3.1.3 Se ∥B∥ < 1 per qualche norma matriciale indotta, allora il metodo (3.3) è
convergente.
Dim. Per le osservazioni fatte nella dimostrazione del Teorema 3.1.2, per ogni e0 e per la norma
per cui vale ∥B∥ < 1 si ha
∥ek ∥ = ∥Bk e0 ∥ ≤ ∥Bk ∥ ∥e0 ∥ ≤ ∥B∥k ∥e0 ∥ → 0, k → +∞. □
Più il raggio spettrale della matrice di iterazione ρ(B), è piccolo, cioè lontano da 1, più la
convergenza del metodo (3.3) sarà rapida. Condizioni necessarie per la convergenza del metodo,
legate alla distribuzione degli autovalori della matrice di iterazione, sono:
n
Y
i) |det (B)| = λi < 1,
i=1
n
X n
X
ii) |tr (B)| = Bii = λi ≤ n.
i=1 i=1
Per lo studio della convergenza è interessante studiare quale sia il decremento medio dell’errore
ad ogni iterazione. A tal fine, consideriamo la media geometrica del decremento dell’errore, in
norma, ad ogni iterazione, cioè
 1/k  1/k  k 1/k
∥ek ∥ ∥ek−1 ∥ ∥e1 ∥ ∥ek ∥ ∥B e0 ∥
··· = = ≤ ∥Bk ∥1/k
∥ek−1 ∥ ∥ek−2 ∥ ∥e0 ∥ ∥e0 ∥ ∥e0 ∥
da cui si deduce che ∥Bk ∥1/k è il fattore medio di convergenza del metodo dopo k iterazioni. Tale
termine può essere usato per dare indicazioni su quanto calerà l’errore, in media, per ogni iterazione.
Infatti, supponiamo che si desideri una relazione del tipo ∥ej ∥ ≤ 10−α ∥ej−1 ∥ ad ogni iterazione j
fino a k. Allora è sufficiente che si abbia 10−α = ∥Bk ∥1/k , cioè
1
log10 10−α = log10 ∥Bk ∥1/k , cioèα = − log10 ∥Bk ∥ =: Rk (B),
k
dove Rk (B) è la velocità media di convergenza. Quindi Rk (B) indica il decremento medio ad ogni
iterazione del metodo.
Grazie al seguente risultato, è possibile sostituire il calcolo di Rk (B) ad ogni k, con il calcolo
del solo raggio spettrale.
Teorema 3.1.4 (Formula di Gelfand). Sia A ∈ Rn×n e sia ∥ · ∥ una norma matriciale. Si ha
allora che q
lim k ∥Ak ∥ = ρ(A).
k→+∞

Dim. Consideriamo solo il caso di norma indotta Euclidea ed A diagonalizzabile. Per A simmetrica,
il risultato è vero per ogni k, senza andare al limite. Per A diagonalizzabile, la dimostrazione segue
dalla continuità della norma matriciale:
Notiamo innanzi tutto che ρ(A)k = ρ(Ak ) ≤ ∥Ak ∥ e quindi ρ(A) ≤ ∥Ak ∥1/k per ogni k = 1, 2, ....
Sia dato ε > 0. La marice à = (ρ(A) + ε)−1 A ha raggio spettale strettamente minore di uno e
quindi ∥Ãk ∥ → 0 per k → +∞ ed esiste un n = n(ε, A) tale che ∥Ãk ∥ ≤ 1 per k ≥ n. Questa
relazione equivale a dire che ∥Ak ∥ ≤ (ρ(A) + ε)k per k ≥ n, o meglio ancora,∥Ak ∥1/k ≤ (ρ(A) p + ε)
per k ≥ n. Dato che ε > 0 è arbitrario e ρ(A) ≤ ∥Ak ∥1/k per ogni k, si ottiene che limk→+∞ k ∥Ak ∥
esiste ed è uguale a ρ(A). □
Quindi, per una norma indotta ∥ · ∥, definendo con R(B) = − log10 ρ(B) la velocità asintotica
di convergenza, si ha
R(B) = lim Rk (B).
k→+∞

39
3.1.1 Metodo di Jacobi
Consideriamo la seguente decomposizione additiva (o splitting) della matrice A in (3.1):

A = −E + D − F, (3.6)

con E triangolare strettamente inferiore, F triangolare strettamente superiore e D diagonale. Ri-


scrivendo lo splitting nella notazione di (3.2), il metodo di Jacobi corrisponde a scegliere P = D,
quindi
A = D − (E + F), ⇒ P := D, N := E + F.
Tale scelta di P è possibile sotto l’ipotesi che la diagonale di A sia non singolare, cioè Aii ̸= 0 per
i = 1, . . . , n. La matrice di iterazione per il metodo di Jacobi si può quindi scrivere come:

BJ := P−1 N = D−1 (E + F) = D−1 (D − A) = I − D−1 A,

mentre il corrispondente algoritmo (di Jacobi) è quindi dato da:


Fissato x0 ∈ Rn e r0 = b − Ax0
Per k = 0, 1, 2, . . .,
xk+1 = xk + D−1 rk , 2n flops
rk+1 = b − Axk+1 , n flops + Mxv
Se convergente stop 2n (norma del residuo)
end
A fianco di ogni operazione è stato segnalato il costo computazionale: in totale il costo è di
5n flops per iterazione, a cui va aggiunto il costo dell’operazione matrice-per-vettore, che dipende
dalla sparsità di A. Si noti che l’operazione D−1 rk è svolta dividendo ogni componente di rk per
il corrispondente elemento diagonale di D, cosicchè la matrice D non viene in effetti memorizzata.
Il costo complessivo del metodo dipende dal numero di iterazioni effettuato dal metodo, e quindi
non è possibile stimarlo a priori in modo affidabile, in quanto dipende molto dal dato iniziale x0 .
Per completare l’algoritmo bisogna fornire un criterio d’arresto, che, senza altre informazioni, può
essere basato sulla norma del residuo. In particolare, l’iterazione si arresta se vale la seguente
disuguaglianza,
∥rk+1 ∥
≤ tol,
∥r0 ∥
dove tol è una tolleranza scelta dall’utente, e dipende dall’accuratezza richiesta dal problema;
tipici valori di tol nella pratica sono dell’ordine di 10−6 , 10−8 . Si noti che è stato usato il residuo
relativo, quindi l’iterazione termina quando la norma del residuo è diminuita rispetto a quella
iniziale di tol. Se ∥r0 ∥ è già molto piccolo, allora richiedere una ulteriore diminuizione di tol
potrebbe essere eccessivo. In questi casi, un test anche sul residuo assoluto può essere opportuno.
Il criterio d’arresto descritto sopra sarà usato anche per i metodi iterativi presentati nel seguito.

3.1.2 Metodo di Gauss-Seidel


Nel metodo di Gauss-Seidel la matrice P viene scelta come la parte triangolare inferiore di A nello
splitting (3.6), cioè
P = D − E, N = F.
Anche in questo caso, P è invertibile se e solo se Aii ̸= 0 per i = 1, . . . , n poichè P è triangolare
inferiore con diagonale coincidente con quella di A. La matrice di iterazione del metodo di Gauss-
Seidel è quindi data da
BGS = P−1 N = (D − E)−1 F.

40
L’iterazione del metodo di Gauss-Seidel sarà quindi della forma
Fissato x0 ∈ Rn e r0 = b − Ax0
Per k = 0, 1, 2, . . .,
xk+1 = xk + (D − E)−1 rk , n flops + risoluz.triang.inf.
rk+1 = b − Axk+1 , n flops + Mxv
Se convergente stop 2n (norma del residuo)
end
Il costo computazionale per iterazione differisce da quello del metodo di Jacobi solo per il costo
della risoluzione con la matrice D − E. Nel caso di matrice triangolare inferiore piena, il costo sarà
quello visto nel Paragrafo 2.2, cioè n2 operazioni floating point.
Osservazione. L’iterazione (D−E)xk+1 = Fxk +b può essere riscritta come Dxk+1 = Exk+1 +
Fxk +b, cioè xk+1 = D−1 Exk+1 +D−1 Fxk +D−1 b. Sfruttando la struttura strettamente triangolare
inferiore di E, si nota che le componenti di xk+1 possono essere determinate in modo da utilizzare
subito le componenti appena calcolate dello stesso vettore, cioè
 
i−1 n
1  X X
xk+1 (i) = b(i) − Aij xk+1 (j) − Aij xk (j) , i = 1, . . . , n
Aii j=1 j=i+1

Per questo motivo il metodo veniva anche chiamato in passato il “metodo degli spostamenti
successivi”.

Esempio 3.1.5 È dato il sistema lineare Ax = b con matrice


       
1 2 0 1 0 0 2 0
A= 4 5 5 =D−E−F= 5 + 4 0 + 0 5 ,
4 0 11 11 4 0 0 0

da cui, la matrice di iterazione dei metodi di Jacobi e di Gauss-Seidel è:


   
0 2 0 0 −2 0
BJ = D−1 (E + F) = −  4/5 0 1  , BGS = (D − E)−1 F =  0 1.6 −1  .
4/11 0 0 0 0.7 0

Gli autovalori di queste matrici sono (accurati ai primi due decimali) Λ(BJ ) = {−1.44, 0.87, 0.57}
e Λ(BGS ) = {0, 0.8 ± 0.29i}, per cui

ρ(BJ ) = 1.44 > 1, ρ(BGS ) = 0.8 < 1.

Il Teorema 3.1.2 assicura quindi che il metodo di Gauss-Seidel converge mentre quello di Jacobi
diverge.

Esempio 3.1.6 È dato il sistema lineare


   
3 0 4 7
Ax = b, A= 7 4 2 , b =  13  .
−1 −1 −2 −4

Si ha quindi che ρ(BJ ) ≈ 1.33, e ρ(BGS ) ≈ 0.25, e come mostrato nel primo grafico di Figura 3.1,
la norma-2 del residuo ottenuto applicando il metodo di Gauss-Seidel decresce mentre quella del
residuo ottenuto applicando Jacobi cresce, cioè il metodo di Jacobi non converge come assicurato
dal Teorema 3.1.2.

41
Esempio 3.1.7 È dato il sistema lineare
   
−3 3 −6 −6
Ax = b, A =  −4 7 −8  , b =  −5  .
5 7 −9 3

Si ha quindi che ρ(BJ ) ≈ 0.813, e ρ(BGS ) ≈ 1.11, e come mostrato nel secondo grafico in Figura 3.1,
la situazione è del tutto ribaltata rispetto a quella dell’Esempio 3.1.6: il metodo di Jacobi converge
mentre quello di Gauss-Seidel no.

4 2 1
10 10 10
Jacobi
3
10 0 Gauss−Seidel
10
2
10
1 −1
10 10
1
10
norma−2 del residuo

norma−2 del residuo


Jacobi
norma−2 del residuo

−2
0 Gauss−Seidel 10
10 Jacobi
0
Gauss−Seidel −3
−1
10 10 10

−2
10 −4
10
−3
10
−1 −5
10 10
−4
10
−6
−5 10
10
−6 −2 −7
10 10 10
0 5 10 15 20 0 5 10 15 20 0 2 4 6 8 10 12 14 16 18
numero di iterazioni numero di iterazioni numero di iterazioni

Figura 3.1: Metodi di Jacobi e di Gauss-Seidel. Norma-2 del residuo all’aumentare del numero di
iterazioni.

Esempio 3.1.8 È dato il sistema lineare


   
4 1 1 6
Ax = b, A= 2 −9 0 , b =  −7  .
0 −8 −6 −14

Si ha quindi che ρ(BJ ) ≈ 0.44, e ρ(BGS ) ≈ 0.018, e il Teorema 3.1.2 assicura che entrambi i
metodi, Jacobi e Gauss-Seidel, convergono. Come mostrato nel grafico di destra in Figura 3.1 però,
il metodo di Gauss-Seidel converge più velocemente di quello di Jacobi. Infatti, minore è il raggio
spettrale della matrice di iterazione, maggiore sarà la velocità di convergenza del metodo.

3.1.3 Risultati di convergenza per i metodi di Jacobi e Gauss-Seidel


In questa sezione sono riportati alcuni risultati sulla convergenza dei metodi stazionari proposti
fino ad ora. Questi risultati si basano su diverse ipotesi imposte sulla matrice dei coefficienti A. La
letteratura in materia è estremamente vasta, e la presentazione qui si limita a pochissimi risultati di
interesse. Per esempio, esistono molti altri risultati di convergenza per matrici irriducibili, che non
riportiamo. Rimandiamo in questo caso alla letteratura di riferimento ed ai testi in bibliografia.

Teorema 3.1.9 Sia A ∈ Rn×n una matrice a dominanza diagonale stretta per righe, cioè
n
X
|Aii | > |Aij |, i = 1, . . . , n.
j=1
j̸=i

allora sia il metodo di Jacobi che quello di Gauss-Seidel convergono e si ha ∥BGS ∥∞ ≤ ∥BJ ∥∞ < 1.

42
Dimostrazione. Dimostriamo solo la convergenza dei due metodi.
La dominanza diagonale di A assicura che la sua diagonale, cioè D sia non singolare. Inoltre,
n
1 X
∥BJ ∥∞ = ∥D−1 (E + F)∥∞ = max |Aij | < 1,
i=1,...,n |Aii |
j=1
j̸=i

e quindi il metodo di Jacobi converge.


Dimostrazione per il metodo di Gauss-Seidel. Sia (λ, v) una autocoppia di BGS = (D − E)−1 F
tale che |λ| = ρ(BGS ). Supponiamo che ∥v∥∞ = 1 = |vk | per qualche k ∈ {1, . . . n}. Allora

λv = BGS v ⇔ λDv = λEv + Fv.

Supponiamo per assurdo che |λ| ≥ 1. Quindi Dv = Ev + λ1 Fv e, per la componente k-esima, si ha


k−1 n
X 1 X
Akk vk = Ak,j vj + Ak,j vj .
j=1
λ
j=k+1

Usando i moduli, e ricordando che |vk | = ∥v∥∞ ,


   
k−1 n k−1 n
X 1 X X 1 X
|Akk | |vk | ≤  |Ak,j | |vj | + |Ak,j | |vj | ≤  |Ak,j | + |Ak,j | |vk |.
j=1
|λ| j=1
|λ|
j=k+1 j=k+1

1
Siccome |λ| ≤ 1, vale quindi
n
X
|Akk | ≤ |Ak,j |,
j=1,j̸=k

che contraddice l’ipotesi di dominanza diagonale stretta. □

Teorema 3.1.10 Sia A ∈ Rn×n una matrice simmetrica, non singolare e avente la parte diagonale
definita positiva, cioè D > 0. Allora il metodo di Gauss-Seidel converge se e solo se A è s.d.p.

Dimostrazione. Essendo A simmetrica, è possibile scrivere lo splitting come A = −E + D − ET .


Da ET = −E + D − A segue

BGS = (−E + D)−1 ET = I − (−E + D)−1 A = I − H,

dove è stato posto H := (−E + D)−1 A. Si noti che H è non singolare. Dimostriamo innanzi tutto
che A − BTGS ABGS > 0. Infatti, notando che AH−1 = (−E + D), si ha

A − BTGS ABGS = A − (I − H)T A(I − H) = A + HT A − A − HT AH + AH


= HT A − HT AH + AH = HT (AH−1 − A + H−T A)H
= HT ((D − E) − A + (D − E)T )H = HT DH.

Dall’ipotesi che D > 0, segue che per ogni x ̸= 0, e y = Hx ̸= 0 vale xT HT DHx = y T Dy > 0, da
cui possiamo concludere che A − BTGS ABGS > 0.
⇐ Supponiamo che A sia s.d.p. e sia (λ,b x b) un’autocoppia di BGS tale che λ
b sia il più grande
autovalore in modulo, cosicchè |λ|
b = ρ(BGS ). Dunque

b∗ Ab
0<x b∗ BT ABb
x−x b∗ Ab
x=x x − |λ| b∗ Ab
b 2x x∗ Ab
b 2 )b
x = (1 − |λ| x.

43
Avendo supposto A s.d.p., si ha quindi 1 − |λ|b 2 > 0, cioè ρ(BGS ) < 1. La convergenza del metodo
segue dal Teorema 3.1.2.
⇒ Supponiamo che il metodo sia convergente. Consideriamo la relazione per i vettori errore,
ek = BGS ek−1 . Dalla positività di A − BTGS ABGS segue

0 < eTk−1 (A − BTGS ABGS )ek−1 = eTk−1 Aek−1 − eTk−1 BTGS ABGS ek−1 = eTk−1 Aek−1 − eTk Aek ,

cioè la successione {eTk Aek }k∈N è monotona strettamente decrescente. Se per assurdo A non è
s.d.p., allora è possibile scegliere un dato iniziale x0 in modo che l’errore iniziale e0 ∈ Rn soddisfi
eT0 Ae0 < 0, ed i termini della successione decrescente saranno ancora più negativi, per cui si avrà
eTk Aek ↛ 0, cioè il metodo non converge, arrivando ad una contraddizione. □
Segue dalla dimostrazione precedente che se A è simmetrica e definita positiva, allora la con-
vergenza del metodo di Gauss-Seidel è monotòna in ∥ · ∥A . Infine, vale il seguente risultato.

Teorema 3.1.11 Se A è tridiagonale, allora ρ(BGS ) = ρ2 (BJ ).

Dim. Iniziamo con una osservazione che sarà usata in seguito: date le parametrizzazioni
a1 c1 /µ
 
b2 µ a2 c2 /µ 
b3 µ a3 c3 /µ
 
A(µ) :=   e Q(µ) := diag(µ, µ2 , . . . , µn ),
 
. . . . .
. . . . .

 . . . . . 
bn µ an
valgono A(1) = A e A(µ) = Q(µ)A(1)(Q(µ))−1 . Quindi
det(A(µ)) = det(A(1)), ∀µ ̸= 0. (3.7)
Venendo alla dimostrazione, notiamo che gli autovalori di BJ = D−1 (E +F )
sono le radici del polinomio caratteristico
pJ (λ) = det(BJ − λI). Siccome D−1 (E + F ) − λI = −D−1 (λD − E − F ), questi sono anche le radici del polinomio
qJ (λ) = det(λD − E − U ).
In modo analogo, scrivendo (D − E)−1 F − λI = −(D − E)−1 (λD − λE − F ), segue che le radici di pGS (λ) =
det(BGS − λI) sono anche le radici di qGS (λ) = det(λD − λE − F ). Dalla (3.7) con µ = 1/λ segue, per λ ̸= 0, che
qGS (λ2 ) = det(λ2 D − λ2 E − F ) = det(λ2 D − λE − λF ) = λn det(λD − E − F ) = λn qJ (λ).

Per continuità di qGS , la relazione vale anche per λ = 0. Quindi qGS (λ2 ) = λn qJ (λ), da cui segue il risultato. □

Il Teorema 3.1.11 mostra che, nel caso di matrici tridiagonali, i metodi di Jacobi e Gauss-Seidel
convergono o divergono entrambi e, nel caso in cui convergano, il metodo di Gauss-Seidel lo farà a
velocità doppia rispetto al quella del metodo di Jacobi.

3.1.4 Il metodo di rilassamento successivo (SOR)


A partire dal metodo di Gauss-Seidel, è possibile definire un metodo più generale, chiamato me-
todo di rilassamento successivo (SOR), introducendo un parametro ω ̸= 0 detto parametro di
rilassamento. Aggiungendo e sottraendo ω1 D, è possibile introdurre il seguente splitting:
  
1 1
A=P−N= D−E− −1 D+F ,
ω ω
dove ancora una volta, P è non singolare se e solo se D è non singolare. La matrice di iterazione
del metodo SOR risulta essere
 −1     −1   
1 1 1 −1 1 −1
BSOR (ω) = D−E −1 D+F = I−D E −1 I+D F
ω ω ω ω

(I − ωD−1 E)−1 (1 − ω) I + ωD−1 F ,



=

44
mentre l’algoritmo è dato da:
Fissato x0 ∈ Rn e r0 = b − Ax0
Per k = 0, 1, 2, . . .,
 −1
1
xk+1 = xk + D−E rk ,, n flops + risoluz.triang.inf.
ω
rk+1 = b − Axk+1 , n flops + Mxv
Se convergente stop 2n (norma del residuo)
end
La matrice di iterazione del metodo dipende dalla scelta del parametro ω, e vale BSOR (1) ≡
BGS . Si dice che il metodo è sottorilassato se ω ∈ (0, 1), mentre che il metodo è sovrarilassato se
ω > 1.
Osservazione. L’algoritmo può anche essere interpretato da un punto di vista geometrico.
Infatti, supponendo che xk+1 = xk + P−1 GS rk sia l’iterazione di Gauss-Seidel, l’iterata xk+1 rap-
presenta un punto sulla retta passante per xk e nella direzione di P−1 GS rk . Mediante la modifica
xk+1 = xk + ωP−1 GS rk , il metodo SOR modifica la scelta del punto sulla stessa retta, prendendo un
punto più vicino o più lontano ad xk , a seconda che ω sia minore o maggiore di 1. Riscrivendo esplici-
tamente PGS ed rk si arriva all’iterazione SOR (si veda p.261 del testo “Metodi Numerici per l’Alge-
bra Lineare”, Bini, Capovani, Menchi, Zanichelli, 1988). Infatti, sia xk+1 = xk + P−1 GS rk =: xk + vk .
Dato che per Gauss-Seidel si ha (D − E)xk+1 = Fxk + b, cioè Dxk+1 = Exk+1 + Fxk + b, per cui
xk+1 = D−1 (Exk+1 + Fxk + b), allora per vk vale
vk = xk+1 − xk = D−1 (Exk+1 + Fxk + b) − xk .
Per ottenere SOR, si sceglie ω e si definisce xk+1 = xk + ωvk . Sostituendo vk si ottiene
xk+1 = xk + ωD−1 (Exk+1 + Fxk + b) − ωxk
= (1 − ω)xk + ωD−1 (Exk+1 + Fxk + b).
Portando a sinistra il termine in xk+1 si ha
(I − ωD−1 E)xk+1 = (1 − ω)xk + ωD−1 (Fxk + b) cioè, moltiplicando per D da sinistra,
(D − ωE)xk+1 = (1 − ω)Dxk + ωFxk + ωb.
Dividendo per ω si ottiene l’iterazione SOR:
(1/ωD − E)xk+1 = ((1/ω − 1)D + F)xk + b.

3.1.5 Risultati di convergenza per il metodo SOR


Riportiamo di seguito alcuni risultati di convergenza per il metodo SOR. Rimandiamo alla ricca
letteratura per ulteriori approfondimenti.
Teorema 3.1.12 (di Kahan) La condizione ω ∈ (0, 2) è necessaria per la convergenza del metodo
SOR in quanto
ρ(BSOR (ω)) ≥ |ω − 1|.
Dimostrazione. Siano {λi }i=1,...,n gli autovalori della matrice di iterazione BSOR (ω). Allora
n 
Y −1 
λi = det (BSOR (ω)) = det I − ωD−1 E (1 − ω) I + ωD−1 F
i=1
 −1 
I − ωD−1 E det (1 − ω) I + ωD−1 F .

= det

45
Grazie alla struttura strettamente triangolare risp. inferiore e superiore di D−1 E, D−1 F, si ha
 n
−1  Y
det( I − ωD−1 E −1
(1 − ω) = (1 − ω)n .

= 1, det (1 − ω) I + ωD F =
i=1
Qn
Si ottiene quindi i=1 λi = (1 − ω)n , che implica
v
u n
uY
ρ(BSOR (ω)) ≥ t n
λi = |1 − ω|,
i=1

da cui segue la tesi. □

Teorema 3.1.13 (di Ostrowski) Sia A s.d.p., allora il metodo SOR converge se e solo se ω ∈
(0, 2). In più la convergenza è monotona in ∥ · ∥A .

La scelta del parametro di rilassamento ω è cruciale per una buona velocità di convergenza
del metodo SOR. Il problema della determinazione del valore ωopt in corrispondenza del quale la
velocità di convergenza sia la più elevata possibile (cioè ωopt per cui ρ(BSOR ) sia minimo) è assai
complesso e se ne conoscono soluzioni soddisfacenti solo in casi particolari.

Teorema 3.1.14 Sia A s.d.p. e tridiagonale. Supponiamo che ρ(BJ ) < 1, dove BJ indica la
matrice di iterazione del metodo di Jacobi. Allora il metodo SOR converge per ogni iterato iniziale
x0 ∈ Rn se ω ∈ (0, 2) e in tal caso
2
ωopt = p .
1 + 1 − ρ2 (BJ )

Per tale ωopt si ha inoltre che


p
1− 1 − ρ2 (BJ )
ρ(BSOR (ωopt )) = p = ωopt − 1.
1+ 1 − ρ2 (BJ )

Anche se A è una matrice simmetrica, i metodi di Gauss-Seidel e SOR generano matrici di


iterazione non necessariamente simmetriche. Esistono tuttavia varianti di questi metodi (es. il
metodo SSOR) che generano matrici di iterazione simmetriche, partendo da matrici dei coefficienti
simmetriche.

3.2 Il metodo dei gradienti coniugati


Il metodo dei gradienti coniugati (CG) è un esempio di metodo iterativo non stazionario per la
risoluzione del sistema lineare Ax = b, con A ∈ Rn×n simmetrica e definita positiva, e b ∈ Rn ,
in quanto determina una successione di approssimazioni {xk }k≥0 mediante una iterazione del tipo
xk+1 = xk +αk pk , dove il coefficiente αk viene ricalcolato ad ogni iterazione. L’algoritmo può essere
visto come un metodo per la risoluzione di un problema di minimo di un funzionale. Consideriamo
la seguente funzione convessa,
1 T
Φ : Rn → R, Φ : x 7→ x Ax − bT x, (3.8)
2
ed il problema di minimo:
min Φ(x).
x∈Rn

46
Questo problema ha come unica soluzione x∗ = A−1 b = arg minn Φ(x), poichè vale ∇Φ(x∗ ) = 0
x∈R
dove ∇Φ(x) = −b + Ax; inoltre, se x∗ è soluzione del sistema, si verifica che per ogni altro y ∈ Rn
si ha Φ(x∗ + y) = Φ(x∗ ) + 12 y T Ay > Φ(x∗ ) e quindi Φ(x∗ ) è l’unico minimo.
Definiamo quindi una successione di soluzioni approssimate {xk }k∈N tale che

xk+1 = xk + αk pk , (3.9)

con αk ∈ R e pk ∈ Rn , dove il vettore pk è un vettore lungo la direzione di discesa di Φ, cioè tale


che
pTk ∇Φ(xk ) < 0, ∀ k.
Con tale scelta, xk+1 è sulla retta per xk e nella direzione di pk . Dall’iterazione per xk+1 si ottiene
anche l’iterazione per il residuo rk+1 = b − Axk+1 , cioè sostituendo,

rk+1 = rk − αk Apk , r0 = b − Ax0 .

Rimangono quindi da determinare αk e pk . Ogni scelta di pk definirà un diverso metodo di discesa.


T
rk pk
Proposizione 3.2.1 Per xk , pk ∈ Rn fissati, Sia xk+1 = xk +αk pk . La scelta αk = pT
, soddisfa
k Apk

Φ(xk+1 ) = min Φ(xk + αpk ).


α∈R

1
Dimostrazione. Si ha Φ(xk + αpk ) = (xk + αpk )T A(xk + αpk ) − bT (xk + αpk ). Inoltre,
2
dΦ 1 1
(xk + αpk ) = pTk A(xk + αpk ) + (xk + αpk )T Apk − bT pk = (xk + αpk )T Apk − bT pk ,
dα 2 2
(bT −xT A)p rT p
dove è stata sfruttata la simmetria di A. Imponendo dΦ dα = 0, si ha αk = pT
k k
= pTkApkk . Il
k Apk k
fatto che A sa simmetrica e definita positiva assicura che αk sia un minimo, valutando la derivata
seconda. □
Questa scelta di αk nella proposizione determina il minimo di Φ sulla retta per xk e nella
direzione di pk , e quindi è ottima, almeno localmente.
Si noti che αk è ben definito, in quanto il denominatore è sempre diverso da zero (è strettamente
positivo), grazie all’ipotesi su A di essere simmetrica e definita positiva. Inoltre vale

rkT pk = −∇Φ(xk )T pk > 0 ⇒ αk > 0,

poichè pk è un vettore nella direzione di discesa di Φ. Infine, per come è stato scelto αk , si ha

pTk rk+1 = pTk rk − αk pTk Apk = 0, (3.10)

cioè il nuovo residuo è ortogonale alla direzione precedente.


Come già detto, i metodi di discesa differiscono nella scelta della direzione pk ; ad esempio,
nel metodo di “discesa ripida”, pk corrisponde alla direzione di massima pendenza, quindi pk =
−∇Φ(xk ) = rk . Per la proprietà (3.10), le direzioni successive saranno quindi ortogonali tra loro.
Nel metodo dei gradienti coniugati, invece, pk è scelto in modo da soddisfare una condizione di
A-coniugazione: le direzioni vengono determinate mediante l’iterazione

p0 = r0 , pk+1 = rk+1 + βk pk , per k ≥ 0, (3.11)

dove βk è ottenuta in modo che pk e pk+1 siano A-coniugati, cioè

pTk+1 Apk = 0. (3.12)

47
Sostituendo pk+1 in (3.12) si ottiene
T
rk+1 Apk
0 = pTk+1 Apk = (rk+1 + βk pk )T Apk = rk+1
T
Apk + βk pTk Apk , ⇒ βk = − T
. (3.13)
pk Apk

Con questa relazione l’algoritmo dei gradienti coniugati è formalmente completato, in quanto
tutte le quantità sono state definite. Nel seguito, comunque, vengono evidenziate alcune proprietà
che permettono un calcolo più conveniente dei coefficienti αk e βk .
Le direzioni pk definite in (3.11) sono effettivamente direzioni di discesa per la funzione Φ definita
in (3.8). Infatti, fintanto che xk+1 non è la soluzione esatta,

pTk+1 ∇Φ(xk+1 ) = −pTk+1 rk+1 = −(rk+1 + βk pk )T rk+1


T
= −(rk+1 T
rk+1 + βk pTk rk+1 ) = −rk+1 rk+1 = −∥rk+1 ∥2 < 0,
| {z }
=0
da (3.10)

Con questa proprietà è possibile ottenere una diversa espressione per αk , che risulterà più
vantaggiosa da un punto di vista algoritmico:

pTk rk rT rk
αk = T
= Tk .
pk Apk pk Apk

Per i residui vale inoltre rkT rk−1 = 0, infatti

rkT rk−1 = rkT (pk−1 − βk−2 pk−2 ) = −βk−2 rkT pk−2


T
= −βk−2 (rk−1 pk−2 − αk−1 (Apk−1 )T pk−2 ) = 0,
T
dove sono state usate le proprietà rk−1 pk−2 = 0 in (3.10) e (Apk−1 )T pk−2 = 0 in (3.12).
Le relazioni di ortogonalità determinate qui sopra e in (3.12) sono in effetti più generali, ed
infatti vale il seguente risultato.

Teorema 3.2.2 Sia r0 = b − Ax0 il residuo iniziale e supponiamo che rk ̸= 0 per ogni k ≤ b
k.
Allora
rkT rj = 0, ∀ k ̸= j, k, j = 0, . . . , b
k,
e
pTk Apj = 0, ∀ k ̸= j, k, j = 0, . . . , b
k.

Il teorema precedente mostra che tutte le direzioni sono tra loro A-coniugate, e che i residui
sono tra loro ortogonali, o coniugati. Dato che i residui hanno la stessa direzione dei gradienti,
questa proprietà giustifica il nome del metodo “dei gradienti coniugati”.
Queste importanti proprietà permettono di dare una diversa espressione per βk : da rk+1 =
rk − αk Apk si ottiene
T
rk+1 Apk T
rk+1 ( α1k (rk+1 − rk )) T
1 rk+1 rk+1 T
pTk Apk rk+1 rk+1 T
rk+1 rk+1
βk = − T
= T
= T
= T T
= T
.
pk Apk pk Apk αk pk Apk rk rk pk Apk rk rk

La versione finale dell’algoritmo dei gradienti coniugati è quindi data dalla seguente iterazione:
Algoritmo dei Gradienti Coniugati.
Fissato x0 ∈ Rn , e posto r0 = b − Ax0 , p0 = r0 e β0 = 0, ρ0 = r0T r0
Per k = 0, 1, . . . ,

48
αk = pTρAp
k
k
, 2n flops + 1 Mxv
k
xk+1 = xk + αk pk , 2n flops
rk+1 = rk − αk Apk , 2n flops
T k+1 rT r ρk+1
ρk+1 = rk+1 rk+1 , βk = k+1
Tr
rk k
= ρk , 2n flops
pk+1 = rk+1 + βk pk , 2n flops
end
L’algoritmo ha un costo computazionale di 10n operazioni floating point per iterazione, a cui
va aggiunto il costo di una moltiplicazione matrice-per-vettore (il prodotto compare due volte, ma
includendo un ulteriore vettore di “lavoro” w = Apk , è sufficiente richiamare w nel calcolo del
residuo rk+1 invece di ricalcolare il prodotto).
Il seguente risultato assicura che in aritmetica esatta, il metodo termina in al più n passi.

Teorema 3.2.3 Sia Kk = span {p0 , . . . , pk−1 }. Allora Φ(xk ) = minx∈Kk Φ(x).

Dopo n iterazioni, il sottospazio Kk coincide con tutto Rn , quindi la soluzione approssimata


corrente coincide con il minimo in tutto lo spazio, e quindi con la soluzione esatta. In pratica
l’algoritmo permette di determinare una soluzione accurata molto prima di n passi, e quindi viene
solitamente inserito un criterio d’arresto, dopo aver calcolato il residuo. Come per gli altri metodi
iterativi, questo criterio può essere basato sulla norma del residuo, cioè
∥rk+1 ∥
< tol
∥r0 ∥
dove tol è una tolleranza fissata a priori. In generale, è anche opportuno prevedere un massimo
numero di iterazioni, per terminare l’iterazione nel caso di convergenza troppo lenta.
Osservazione. Guardando attentamente la definizione delle successioni {rk }, {pk }, si ottiene
la seguente relazione:

span {p0 , p1 , . . . , pk−1 } = span {r0 , r1 , . . . , rk−1 } = span {r0 , Ar0 , . . . , Ak−1 r0 },
dove lo spazio Kk (A, r0 ) = span {r0 , Ar0 , . . . , Ak−1 r0 } è detto “sottospazio di Krylov” di dimensio-
ne k associato ad A e generato da r0 . La dimostrazione esplicita delle due uguaglianze può essere
fatta per induzione.
Il seguente risultato mostra una condizione sufficiente perchè il metodo converga in meno di n
passi, in aritmetica esatta.
Osservazione. Se Kk (A, r0 ) è invariante per A, allora x∗ ∈ Kk (A, r0 ), cioè la soluzione esatta
è contenuta nello spazio, cosicchè xk = x∗ .
Dim. Per semplicità supponiamo x0 = 0, per cui r0 = b. L’ipotesi assicura che AKk (A, r0 ) ⊆ Kk (A, r0 ). Per il
residuo rk = b − Axk vale quindi rk ∈ Kk (A, r0 ), dato che b = r0 ∈ Kk (A, r0 ) e Axk ∈ AKk (A, r0 ) ⊆ Kk (A, r0 ).
D’altra parte, rk ⊥ rj per ogni j < k, e span {r0 , r1 , . . . , rk−1 } = Kk (A, r0 ), quindi dev’essere necessariamente
rk = 0, da cui segue la tesi.

Riportiamo un importante risultato di convergenza molto generale, che si applica a qualsiasi


matrice A simmetrica e definita positiva, e per qualsiasi dato iniziale x0 .

Teorema 3.2.4 Sia A ∈ Rn×n s.d.p. e sia x∗ la soluzione esatta del sistema Ax = b. Allora il
metodo dei gradienti coniugati soddisfa

∥x∗ − xk ∥A = min ∥x∗ − x∥A ,


x∈Kk

49
cioè minimizza l’errore in norma A (norma energia) nel sottospazio di Krylov Kk . Inoltre
p !k
κ2 (A) − 1
∥x∗ − xk ∥A ≤ 2 p ∥x∗ − x0 ∥A .
κ2 (A) + 1

Il primo risultato del teorema mostra il legame tra l’algoritmo ed il problema di minimo di
partenza, in quanto la minimizzazione del funzionale è equivalente alla minimizzazione dell’errore
in norma energia. Infatti si ha
1
∥x∗ − x∥2A = (x∗ − x)T A(x∗ − x) = . . . = 2( xT Ax − xT b) + xT∗ Ax∗ = 2Φ(x) + xT∗ Ax∗ .
2
Visto che xT∗ Ax∗ è positivo e non dipende da x, minimizzare ∥x∗ − x∥A con x ∈ Kk corrisponde a
minimizzare Φ(x) per x ∈ Kk .
Il teorema propone inoltre una stima dell’errore dopo k iterazioni, che dipende dal numero di
condizionamento della matrice dei coefficienti, κ2 (A) = cond2 (A) = λmax /λmin . Se la matrice è
ben condizionata, allora il metodo converge in poche iterazioni, mentre potrebbe convergere molto
lentamente nel caso di una matrice A molto mal condizionata, cioè con κ2 (A) ≫ 1.
Si noti che per il metodo di discesa ripida vale il seguente risultato
 k
κ2 (A) − 1
∥x∗ − xk ∥A ≤ 2 ∥x∗ − x0 ∥A ,
κ2 (A) + 1

che mostra che tale metodo può essere molto più lento del metodo dei gradienti coniugati.

Nel caso in cui la matrice dei coefficienti A non sia s.d.p., esistono altri metodi basati sul
sottospazio di Krylov Kk . Per esempio
ˆ Nel caso in cui A non sia simmetrica definita positiva, possiamo utilizzare i gradienti coniugati
applicandoli al sistema di equazioni normali AT Ax = AT b. In questo modo la matrice dei coef-
ficienti risulta simmetrica e definita positiva. D’altra parte, il suo numero di condizionamento
cresce. Per esempio, per A simmetrica ma indefinita, vale κ(AT A) = κ(A)2 .

ˆ MINRES, SYMLQ, per sistemi simmetrici ma non definiti positivi;

ˆ BICG, GMRES, ecc: per sistemi non simmetrici.

50
Capitolo 4

La fattorizzazione QR

4.1 Introduzione
In questo capitolo trattiamo la fattorizzazione QR, che è uno strumento di fondamentale importanza
in moltissimi ambiti dell’analisi numerica. Più precisamente, data una generica matrice A ∈ Rn×m
con n ≥ m, allora A può essere scritta come prodotto di due matrici come segue:
 
R1
A = QR = [Q1 , Q2 ] = Q1 R1 , R1 ∈ Rm×m ,
0

dove Q è una matrice n × n reale ortogonale, Q = [Q1 , Q2 ] con Q1 ∈ Rn×m e Q2 ∈ Rn×(n−m) ,


dove le colonne di Q1 , Q2 sono ortonormali. Inoltre, R1 è triangolare superiore ed R ha le stesse
dimensioni di A. La versione A = Q1 R1 prende il nome di fattorizzazione QR ridotta (o skinny, o
economy-size), perchè non genera nè memorizza1 la matrice Q2 .
La fattorizzazione permette di evidenziare se A ha rango massimo. Infatti, se R1 è singolare,
cioè ha elementi diagonali nulli, allora ci sono colonne di A che sono linearmente dipendenti. D’altra
parte, se R1 è non singolare, allora A ha rango massimo e Range(Q1 ) = Range(A). In seguito
supporremo che R1 sia non singolare.
La fattorizzazione QR permette di determinare una base ortogonale per lo spazio immagine di
A, dato che vale Range(Q1 ) = Range(A). Vedremo nel paragrafo 4.2 che è possibile determinare
questa base con il metodo di Gram-Schmidt, e che quest’ultimo in effetti fornisce una fattorizzazione
“ridotta”, A = Q1 R1 .
Dalla fattorizzazione QR si ha anche QT A = R, cioè Q è la matrice che trasforma A in una
matrice triangolare superiore. Questo modo di procedere verrà usato nei metodi numerici per i
problemi agli autovalori, in cui n = m. Algoritmi per generare la matrice completa QT verranno
discussi nel paragrafo 4.3.
Nel caso in cui A sia invece “larga”, cioè n < m, la fattorizzazione QR è ancora possibile, e le
dimensioni delle matrici risultanti sono conformi. Più precisamente,

A = QR = Q[R1 , ⋆],
1 si noti che QT A = 0, quindi le colonne di Q generano una base per lo spazio nullo (kernel) di AT se R è non
2 2 1
singolare.

51
in cui Q è n × n ortogonale, R1 è triangolare superiore, e ⋆ è una matrice piena. Le colonne di
Q generano lo spazio immagine di A, come in precedenza, ma in questo caso Range(A) ha al più
dimensione n.
La fattorizzazione QR può essere usata per la risoluzione di sistemi lineari con matrice A ∈ Rn×n .
Infatti, scrivendo A = QR con Q ortogonale e R ∈ Rn×n triangolare superiore, si ha

Ax = b ⇔ QRx = b ⇔ Rx = (QT b) ⇔ x = R−1 (QT b).

Oltre al calcolo effettivo della fattorizzazione, questo modo di procedere richiede di effettuare il
prodotto QT b (ma questo può essere fatto durante la fattorizzazione stessa, si veda la discussione
nel Capitolo 5) e la risoluzione del sistema triangolare superiore. Il costo complessivo è alto, più alto
dell’eliminazione Gaussiana, anche se sempre O(n3 ) (si veda il paragrafo 4.3.1 per maggiori dettagli
sul costo della fattorizzazione). D’altra parte, il metodo è più stabile dell’eliminazione di Gauss, e
può essere preferibile per matrici per cui l’eliminazione di Gauss mostra problemi di accuratezza
perchè A è mal condizionata.

4.2 Ortogonalizzazione di Gram-Schmidt


La ortogonalizzazione di Gram-Schmidt è un algoritmo per trasformare una base di un sottospazio
vettoriale di Rn di dimensione m in una base ortonormale. In pratica, si tratta in effetti di una
fattorizzazione QR ridotta, in cui gli elementi di R1 coincidono con i coefficienti dell’ortogonaliz-
zazione. Più precisamente, sia A = [a1 , a2 , . . . , am ] ∈ Rn×m con n ≥ m. Allora l’algoritmo di
Gram-Schmidt per determinare la base ortonormale {q1 , . . . , qm } procede come segue

q1 = a1 /∥a1 ∥
qb2 = a2 − q1 (q1T a2 )
q2 q2 ∥
= qb2 /∥b
qb3 = a3 − q1 (q1T a3 ) − q2 (q2T a3 )
q3 ∥
q3 = qb3 /∥b
.. ..
. .

Si noti che dato un vettore v, l’operazione vb = v − qj (qjT v) con qj di norma unitaria, “elimina”
dal vettore v la direzione del vettore qj ; il vettore risultante vb soddisfa quindi qjT vb = 0.
Riscrivendo le espressioni sopra in modo da avere tutti i termini in qj a destra, si ha

a1 = q1 ∥a1 ∥
a2 = q1 (q1T a2 ) + q2 ∥b
q2 ∥
a3 = q1 (q1T a3 ) + q2 (q2T a3 ) + q3 ∥b
q3 ∥
.. ..
. .

In forma compatta matriciale, queste relazioni possono essere quindi scritte come
∥a1 ∥ q1T a2 q1T a3 . . .
 
 0 ∥bq2 ∥ q2T a3 . . .
[a1 , a2 , a3 , . . .] = [q1 , q2 , q3 , . . .]  0 = Q1 R1 .
 
 0 ∥bq3 ∥ . . . 

..
0 0 0 .

52
Dunque nella fattorizzazione QR ridotta risultante, gli elementi di R1 sono in effetti i coefficienti
della ortonormalizzazione. Nel caso in cui si abbia qbj = 0 per qualche j, allora, ∥b qj ∥ = 0 e R1 sarà
singolare, evidenziando il fatto che le colonne a1 , . . . , aj sono linearmente dipendenti. L’algoritmo
di Gram-Schmidt quindi termina, non essendo in grado di costruire il prossimo elemento della base
ortonormale, qj .
Da un punto di vista numerico, anche quantità ∥b qj ∥ molto piccole sono di enorme interes-
se, perchè evidenziano che la matrice A ha colonne “quasi” linearmente dipendenti. In parti-
colare, se ∥b qj ∥ = O(u), allora la matrice A numericamente ha rango inferiore ad m, anche se
matematicamente A ha rango pieno.
Anche se in aritmetica esatta la procedura “classica” di Gram-Schmidt descritta sopra determina
una base ortogonale, in aritmetica floating point i vettori cosı̀ determinati spesso non sono ortogonali
(al livello della precisione macchina). È possibile farne una modifica che risulta essere più accurata,
anche da un punto di vista numerico, dando luogo alla procedura di Gram-Schmidt modificata.

4.3 Matrici ortogonali di trasformazione


Le matrici di trasformazione hanno un ruolo chiave sia nei problemi agli autovalori che in quelli
dei minimi quadrati. Nel seguito vengono introdotte le matrici di riflessione di Householder e le
matrici di rotazione di Givens: entrambe queste classi di matrici permettono di annullare specifici
elementi, o gruppi di elementi di vettori, e rappresentano uno strumento semplice ma molto potente
per la costruzione di altri metodi.

4.3.1 Matrici di riflessione di Householder


Dato un vettore v ∈ Rn , v ̸= 0, detto vettore di Householder, la matrice di riflessione di Householder
è definita come segue:
2
P := I − βvv T ∈ Rn×n , con β = .
∥v∥22
Si noti che P è una modifica di rango uno della matrice identità. Nel seguito vengono illustrate
alcune sue importanti proprietà.

i) P è simmetrica e ortogonale. La simmetria è evidente. Per l’ortogonalità si ha:


T
PPT = I − βvv T I − βvv T = I − βvv T − βvv T + β 2 v(v T v)v T = I − 2βvv T + 2βvv T = I,


dove si è utilizzato il fatto che β 2 v(v T v)v T = (4/∥v∥4 )v∥v∥2 v T = 2βvv T .


ii) P è una riflessione. Sia x ∈ Rn , allora il vettore y = Px è il riflesso di x rispetto all’iperpiano
span {v}⊥ . Infatti ogni vettore x ∈ Rn può essere scritto come x = γv + x2 dove γ ∈ R e
x2 ⊥ v. Quindi

Px = I − βvv T x = I − βvv T (γv + x2 ) = γv + x2 − γβv |{z} v T v −βv v T x2 = −γv + x2 .


 
| {z }
=2/β =0

iii) P può annullare componenti di un vettore. Dato x, è possibile determinare una matrice di
riflessione P tale che Px = αe1 = [α, 0, . . . , 0]T dove |α| = ∥Px∥2 = ∥x∥2 ; e1 è il primo vettore
della base canonica di Rn . A tal fine, è sufficiente scegliere v come segue (entrambi i segni +
o − possono essere usati per α):

sgn (x1 ), se x1 ̸= 0,
v := x − αe1 , con α = ±∥x∥2 θ, dove θ =
1, se x1 = 0.

53
2
Quindi, Px = (I − βvv T )x = x − vT v
vv T x. Siccome
T
v T x = (x − αe1 ) x = xT − αeT1 x = xT x − αeT1 x = ∥x∥22 − αx1 = α2 − αx1 ,


vT v xT − αeT1 (x − αe1 ) = xT x − αxT e1 − αeT1 x + α2 eT1 e1



=
= ∥x∥22 −2αx1 + α2 = 2 α2 − αx1 ,

| {z }
=α2

si ottiene
2 2
Px = x − vv T x = x − v(α2 − αx1 ) = x − v = αe1 .
vT v 2 (α2 − αx1 )

Le matrici di Householder possono essere usate per determinare la fattorizzazione QR di una


matrice A ∈ Rn×m sfruttando la proprietà (iii) appena descritta. Se a1 denota la prima colonna
di A, allora si determina P1 = I − β (1) vv T con v = a1 − α(1) e1 e β (1) , α(1) definite di conseguenza.
Quindi posto R(0) = A si ha
 (1) 
α ∗ ··· ∗
 0 ∗ · · · ∗
P1 R(0) =  . (1)
..  =: R .
 
.. ..
 .. . . .
0 ∗ ··· ∗

Il costo computazionale dell’applicazione di P1 all’intera matrice R(0) si calcola come segue: il


vettore v ha n componenti, quindi l’applicazione di P1 ad ogni colonna x, P1 x = x − βv(v T x),
richiede due prodotti scalari (per β e per v T x), ed una daxpy, per un totale di (2n−1)+(2n−1)+2n =
6n − 2 flops. L’applicazione a tutte le m colonne richiede quindi un costo totale di (6n − 2)m flops.
Si noti comunque che β dev’essere calcolata una sola volta, quindi il costo effettivo è
di (4n − 2)m + 2n flops.
Si definisce quindi una seconda matrice di Householder per azzerare gli elementi della seconda
colonna, sotto la diagonale principale,
 
1 0 (2) T (n−1)×(n−1)
P2 = b 2 , P2 = I − β vv ∈ R
b , v = (R(1) )2:n,2 − α(2) e1 ,
0 P

con e1 ∈ Rn−1 e β (2) , α(2) di nuovo definite di conseguenza. Quindi


 (1) 
α ∗ ∗ ··· ∗
(2)
 0
 α ∗ ··· ∗ 
P2 P1 R(0) = P2 R(1) =  0
 0 ∗ ··· ∗  =: R(2) .
 . . .. .. .. 
 .. .. . . .
0 0 ∗ ··· ∗

b j ha dimensioni decrescenti, (n − j + 1) × (n −
Si noti che ad ogni passo, la matrice di Householder P
j + 1), quindi la matrice di trasformazione usata, Pj , deve essere completata nella parte diagonale
in alto con una porzione della matrice identità. Anche la sua applicazione viene limitata ad una

54
porzione sempre più piccola della matrice n×n. Il costo computazionale associato diminuisce quindi
ad ogni passo, ed è di (4(n − j + 1) − 2)(m − j) flops al passo j. Dopo m passi, si otterrà
 (1) 
α ∗ ∗ ··· ∗
 0
 α(2) ∗ ··· ∗  
(3)
 0 0 α · · · ∗
 
R1

(0)
Pm · · · P2 P1 R =  . =: =: R.
 
 .. .. .. .. ..  0
 . . . . 

 0 0 0 · · · α(m) 
0 0 0 ··· 0
Posto QT = Pm · · · P2 P1 , si ottiene quindi QT A = R. La matrice QT è ortogonale perchè prodotto
di matrici ortogonali, per
Pmcui A = QR. Il costo computazionale
Pm complessivo per generare Q e R
risulta quindi essere di j=1 (4(n − j + 1) − 2)(m − j) ≈ 4 j=1 (n − j)(m − j) = 2nm2 − 2/3m3 + ...
flops.
Le matrici di Householder possono essere anche usate per trasformare una matrice n×n in forma
di Hessenberg superiore, mantenendo invariati gli autovalori, mediante applicazione da sinistra e da
destra delle stesse trasformazioni. Questa procedura verrà usata nel metodo QR per approssimare
la decomposizione di Schur di una matrice. Più precisamente, nel seguito mostriamo che è possibile
determinare Q ortogonale tale che la matrice QT AQ = A e soddisfa A
e ij = 0 per i > j + 1. Infatti,
siano  
Ij 0
Pj =
0 Pbj

le matrici di trasformazione con P b j matrici di Householder, tali che gli elementi sotto al (j + 1)-
esimo elemento diagonale della colonna j-esima vengano annullati. Per j = 1, sia H(2) = P1 A.
Notiamo poi che l’applicazione di PT1 = P1 da destra non distrugge la forma di Hessenberg. Infatti
   
× × ··· × × ⋆ ··· ⋆
× × · · · ×    × ⋆ · · · ⋆

 0 × · · · × 1 0
 
(2)  0 ⋆ · · · ⋆
H P1 =  b1 = 
..  0 P
 
 .. .. ..  .. .. .. .. 
. . . . . . . .
0 × ··· × 0 ⋆ ··· ⋆

dove con ⋆ sono indicati gli elementi che sono stati modificati. Sia quindi P2 = diag(I2 , P
b 2 ) la
matrice di trasformazione che azzera gli elementi della seconda colonna, dal quarto elemento in
poi. La matrice risultante H(3) = P2 (P1 AP1 ) avrà le prime due colonne in forma di Hessenberg
superiore, cioè  
× × ··· × ×
× × · · · × ×
 
 0 × · · · × ×
H(3) =  0 0 · · · × × .
 
 
 .. .. .. .. .. 
. . . . .
0 0 ··· × ×
La moltiplicazione da destra per P2 non coinvolgerà le prime due colonne, per cui la forma di
Hessenberg sarà preservata. Quindi la procedura continua nel modo seguente:
e = P(n−2) (· · · (P(2) (P(1) AP(1) )P(2) ) · · · )P(n−2) ,
A
che costituisce la forma finale desiderata. Il costo computazionale di questa operazione è dell’ordine
di quello per la fattorizzazione QR, dato che il costo dell’applicazione delle matrici di Householder
da destra è lo stesso: O(n3 ) flops.

55
Nonostante la trattazione delle matrici di Householder sia stata fatta in R, non ci sono modifiche
sostanziali nel caso di C. Le matrici risultanti saranno ovviamente unitarie (ortogonali in C).

4.3.2 Rotazioni di Givens


Da un punto di vista geometrico, le “rotazioni” di Givens sono matrici ortogonali 2×2 che effettuano
una rotazione di un vettore nel piano, in modo da portare il vettore sull’asse delle ascisse. Quindi,
dato x = (x1 , x2 )T ∈ R2 , si tratta di determinare una matrice (di rotazione) G ∈ R2×2 tale che
y = Gx = (y1 , 0)T . La rotazione è data da
 
cos θ sin θ
G= ,
− sin θ cos θ
x2 x1
dove2 sin θ = √ e cos θ = √ . Quindi y = Gx = (∥x∥2 , 0)T . La matrice G cosı̀ costruita
x21 +x22 x21 +x22
è ortogonale, infatti
cos2 θ + sin2 θ
    
cos θ sin θ cos θ − sin θ − cos θ sin θ + sin θ cos θ
GGT = = = I.
− sin θ cos θ sin θ cos θ − cos θ sin θ + sin θ cos θ sin2 θ + cos2 θ

Il costo computazionale dell’applicazione di G ad un vettore è di 6 flops.


Come per le matrici di Householder, le matrici di Givens possono essere usate per azzerare,
questa volta specifici, elementi di una matrice data, uno alla volta. La procedura può quindi
essere usata per trasformare una matrice A in una matrice triangolare superiore, anullando tutti
gli elementi sotto la diagonale principale, dalla prima all’ultima colonna. La procedura è simile alla
eliminazione di Gauss: per la prima colonna, per esempio, si procede cosı̀:

   
× × ... × × × ... ×
  × × . . .
 × × × ... ×
In−2 0  . .. ..
 
..  =  .. .. ..

.. 
(n−1)  .. . . .
0 G1  . . . .

 
× × . . . ×  ⋆ ⋆ ⋆ ⋆
× × ... × 0 ⋆ ⋆ ⋆
   
× × ... × × × ... ×
  . .. .. ..   .. .. .. .. 
In−3 0 0  .. . . . . . . .

(n−2)
 0 G1 0 × × = ⋆ ...
 
. . . × ⋆ ⋆ ⋆

0 0 1 × ×
   
. . . ×  0 ⋆ ⋆ ⋆
0 × ... × 0 × ... ×

Ogni applicazione costa 6m flops, perchè la rotazione viene applicata a tutti gli elementi delle
corrispondenti due righe della matrice. Per azzerare tutti gli elementi sotto la diagonale della prima
colonna sono necessarie n − 1 applicazioni e quindi 6m(n − 1) flops. L’azzeramento degli elementi
della j-esima colonna (agendo solo sul blocco (n − j) × (m − j) rimanente), richiede 6(n − j)(m − j)
flops.
Pm Il costo complessivo per2 una fattorizzazione QR mediante rotazioni di Givens è quindi di
3
j=1 6(n − j)(m − j) = O(nm + m ).
Agendo su specifici elementi di una matrice, le rotazioni di Givens sono particolarmente adatte
a ridurre a forma triangolare superiore matrici aventi già una struttura con pochi elementi non
zero sotto la diagonale principale, come ad esempio matrici di tipo Hessenberg superiore. In questo
ultimo caso, ciò implica che nella matrice originaria solo un elemento P per colonna deve essere
m
annullato. Il costo computazionale si riduce sensibilmente, avendosi quindi j=1 6(m−j) = O(m2 ).
p p
2 In C si avrà cos θ = |x1 |/ |x1 |2 + |x2 |2 e sin θ = (x1 /|x1 |)x̄2 / |x1 |2 + |x2 |2 .

56
Come per le trasformazioni di Householder, notiamo infine che se applichiamo le rotazioni di
Givens per ottenere una matrice di Hessenberg superiore, la successiva applicazione a destra delle
stesse rotazioni (trasposte) in sequenza non distrugge la forma di Hessenberg. Questa proprietà
rende le trasformazioni di Givens molto interessanti all’interno dell’iterazione QR per il calcolo degli
autovalori (si veda il paragrafo 6.5), quando la matrice di iterazione ha forma di Hessenberg.

57
Capitolo 5

Problema dei minimi quadrati

Il problema dei minimi quadrati trova applicazione in molti ambiti del calcolo scientifico. Un
esempio molto comune è quello della regressione lineare nella statistica applicata, ma ci sono molte
altre applicazioni dove il problema dei minimi quadrati è usato per approssimare la soluzione di un
sistema Ax = b sovradeterminato, cioè con un numero di equazioni superiore al numero di incognite.
Dati A ∈ Rn×m , con n ≥ m e b ∈ Rn , il problema dei minimi quadrati consistente nel determinare
il vettore x ∈ Rm che minimizzi il residuo r := b − Ax, tipicamente in norma Euclidea, cioè

min ∥b − Ax∥2 , (5.1)


x∈Rm

Nel seguito vengono proposti tre diversi modi per la risoluzione di questo problema, con proprietà
di accuratezza e stabilità piuttosto diverse, almeno il primo rispetto agli altri due. In tutti i casi,
verrà supposto che A abbia rango massimo, uguale ad m.

5.1 L’equazione normale


Il primo metodo risolutivo proposto trasforma il problema di minimo in un sistema lineare, detto
sistema normale o equazione normale, avente una sola soluzione. A tal fine diamo il seguente
risultato generale, che stabilisce condizioni di esistenza ed unicità della soluzione di (5.1), e mostra
il suo legame con l’equazione normale. Premettiamo un lemma che verrà usato nella dimostrazione
del teorema.

Lemma 5.1.1 Una matrice A ∈ Rn×m con n ≥ m ha rango massimo se e solo se la matrice AT A
è non singolare.

Dimostrazione. Sia A = Q1 R1 la fattorizzazione QR di A, con R1 quadrata m × m e Q1 avente


colonne ortonormali. Dalla procedura di Gram-Schmidt, per es., segue che le colonne di A sono
linearmente indipendenti se e solo se R1 è non singolare. Si ha inoltre che AT A = R1T QT1 Q1 R1 =
R1T R1 ≥ 0. Segue quindi che AT A è non singolare, ed in particolare definita positiva, se e solo se
R1T R1 è non singolare, e cioè definita positiva, cioè se R1 è non singolare. □
È quindi possibile procedere con il risultato generale.

Teorema 5.1.2 Sia X l’insieme dei vettori x ∈ Rm che risolvono (5.1). Allora valgono le seguenti
affermazioni:

58
1. x ∈ X se e solo se x è soluzione dell’ equazione normale

AT Ax = AT b; (5.2)

2. X ha un solo elemento se e solo se A ha rango massimo.

Dimostrazione. Siano R = range(A) = {y ∈ Rn taleche y = Ax, x ∈ Rm }, e il suo ortogonale


R = {z ∈ Rn taleche z T y = 0, y ∈ R}. Si può quindi scrivere b = b1 + b2 , con b1 ∈ R e b2 ∈ R⊥ .

1) Si ha r = b−Ax = b1 −Ax+b2 con b1 −Ax ∈ R e b2 ∈ R⊥ . Quindi, dato che bT2 (b1 −Ax) = 0,
si ha
∥r∥22 = ∥b1 − Ax∥22 + ∥b2 ∥22 .
Per ottenere il minimo di ∥r∥, è possibile operare solo sul primo termine, visto che il secondo termine
non contiene x. Quindi il minimo di ∥r∥2 sarà raggiunto se e solo se esiste x tale che b1 = Ax.
Seguirà inoltre che r = b2 , cosicchè r ∈ R⊥ . In particolare, il residuo r è cosı̀ ortogonale alle colonne
della matrice A:
0 = AT r = AT (b − Ax) ⇔ AT Ax = AT b.
2) Per il Lemma 5.1.1, la matrice A ha rango massimo se e solo se la matrice AT A è non
singolare, cioè se e solo se l’equazione normale (5.2) ha una e una sola soluzione x. □

Nel seguito supporremo A di rango massimo, cioè m. Il Teorema 5.1.2 suggerisce un primo
metodo per la risoluzione del problema ai minimi quadrati. Infatti, per A di rango massimo, la
matrice AT A è s.d.p. e se ne può quindi calcolare la fattorizzazione di Cholesky, AT A = LLT , e
risolvere in ordine i sistemi triangolari
Ly = AT b,
LT x = y.
Queto metodo risulta essere abbastanza costoso, infatti la moltiplicazione AT A con A ∈ Rn×m
costa 21 (2n − 1)m2 flops (la divisione per due è dovuta al fatto che AT A è simmetrica e quindi non
è necessario calcolare esplicitamente sia gli elementi sopra che sotto la diagonale); il prodotto AT b
3
costa (2n − 1)m flops, e la fattorizzazione di Cholesky di AT A costa m3 + O(m2 ) flops, per un
3
totale di (m + 2)mn + m3 + O(m2 ) f lops.
Da un punto di vista numerico, non c’è purtroppo una separazione precisa tra matrici di rango
massimo e radici non di rango massimo. Più precisamente, colonne “quasi” linearmente dipendenti
possono causare seri problemi in aritmetica con precisione finita, anche se matematicamente le
colonne non sono combinazioni lineari. In tal caso, il metodo dell’equazione normale non può essere
usato per risolvere il problema ai minimi quadrati. Rendiamo più precisa questa affermazione
mediante un semplice esempio.

Esempio 5.1.3 Siano    


3 3 1
A = 4 4 , b = 1
0 α 1
dove α ∈ R è tale che con u ≤ α < 1 e α2 < u, dove u indica la precisione di macchina. Calcolando
esplicitamente i prodotti AT A e AT b si ottiene
   
T 25 25 T 7
A A= , A b= ,
25 25 + α2 7+α

59
7
da cui la soluzione del sistema all’equazioni normali AT Ax = AT b, risulta essere x = ( 25 − α1 , α1 )T .
Essendo α2 < u, la rappresentazione di AT A sul calcolatore è data da
 
T 25 25
f l(A A) = ,
25 25

con le due colonne uguali, cioè f l(AT A) è singolare ! In questa circostanza l’equazione normale
in aritmetica con precisione finita non ha soluzioni, e quindi il metodo dell’equazione normale non
risolve il problema ai minimi quadrati.

5.2 Fattorizzazione QR
Un metodo alternativo per la risoluzione del problema ai minimi quadrati (5.1) prevede l’utilizzo
della fattorizzazione QR della matrice A ∈ Rn×m . Scriviamo innanzi tutto
 
R1
A = QR = [Q1 , Q2 ] = Q1 R1 ,
0

con Q ∈ Rn×n ortogonale e R1 ∈ Rm×m triangolare superiore e non singolare (si veda la dimo-
strazione del Lemma 5.1.1). Notiamo in particolare che Range(Q1 ) = Range(A) e Range(Q2 ) =
Range(A)⊥ , dato che QT2 Q1 = 0. Si ha dunque
∥b − Ax∥22 = ∥b − QRx∥22 = ∥Q(QT b − Rx)∥22

2 2
QT1 b − R1 x
   
T R1
= Q b− x = = ∥QT1 b − R1 x∥22 + ∥QT2 b∥22 .
0 2
QT2 b 2

Per minimizzare la norma del residuo, è possibile agire solo sul primo termine della somma che
appare nell’ultima espressione sopra, cioè dev’essere QT1 b − R1 x = 0. Siccome la matrice R1 è non
singolare, il problema ai minimi quadrati (5.1) può essere risolto per x = R−1 T
1 Q1 b. In tal caso si
ha quindi
minm ∥b − Ax∥22 ≡ ∥QT2 b∥22 ,
x∈R

dove ∥QT2 b∥ = ∥Q2 QT2 b∥, e Q2 QT2 b


consiste proprio nella proiezione di b nello spazio ortogonale
alle colonne di A (si confrontino queste considerazioni con quelle nella dimostrazione del Teorema
5.1.2). L’uso della fattorizzazione QR permette di risolvere accuratamente anche quei problemi ai
minimi quadrati in cui la matrice dei coefficienti ha colonne “quasi” linearmente dipendenti come
quello visto nell’Esempio 5.1.3. Infatti, la fattorizzazione di A è
3 
5 0  
4 5 5
A = Q1 R1 = 5 0   ;
0 α
0 1

la matrice R1 ha condizionamento condF (R1 ) = ∥R1 ∥F ∥R−1 1 ∥F ≈ O(1/α), che è significativamente


sotto il valore dell’inversa della precisione di macchina. Il sistema associato può quindi essere risolto
con un buon numero di cifre significative.
È importante notare a fini implementativi che il vettore b̂ := QT b può essere costruito durante la
fattorizzazione QR, applicando al vettore b le matrici ortogonali di trasformazione (di Householder
o di Givens) via via generate, come fatto per le colonne di A. In tal modo, non è necessario
memorizzare esplicitamente Q ed il costo computazionale può essere di molto inferiore.
Riassumendo, la procedura per la determinazione di x mediante fattorizzazione QR è data dai
seguenti passi:

60
1. Applica le trasformazioni ad A e b contemporaneamente:
[R1 , b̂] := Pm Pm−1 · · · P1 [A, b]

2. Determina x = (R1 )−1 (b̂)1:m risolvendo il sistema triangolare superiore.

Il seguente teorema mostra come la fattorizzazione QR permetta di risolvere, in pratica, un


problema “vicino” al problema originario (5.1), e quindi è stabile secondo l’analisi all’indietro.
Teorema 5.2.1 Il vettore x b ∈ Rm , approssimazione della soluzione del problema (5.1) ottenuta
mediante fattorizzazione QR, è tale che
b = argmin ∥(A + δA)x − (b + δb)∥2 ,
x
x∈Rm

dove
∥δA∥F ≤ (6n − 3m + 40)mu∥A∥F + O(u2 ), e ∥δb∥2 ≤ (6n − 3m + 40)mu∥b∥2 + O(u2 ).

5.3 Decomposizione in valori singolari


Nota: Argomento complementare, non fa parte del programma d’esame.
Per matrici rettangolari non è possibile ottenere una diagonalizzazione come, per es., per matrici
quadrate e diagonalizzabili, od a maggior ragione per matrici simmetriche, del tipo XΛXT con X
ortogonale (nel caso reale simmetrico). D’altra parte, è in effetti possibile estendere il concetto di
diagonalizzazione, permettendo di prendere due matrici ortogonali, seppure diverse, come matrici
di trasformazione. Questo è ciò che determina la decomposizione in valori singolari (in inglese,
Singular Values Decomposition, SVD). Questa decomposizione matriciale è dunque molto generale
e ricopre una posizione importante all’interno del calcolo numerico ed in svariati campi applicativi.
In questa sezione ne sarà data la definizione e saranno fornite le prime proprietà fondamentali;
inoltre, verrà mostrata la sua applicazione al problema ai minimi quadrati. Vengono inoltre dati
alcuni cenni su come affrontare il suo calcolo da un punto di vista numerico.
Sia A ∈ Rn×m (o Cn×m ) una generica matrice e si supponga per semplicità di esposizione,
ma senza perdere generalità, che la matrice sia “alta” cioè n ≥ m (nel caso n ≤ m, si può scri-
vere la decomposizione per AT e poi trasporla). Il seguente teorema assicura l’esistenza della
decomposizione.
Teorema 5.3.1 Sia A ∈ Rn×m , con n ≥ m, allora esistono U = [u1 , . . . , un ] ∈ Rn×n , V =
[v1 , . . . , vm ] ∈ Rm×m ortogonali e Σ ∈ Rn×m , tali che
 
σ1
 ..   
Σ1
T
A = UΣV , con Σ = 
 . =

,
 σm  0
0 ... 0
dove Σ1 è diagonale e σ1 ≥ σ2 ≥ · · · ≥ σm ≥ 0.
Le colonne {ui }i=1,...,n della matrice U sono dette vettori singolari sinistri, le colonne {vj }j=1,...,m
di V sono dette vettori singolari destri, e gli scalari {σk }k=1,...,m sono detti valori singolari. In
particolare, la decomposizione mostra che
Avi = ui σi , AT ui = vi σi , i = 1, . . . , m.

61
Ricordiamo che, anche per matrici rettangolari, la norma-2 è definita come

∥A∥22 := max ∥Ax∥22 = max xT AT Ax = λmax (AT A),


∥x∥2 =1 ∥x∥2 =1

dove nell’ultima uguaglianza sono state utilizzate le proprietà del quoziente di Rayleigh. Allora,
per qualsiasi x ∈ Rm con ∥x∥2 = 1, si può scrivere

∥Ax∥2 = ∥UΣVT x∥2 = ∥Σ |V{z


T
x} ∥2 = ∥Σy∥2
=:y,
∥y∥2 =1

 
σ1  
σ1
 .. 
=
 . y

= 
 .. y

≤ σ1 ,
 .
 σm 
σm
0 ... 0 2
2

dove σ1 indica il più grande valore singolare di A. Inoltre, tale valore è raggiunto per x = v1 , infatti
si ha ∥Av1 ∥2 = ∥u1 σ1 ∥2 = σ1 . Quindi effettivamente si ha

∥A∥2 = max ∥Ax∥2 = σ1 .


∥x∥2 =1

In modo del tutto analogo si mostra che per ogni x ∈ Rm con ∥x∥2 = 1 si ha ∥Ax∥2 ≥ σm , e
∥Avm ∥2 = σm , quindi min∥x∥2 =1 ∥Ax∥2 = σm . Se σm ̸= 0, si definisce il numero di condizionamento
di una generica matrice rettangolare B ∈ Rn×m come

σ1 (B)
κ2 (B) := , se σmin{m,n} (B) ̸= 0.
σmin{m,n} (B)

Si noti che questo concetto di condizionamento generalizza quanto visto nel caso di matrici
quadrate non singolari. Infatti, se B ∈ Rn×n , allora B = UΣVT con Σ = diag(σ1 , . . . , σn ) e
T
∥B∥2 = σ1 (B); inoltre B−1 = VΣ−1 U con Σ−1 = diag(1/σ1 , . . . , 1/σn ) (in questo caso in ordine
−1 1
crescente), cosicchè ∥B ∥2 = σn (B) .
La decomposizione in valori singolari e quella in autovalori sono collegate, nonostante la prima
sia molto più generale. Infatti, per A ∈ Rn×m e n ≥ m si ha

AT A = (UΣVT )T UΣVT = VΣT UT UΣVT = VΣ21 VT ,


p
ottenendo cosı̀ la decomposizione spettrale di AT A. In generale vale quindi che σi (A) = λi (AT A),
i = 1, . . . , m, e, nel caso di A normale, σi (A) = |λi (A)|.
Esistono diverse relazioni che legano decomposizione in valori singolari e norme matriciali, ad
esempio,
 2 
σ1 m
..
X
∥A∥2F = tr (AT A) = tr (VΣT UT UΣVT ) = tr (ΣT ΣVT V) = tr ( ) = σk2 .
 
. 
2 k=1
σm

Si noti come la decomposizione in valori singolari possa essere scritta come


m
X
A = UΣVT = ui σi viT ,
k=1

62
e se quindi esiste p ∈ {1, . . . , m − 1} tale che σp+1 = · · · = σm = 0, allora la decomposizione si
riduce al termine p-esimo cioè
  T
p σ1 v1
X
T . . 
A= ui σi vi = [u1 , . . . , up ]  ..   ..  ,
  
k=1 σp vpT
e il rango della matrice A risulta essere proprio p.
Alcune fondamentali proprietà della decomposizione in valori singolari sono riportate nella
proposizione seguente.
Proposizione 5.3.2 Sia A ∈ Rn×m e sia A = UΣVT la sua decomposizione in valori singolari.
Sia p ∈ {1, . . . , m} tale che σp = min{σi , conσi > 0}. Definendo U1 := [u1 , . . . , up ], U2 =
[up+1 , . . . , un ], V1 = [v1 , . . . , vp ] e V2 = [vp+1 , . . . , vm ], valgono le seguenti affermazioni:
1. A ha rango massimo se e solo se p = m.
2. Range (A) = Range (U1 );
3. Range (AT ) = Range (V1 );
4. Ker (A) = Range (V2 );
5. Ker (AT ) = Range (U2 ).
Per dimostrare tali proprietà basta osservare che, data A = UΣVT , si ha
 
Σ1
AV = UΣ = [U1 , U2 ] = U1 Σ1 , (5.3)
0
cioè lo spazio generato dalle colonne di A coincide con lo spazio generato dalle colonne di U1 .
Analogamente, AT = VΣT UT , da cui
AT U = VΣT = [V1 , V2 ][Σ1 , 0] = V1 Σ1 .

La SVD ed il problema dei minimi quadrati


La decomposizione in valori singolari può essere sfruttata per la risoluzione numerica del problema
dei minimi quadrati (5.1). Supponendo A di rango massimo (p = m) ed usando le relazioni in (5.3),
si osserva che
∥b − Ax∥22 = ∥b − UΣVT x∥22 = ∥U(UT b − ΣVT x)∥22 = ∥UT b − Σ |V{z
T
x} ∥22
=:y

 T    2
U1 b Σ1
= − y = ∥UT1 b − Σ1 y∥22 + ∥UT2 b∥22 .
UT2 b 0 2

Ancora una volta, per minimizzare la norma del residuo si può solo agire sul primo dei due termini.
−1 T
Per y = Σ−1 T
1 U1 b tale termine viene annullato, da cui x = Vy = VΣ1 U1 b, che corrisponde
T
alla soluzione cercata. Per il residuo si ha min ∥b − Ax∥2 = ∥U2 b∥2 . Si noti la similarità con la
fattorizzazione QR, dove però ora è stata usata una decomposizione diversa. La soluzione x può
Pm  uT b 
essere espressa come combinazione lineare dei vettori singolari destri come x = k=1 σk1 vi ,
Il seguente teorema mostra le potenzialità della decomposzione in valori singolari e spiega,
almeno in parte, il perchè tale decomposizione venga applicata in gran parte delle aree del calcolo
numerico.

63
T
Teorema 5.3.3 Sia A ∈ Rn×m una matrice di rango massimo Pr e sia AT = UΣV la sua decompo-
sizione in valori singolari. Sia r < m e si definisca Ar := k=1 uk σk vk . Allora

min ∥A − B∥2 = ∥A − Ar ∥2 = σr+1 .


B∈Rn×m
rango (B)=r

Il teorema mostra che tra tutte le matrice di rango r, quella più vicina alla matrice A, in norma
indotta Euclidea, è quella data dalla sua decomposizione in valori singolari troncata al termine
r-esimo. Questo risultato ha innumerevoli utilizzi in ambito applicativo, dalla compressione di
immagini, all’analisi statistica di dati, al pattern recognition e cosi via.
Il Teorema 5.3.3 permette anche di introdurre il concetto di rango numerico di una matrice
−12
che consiste nel numero
Ps s di valori singolari maggiori di una tolleranza prefissata tol (ES: 10 ).
La matrice As := k=1 uk σk vkT è quindi tale che ∥A − As ∥2 = σs+1 , dove σs+1 ≈ 0 può essere
considerato numericamente zero. Una volta calcolato il rango numerico, si può preferire lavorare
con As piuttosto che con A.
Riportiamo infine un risultato che mostra l’errore ottenuto nella soluzione del problema dei
minimi quadrati quando viene usato l’approccio della SVD.

Teorema 5.3.4 Sia A ∈ Rn×m , n ≥ m, una matrice di rango massimo e sia δA ∈ Rn×m una sua
perturbazione tale che ∥δA∥2 < σm (A). Siano poi b ∈ Rn , b ̸= 0 e δb ∈ Rn . Allora si ha che
1. A + δA ha rango massimo;
2. Detta x + δx la soluzione del problema dei minimi quadrati perturbato

min ∥(b + δb) − (A + δA)y∥2 ,


y∈Rm

risulta   
∥δx∥2 κ2 (A) ∥r∥2 ∥b∥2
≤ 1 + κ2 (A) εA + εb ,
∥x∥2 1 − εA κ2 (A) ∥A∥2 ∥x∥2 ∥A∥2 ∥x∥2
dove r = b − Ax è il vettore residuo,
∥δA∥2 ∥δb∥2
εA = , e εb = .
∥A∥2 ∥b∥2

Calcolo della SVD


Per il calcolo effettivo delle matrici U, V, Σ è possibile seguire varie strade; ne mostreremo due, la
seconda delle quali è preferibile da un punto di vista della stabilità. Entrambi i metodi sfruttano
algoritmi visti per il calcolo degli autovalori di matrice. La dimostrazione del Teorema 5.3.1 è
costruttiva, nel senso che mostra un altro metodo per effettivamente costruire le matrici della
decomposizione, ma non viene riportata in questi appunti.
1) Come mostrato in precedenza, se A = UΣV T , allora si ha AT A = VΣ21 VT . Quindi è
possibile determinare i vettori singolari destri vi ed i valori singolari risolvendo il problema agli
autovalori AT Av = λv con le tecniche note, dove vale 2
√ λ = σi . Questa strategia può dare2 difficoltà
per il calcolo di valori singolari piccoli, con σi < u, in quando gli autovalori λi = σi saranno
caratterizzati dall’essere più piccoli della precisione della macchina. In pratica, quindi sono zero in
aritmetica finita, mentre i corrispondenti σi hanno valori ancora apprezzabili.
2) Un approccio che non soffre di questi problemi sfrutta il fatto che la matrice simmetrica

0 AT
 
A=
A 0

64
ammette la decomposizione spettrale A = QΛQT con Q ortogonale, che può essere scritta esplici-
tamente in termini della SVD di A:
 
1 V V 0
Q= √ , U = [U1 , U2 ].
2 U1 −U1 U2
Il prodotto esplicito mostra che

QT A Q = diag(σ1 , σ2 , . . . , σm , −σ1 , −σ2 , . . . , −σm , 0, . . . , 0).

Gli autovalori non zero di A coincidono con i valori singolari di A e compaiono in coppie ±σi . Il
calcolo degli vettori singolari e dei valori singolari associati può essere quindi effettuato con maggiore
accuratezza, al costo di una maggiore dimensione della matrice.

65
Capitolo 6

Problema agli autovalori

6.1 Introduzione
Data A ∈ Rn×n (o Cn×n ), il problema agli autovalori consiste nel calcolo approssimato della coppia
(λ, x) (detta autocoppia) con λ ∈ C e 0 ̸= x ∈ Cn (risp. autovalore e autovettore) tale che
Ax = λx,
Possono essere di interesse sia tutte le autocoppie della matrice A, oppure solo alcune di esse,
quale per l’esempio quella corrispondente all’autovalore più grande in modulo, cosı̀ come può essere
necessario il solo calcolo degli autovalori, senza i corrispondenti autovettori.
Questo tipo di problema ha grande interesse applicativo, per esempio nell’ingegneria civile,
dove le autocoppie sono in relazione alle vibrazioni critiche delle strutture, oppure nell’analisi di
circuiti elettrici, oppure ancora nello studio di sistemi dinamici (esempi tipici nella dinamica delle
popolazioni), ma anche nella ricerca di parole chiave dei motori di ricerca (Google, Yahoo, ecc.),
reti complesse in generale e social networks in particolare.
Questo problema è non lineare, quindi non ci sono in generale algoritmi “diretti” per la sua
risoluzione. Una delle maggiori difficoltà che si riscontrano è data dal fatto che la soluzione del
problema può essere molto sensibile a perturbazioni: anche a piccole perturbazioni della matrice A
possono corrispondere grandi perturbazioni dei suoi autovalori e autovettori. Il prossimo esempio
mostra la perturbazione dell’autovalore, dovuta ad una piccola perturbazione del dato (la matrice),
quando questa è un blocco di Jordan. Questo può essere considerato un caso limite, in quanto è
proprio con queste matrici che solitamente si vedono le maggiori amplificazioni degli errori nei dati.
Esempio 6.1.1 Sia  
0 1
 .. .. 
 . . ∈ Rn×n ,

J(0) = 
 .. 
 . 1 
0
il blocco di Jordan di dimensione n relativo all’autovalore nullo, λ = 0. Si consideri poi la matrice
perturbata di ϵ nel solo elemento di posto (n, 1):
 
0 1
.. .
. ..
 
Jϵ = J(0) + ϵen eT1 =   ∈ Rn×n .
 
 . .

 . 1 
ϵ 0

66
che consiste in una perturbazione “ϵ” della matrice J. Il suo polinomio caratteristico è dato da:
 
−λ 1
 .. .. 
 . . 
det (Jϵ − λI) = det   
 . .. 1 

ϵ −λ
   
−λ 1 1
 .. ..   .. 
 . . 
 +(−1)n+1 ϵ det
 −λ . 
= −λ det   
 ..   .. .. 
 . 1   . . 
−λ −λ 1
| {z } | {z }
∈R(n−1)×(n−1) ∈R(n−1)×(n−1)

= (−λ)n + (−1)n+1 ϵ,

dove si è sviluppato il determinante per la prima colonna, e si è tenuto conto che entrambe le matrici
(n − 1) × (n − 1) sono triangolari e quindi il loro determinante è il prodotto degli elementi sulla
diagonale. Si ha quindi che gli autovalori della matrice Jϵ sono le radici dell’equazione complessa

(−λ)n + (−1)n+1 ϵ = 0.

Si ottengono dunque n radici distinte λi , i = 1, . . . , n distribuite sulla circonferenza di raggio



|λi | = n ϵ, ∀ i = 1, . . . , n.

Quindi, mediante una perturbazione di ϵ, l’autovalore nullo di molteplicità n non solo si sposta
lontano dallo zero, ma diventa un autovalore semplice, quindi le proprietà spettrali della matrice
cambiano in modo molto significativo. Ad esempio, per n = 6 e ϵ = 10−8 , si ha |λ| = 10−8/6 ≈ 0.046:
ad una piccola perturbazione della matrice (ϵ = 10−8 ) corrispondono grandi perturbazioni degli
autovalori.

Ci sono due grandi classi di metodi per il problema agli autovalori:


ˆ Metodi basati su trasformazioni della matrice, che mantengano lo spettro;

ˆ Metodi iterativi per l’approssimazione di alcune autocoppie.

Nel seguito faremo riferimento alle sequenti decomposizioni:

- Se A ∈ Rn×n è simmetrica, si può scrivere A = XΛXT , con X ∈ Rn×n ortogonale e Λ =


diag(λ1 , . . . , λn ) reale. Analogamente, se A ∈ Cn×n è Hermitiana, si può scrivere A =
XΛXH , con X ∈ Cn×n unitaria e Λ = diag(λ1 , . . . , λn ) reale.
- Se A ∈ Cn×n è non Hermitiana ma ammette n autovettori linearmente indipendenti allora è
diagonalizzabile, cioè A = XΛX−1 , con X = [x1 , . . . , xn ] invertibile e xi autovettore destro di
A per ogni i: Axi = λi xi ∀ i = 1, . . . , n. Sia Y = [y1 , . . . , yn ] la matrice avente sulle colonne
gli autovettori sinistri di A, cioè yiH A = λi yiH ∀ i = 1, . . . , n. Si può dunque scrivere

YH A = ΛYH .

67
Dividendo per YH si ottiene AY−H = Y−H Λ, cioè Y−H è una matrice di autovettori destri.
Quindi, ponendo X = Y−H si ha
YH X = I.
È quindi possibile scrivere la decomposizione in autovalori ed autovettori sfruttando entrambi
gli autovettori, cioè
Xn
A = XΛYH = xi λi yiH ,
i=1

e questa prende il nome di decomposizione spettrale. Per A Hermitiana, Y = X e si ritrova


la nota relazione.

- Se A non è diagonalizzabile, è sempre possibile scrivere la decomposizione di Jordan,

A = XJX−1 .

Da un punto di vista computazionale questa decomposizione è molto difficile da ottenere -


come visto nell’Esempio 6.1.1 - in quanto la decomposizione è numericamente instabile: piccole
perturbazioni dei dati transformano un autovalore multiplo con blocco di Jordan non banale
in un gruppo di autovalori tutti semplici, per cui il blocco di Jordan scompare.
- Se A non è diagonalizzabile, è sempre possibile scrivere la decomposizione di Schur

A = QRQH ,

con Q unitaria e R triangolare superiore avente sulla diagonale gli autovalori di A. È possibile
approssimare questa decomposizione in modo stabile, e questo è ciò che fa l’iterazione QR.

Riassumendo, le decomposizioni citate mostrano che se una matrice è reale simmetrica (o Her-
mitiana in C) è sempre possibile trasformarla in una matrice diagonale mediante trasformazioni
ortogonali. Cosı̀ non è per matrici non simmetriche, per le quali non è deppure detto che la matri-
ce sia trasformabile in una matrice diagonale mediante trasformazioni per similitudine. Quindi le
matrici non simmetriche sono molto più difficili da trattare, da un punto di vista spettrale. Queste
difficoltà si ripercuotono in modo naturale ai metodi computazionali.
Infine, introduciamo una classe di matrici più ampia di quella delle matrici simmetriche, ma con
buone proprietà come quelle delle matrici simmetriche.

Definizione 6.1.2 (Matrice normale) Una matrice A ∈ Cn×n si dice normale se AAH =
AH A.

La seguente proprietà è per le matrici normali cosı̀ importante che viene spesso usata come de-
finizione. Infatti le matrici normali sono quelle matrici diagonalizzabili mediante matrici di trasfor-
mazioni unitarie; diversamente dal caso Hermitiano, la matrice diagonale ha autovalori complessi,
in generale.

Teorema 6.1.3 Una matrice A ∈ Cn×n è normale se e solo se è diagonalizzabile mediante una
matrice unitaria, cioè A = QΛQH , con Q ∈ Cn×n unitaria e Λ = diag(λ1 , . . . , λn ) ∈ Cn×n .
Dimostrazione. ⇐ . Si ha AAH = QΛQH QΛ̄QH = Q|Λ|2 QH dove |Λ|2 = ΛΛ̄ è matrice diagonale con gli
elementi |λi |2 sulla diagonale. Analogamente si ha AH A = Q|Λ|2 QH e quindi A è normale.
⇒ . Facciamo prima vedere che se R è triangolare (superiore) e normale, allora dev’essere diagonale. Sia
R = [R11 , R12 ; 0, R22 ]. Si ha RRH = [R11 R11
H + R RH , ∗; ∗, ∗] e RH R = [RH R , ∗; ∗, ∗]. Siccome R è normale,
12 12 11 11
H H
dev’essere RR = R R e per il blocco (1,1) dev’essere R11 R11 H + R RH = RH R . In particolare, la traccia
12 12 11 11

68
dev’essere la stessa, da cui tr(R11 R11H ) + tr(R RH ) = tr(RH R ). Un calcolo diretto mostra che tr(R RH ) =
12 12 11 11 11 11
H R ), quindi tr(R RH ) = 0. Ma siccome tr(R RH ) = ∥R ∥2 , si ha che R
tr(R11 11 12 12 12 12 12 F 12 = 0. Iterando l’argomento ai
due singoli blocchi diagonali, si trova che ogni elemento non diagonale dev’essere zero. La dimostrazione si conclude
scrivendo la decomposizione di Schur A = QRQH e notando che AAH = QRRH QH , AH A = QRH RQH , per cui
AAH = AH A se e solo se RRH = RH R, cioè R è triangolare superiore e normale, e quindi diagonale. □

6.2 Localizzazione e perturbazione di autovalori


In molti ambiti può essere richiesto di localizzare gli autovalori, nel piano complesso o sulla retta
reale. In particolare, nel seguito vengono mostrate alcune tecniche per individuare regioni del piano
dove ci saranno autovalori della matrice data. Indichiamo con spec(A) = {λ1 , . . . , λn } ⊂ C l’insieme
degli autovalori (lo spettro) della matrice A.

Proposizione 6.2.1 (di Hirsch) Sia A ∈ Cn×n e ∥ · ∥ norma matriciale indotta. Allora

spec(A) ⊂ {z ∈ C t.c. |z| ≤ ∥A∥},

cioè |λ| ≤ ∥A∥, ∀ λ ∈ spec(A).

Dimostrazione. Sia (λ, x) con ∥x∥ = 1 una autocoppia di A. Quindi λx = Ax, da cui ∥λx∥ =
∥Ax∥. Usando ∥λx∥ = |λ|∥x∥ = |λ| e ∥Ax∥ ≤ ∥A∥∥x∥ = ∥A∥, si ottiene |λ| ≤ ∥A∥. □

Definizione 6.2.2 (Cerchi di Gerschgorin) Sia A ∈ Cn×n . I cerchi del piano complesso
 

 n


 
(r)
X
Gi := z ∈ C t.c. |z − Aii | ≤ |Aij | , i = 1, . . . , n,
 

 j=1 

j̸=i

n
X
di centro Aii e raggio |Aij | sono detti cerchi di Gerschgorin per righe (da cui l’apice (r)).
j=1
j̸=i

Teorema 6.2.3 (Primo teorema di Gerschgorin) Sia A ∈ Cn×n . Allora


n
(r)
[
spec(A) ⊂ Gi ,
i=1

cioè gli autovalori di A sono contenuti nell’unione dei cerchi di Gerschgorin per righe.

Dimostrazione. Sia (λ, x), con x ̸= 0 un’autocoppia di A, cioè tale che Ax = λx. Quindi,
scrivendo questa uguaglianza per righe, si ha
n
X n
X
Aij xj = λxi , ⇔ (Aii − λ)xi = − Aij xj . (6.1)
j=1 j=1
j̸=i

Sia ora bi ∈ {1, . . . , n} tale che |xbi | = max |xk |. Dall’equazione (6.1), per i = bi, si ha
k=1,...,n

n
X
(Abibi − λ)xbi = − Abij xj ,
j=1
j̸=b
i

69
da cui
n n
X |Abij | |xj | X (r)
|Abibi − λ| ≤ ≤ |Abij |, ⇒ λ ∈ Gbi .
j=1
|xbi | j=1
j̸=b
i j̸=b
i
n
(r)
[
Siccome non è noto a priori quale sia bi, si ha λ ∈ Gi . □
i=1
Il Teorema 6.2.3 vale anche per AT (attenzione all’uso di ’T’, non ’H’), e quindi per le colonne
di A:
n
(c)
[
spec(AT ) ⊂ Gi ,
i=1
 

 n 

(c)
X
dove Gj := z ∈ C t.c. |z − Ajj | ≤ |Aij | . Si ha quindi che
 
 i=1 
i̸=j

n
! n
!
(r) (c)
[ [
spec(A) ⊂ Gi ∩ Gi .
i=1 i=1

Teorema 6.2.4 (Secondo teorema di Gerschgorin) Sia I ⊂ {1, . . . , n} un insieme di indici.


Se !  
[ (r) [ (r)
Gi ∩ Gi  = ∅,
i∈I i∈{1,...,n}∖I

(r) (r)
[ [
allora ci sono esattamente |I| autovalori in Gi e n − |I| in Gi , dove |I| indica la
i∈I i∈{1,...,n}∖I
cardinalità dell’insieme I.

Dimostrazione. Sia A = D + M con D la diagonale di A. Per t ∈ [0, 1], sia At = D + tM . Allora


A0 = D e A1 = A, e gli autovalori di At sono funzioni continue di t. Applicando il primo teorema
di Gerschgorin ad At , troviamo che per t = 0, |I| autovalori di A0 si trovano nel primo insieme e
n − |I| sono nel secondo insieme (sono i centri dei dischi), con le loro molteplicità algebriche. Dato
che per 0 ≤ t ≤ 1 analogamente tutti gli autovalori di At devono stare in questi dischi, segue per
continuità che anche |I| autovalori di A stanno nel primo insieme, ed i rimanenti nel secondo. □.
 
2 1 0
Esempio 6.2.5 Sia A = 1 1/2 1. Localizzare l’autovalore piú grande di A, senza calcolare
0 1 5
gli autovalori e stimare dal basso min λ (in altre parole, stimare l’intervallo spettrale di A).
Sol. I dischi di Gerschgorin per righe sono (la matrice è simmetrica per cui i dischi per colonne
(r) (r) (r)
coincidono con quelli per righe) G1 = {|z − 2| ≤ 1}, G2 = {|z − 1/2| ≤ 2}, G3 = {|z − 5| ≤ 1}.
(r)
Dunque l’autovalore massimo in modulo è contenuto in G3 , per cui si avrà 4 ≤ max λ ≤ 6. Il
secondo disco fornisce una stima inferiore per l’autovalore minimo, e dunque −3/2 < λmin .
 
15 1 2
Esempio 6.2.6 Sia A = −1 6 −2. Stabilire se tutti gli autovalori di A sono reali senza
1 0 −2
calcolare gli autovalori stessi, e localizzare ρ(A).

70
(r) (r)
Sol. I dischi di Gerschgorin per righe sono G1 = {|z − 15| ≤ 3}, G2 = {|z − 6| ≤ 3},
(r)
G3 = {|z + 2| ≤ 1} e sono tutti disgiunti. Quindi per il secondo Teorema di Gerschgorin ognuno
di essi contiene un solo autovalore. Dato che la matrice è reale, se ci fossero autovalori complessi,
anche i loro coniugati sarebbero autovalori ed apparterrebbero allo stesso disco centrato sull’asse dei
numeri reali, fatto che non è possibile. Quindi tutti gli autovalori sono reali. Si ha ρ(A) = max |λ|.
Dal primo disco si ottiene 12 ≤ ρ(A) ≤ 18.

I teoremi di Gerschgorin possono essere utili per valutare la bontà della decomposizione nume-
rica. Infatti, in generale, otterremo qualcosa della forma

QH AQ = Λ + E,

dove la matrice E è intrepretabile come l’errore che intercorre tra la decomposizione numerica
ottenuta (e quindi approssimata) e quella esatta. I Teoremi 6.2.3 e 6.2.4 possono anche aiutare
capire quanto gli autovalori di QH AQ siano vicini a Λ, valutando i dischi di Gerschgorin per la
matrice Λ + E.
Il prossimo teorema offre una stima della minima distanza tra un autovalore di A e quelli di
una sua perturbazione A + E, sotto l’ipotesi che A sia diagonalizzabile.

Teorema 6.2.7 (di Bauer-Fike) Sia A ∈ Cn×n diagonalizzabile cioè A = XΛX−1 con Λ dia-
gonale, e sia λ(A) un generico autovalore di A. Se A + E è una perturbazione di A, allora per
ogni autovalore λ(A + E) esiste almeno un autovalore di A, λ(A), tale che

|λ(A + E) − λ(A)| ≤ κ2 (X)∥E∥2 .

dove κ2 (X) è il numero di condizionamento della matrice degli autovettori, con la norma indotta
Euclidea.

Dimostrazione. Sia (ξ, y) una autocoppia di A+E con ∥y∥2 = 1. Si ha quindi che (A+E)y = ξy,
cioè Ey = (ξI − A)y. Se ξ ∈ spec(A) allora non c’è niente da dimostrare. Se invece ξ ∈
/ spec(A),
allora la matrice ξI − A è non singolare e si ha

y = (ξI − A)−1 Ey,

da cui

1 = ∥y∥2 ≤ ∥(ξI − A)−1 E∥2 ∥y∥2 = ∥X−1 (ξI − Λ)−1 XE∥2


1
≤ ∥X∥2 ∥X−1 ∥2 ∥(ξI − Λ)−1 ∥2 ∥E∥2 = κ2 (X) ∥E∥2 , (6.2)
min |ξ − λ|
λ∈spec(A)

dove nell’ultima uguaglianza si è utilizzato il fatto che, essendo (ξI − Λ)−1 = diag( ξ−λ
1
1
1
, . . . , ξ−λ n
),
si ha
1 1
∥(ξI − Λ)−1 ∥2 = max = .
λi ∈spec(A) |ξ − λi | min |ξ − λi |
λi ∈spec(A)

Dalla disuguaglianza (6.2) segue il risultato. □


Si osserva quindi che se A è diagonalizzabile, allora i suoi autovalori variano in funzione di ∥E∥2 ,
ma che la perturbazione di A può essere enormemente amplificata dal fattore κ2 (X), se la matrice
degli autovettori è mal condizionata. Questo può avere luogo se alcuni degli autovettori sono quasi
linearmente dipendenti.
Per matrici normali, ed in particolari simmetriche, la perturbazione ha in generale effetti molto
meno devastanti. Infatti si ha il seguente risultato.

71
Corollario 6.2.8 Se A ∈ Cn×n è normale allora κ2 (X) = 1 da cui segue che
|λ(A + E) − λ(A)| ≤ ∥E∥2 .
Quindi se A è normale, allora il problema del calcolo dei suoi autovalori è ben condizionato
rispetto all’errore assoluto.
Per matrici non normali si preferisce analizzare la sensibilità di ogni singolo autovalore, distin-
guendo il caso di un autovalore di molteplicità uno dal caso di un autovalore di molteplicità maggiore
di uno. Il seguente risultato, di grande importanza per la teoria della perturbazione spettrale di
matrici non normali, descrive la perturbazione di un autovalore mediante l’uso dello sviluppo di
Taylor della perturbazione ϵ per ϵ → 0 (ϵ = 0 equivale ad una perturbazione nulla della matrice
A), corrispondente all’autovalore originario.
Teorema 6.2.9 Sia A ∈ Cn×n (in generale non normale). Siano λ un suo autovalore semplice e
x e y i relativi autovettori destro e sinistro di norma unitaria. Allora esiste un intorno dell’origine
in cui sono definite le funzioni λ(ε) e x(ε) tali che
1. (A + εE)x(ε) = λ(ε)x(ε), con E ∈ Cn×n , ∥E∥2 = 1 e λ(ε) semplice;
2. λ(0) = λ e x(0) = x;
y H Ex y H Ex
3. λ′ (0) = H
da cui λ(ε) = λ + ε H + O(∥εE∥22 ) per ε → 0.
y x y x
Il Teorema 6.2.9 mostra che in prima approssimazione (cioè al primo ordine) la variazione
H
nell’autovalore λ dovuta alla perturbazione εE di A è data da ε yyHEx
x
ε. In particolare, si ha

y H Ex 1
|λ′ (0)| = ≤ H ,
yH x |y x|
e la quantità |yH1 x| prende il nome di numero di condizionamento dell’autovalore λ. Maggiore è
l’angolo tra gli autovettori destro e sinistro di A, più grande sarà il numero di condizionamento
dell’autovalore associato. Quindi per la stessa matrice, ci possono essere autovalori semplici ben
condizionati, ed altri mal condizionati.
Se A è normale, allora y H x = 1 in quanto X è unitaria e YH = XH . Quindi gli autovalori di
una tale matrice sono tutti ben condizionati, ed ad una perturbazione di norma ε della matrice A,
tutti i suoi autovalori vengono perturbati di cε con c = O(1).
D’altra parte, se A ha blocchi di Jordan, si ha che per ogni autovalore con blocco di Jordan di
dimensioni maggiori di uno vale y H x = 0. Infatti, consideriamo per semplicità A = J(λ) ∈ Rn×n ,
n > 1. Allora gli autovettori destro e sinistro sono x = e1 e y = en , e soddisfano y H x = 0. Se
più in generale A = QJ(λ)Q−1 , si ha che x̂ = Qx, ŷ = Q−H y sono autovettori destro e sinistro
di λ. Vale quindi ŷ H x̂ = y H Q−1 Qx = y H x = 0. Per una matrice con più blocchi di Jordan si
procede in modo analogo. Si noti che il teorema precedente non si applica a blocchi di Jordan (vale
per autovalori semplici!), ma siccome esistono matrici diagonalizzabili con autovalori distinti vicini
quanto si vuole a blocchi di Jordan, si può pensare al caso del blocco di Jordan come ad un caso
limite.
Ne segue che la quantità 1/|y H x| è una misura di quanto l’autovalore ed i suoi autovettori si
avvicinino ad essere parte di un blocco di Jordan, cioè di quanto quell’autovalore contribuisca a
rendere la matrice da normale a quasi non diagonalizzabile.

Nel caso in cui A non sia diagonalizzabile e λ ∈ spec(A) sia un autovalore avente blocchi di
Jordan di dimensione al più p, allora si può dimostrare che
|λ(A + εE) − λ(A)| ≤ γ ε1/p ,

72
dove γ dipende dagli autovettori e dai vettori principali corrispondenti.

6.3 Il metodo delle potenze


Il metodo delle potenze è un metodo iterativo particolarmente adatto per il calcolo dell’autovalore
dominante della matrice A ∈ Rn×n , ovvero quello di modulo massimo, λ1 , ed il relativo autovettore
associato. La soluzione di tale problema è di grande interesse in numerose applicazioni reali dove il
calcolo di tale autovalore, e del corrispondente autovettore, è collegato alla determinazione di certe
grandezze fisiche.
Sia quindi A ∈ Rn×n e, fissato un vettore iniziale x(0) di norma unitaria, l’iterazione del metodo
delle potenze consiste in
Per i = 0, 1, 2, . . . , fino a convergenza,
y = Ax(i)
x(i+1) = y/∥y∥
λ(i+1) = (x(i+1) )H Ax(i+1)
End
dove λ(i+1) è calcolato applicando il quoziente di Rayleigh in cui non è presente il denominatore,
in quanto il vettore x(i+1) ha norma unitaria. Indicata con (λ1 , x1 ) l’autocoppia dominante di A,
il metodo delle potenze costruisce due successioni {x(k) }k∈N e {λ(k) }k∈N tali che

x(k) → x1 , λ(k) → λ1 , k → +∞.

Perchè il metodo converga, λ1 deve essere un autovalore semplice in modulo.


Nel caso in cui A sia diagonalizzabile, sia A = XΛX−1 con X = [x1 , . . . , xn ] matrice avente
come colonne gli autovettori di A e |λi | in ordine decrescente. Allora è possible scrivere l’i-esimo
iterato x(i) del metodo delle potenze, opportunamente scalato, come combinazione lineare degli
autovettori come segue1 :
 
 i  1
λ1  λi2 /λi1
x(i) Ai x(0) 1  .  −1

= = X . . X x
 | {z }0 = X

. ξ

λ1i λ1 i i
λ1
 
 .. 
i
λn =:ξ i i
λn /λ1
n
X λij
= (ξ)1 x1 + (ξ)j xj → (ξ)1 x1 per i → ∞,
λi
j=2 1

dove si è supposto che (ξ)1 ̸= 0. Tale ipotesi è importante ai fini della convergenza. In assenza di
informazioni specifiche, un vettore iniziale x(0) scelto da una distribuzione casuale (in Matlab rand
o randn, per esempio), solitamente verifica tale ipotesi.
Questa relazione mostra che le iterate tendono alla direzione dell’autovettore x1 .
L’ipotesi che λ1 sia autovalore semplice in modulo risulta cruciale per la convergenza. D’altra
parte, se λ1 è autovalore con molteplicità algebrica (e geometrica) maggiore di 1, e non ci sono altri
autovalori con lo stesso modulo ma distinti da λ1 , allora la convergenza all’autovalore si ha ancora,
e l’iterazione converge ad un qualsiasi vettore dell’autospazio associato.
L’ipotesi prevede che λ1 sia semplice in modulo, e quindi reale se A ∈ Rn×n (il suo complesso
coniugato sarebbe distinto da λ1 ma avrebbe lo stesso modulo).
Abbiamo in pratica dimostrato il seguente risultato.
1 Qui e nel seguito, (x)i denota la i-esima componente del vettore x.

73
Teorema 6.3.1 Siano |λi |, i = 1, . . . , n ordinati in modo decrescente, e |λ1 | > |λ2 |, con |λ1 |
semplice e sia x1 l’autovettore corrispondente. Sia x(0) = Xξ. Se (ξ)1 ̸= 0 allora esiste una
costante C > 0, tale che
i
λ2
∥x(i) − x1 ∥2 ≤ C , i ≥ 1.
λ1
dove x(i) è normalizzato in modo opportuno.
Dim. Sia v (i) := Ai x(0) /((ξ)1 λi1 ), dove v (i) differisce da x(i) per un fattore di normalizzazione. Allora, sfruttando
A = XΛX −1 e le espressioni scritte sopra, si ha v (i) = x1 + n i
P
j=2 ((ξ)j /(ξ)1 )(λj /λ1 ) xj . Quindi
n i n
iX i
X (ξ)j λj λ2 (ξ)j λ2
∥v (i) − x1 ∥ ≤ ∥xj ∥ ≤ ∥xj ∥ =: C □.
j=2
(ξ)1 λ1 λ1 j=2
(ξ)1 λ1

Il teorema precedente mostra che la convergenza della successione {x(k) }k∈N all’autovettore x1 è
lineare rispetto al rapporto |λ2 /λ1 |. Quindi, più l’autovalore λ1 è separato dal resto dello spettro,
maggiore sarà la velocità di convergenza del metodo delle potenze.
Se A è reale simmetrica (ma anche complessa Hermitiana), A = XΛXH , con X unitaria, la
velocità di convergenza di λ(i) all’autovalore cercato è quadratica, cioè dipende da |λ2 /λ1 |2 . Infatti,
poichè x(k) = αk Ak x(0) per qualche αk , si ha
(x(k) )H Ax(k) (x(0) )H A2k+1 x(0) (y(0) =XH x(0) ) (y (0) )H Λ2k+1 y (0)
λ(k) = (k) H (k)
= =
(x ) x (x(0) )H A2k x(0) (y (0) )H Λ2k y (0)
n n
X X λi
(y (0) )21 λ2k+1
1 + (y (0) )2i λ2k+1
i |(y (0) )1 |2 + |(y (0) )i |2 ( )2k+1
i=2 i=2
λ 1
= n = λ1 n
X X λi
λ2k
1 (y
(0) 2
)1 + (y (0) )2i λ2k
i |(y (0) )1 |2 + |(y (0) )i |2 ( )2k
i=2 i=2
λ 1
n
!
X |(y (0) )i |2 λi   2k+1
≤ λ1 1 +
i=2
|(y (0) )1 |2 λ1
 2k+1 n  2k+1 !  2k+1 !
λ2 |(y (0) )2 |2 X |(y (0) )i |2 λi λ2
= λ1 1 + (0) 2
+ (0) 2
= λ1 1 + O ,
λ1 |(y )1 | i=3
|(y )1 | λ1 λ1

dove, per ottenere la disuguaglianza, il denominatore è stato minorato con il solo primo termine,
essendo tutte quantità non negative. Quindi abbiamo dimostrato che esiste una costante C > 0 tale
2k
che |λ(k) − λ1 | ≤ C λλ21 , cioè la convergenza è quadratica in |λ2 /λ1 |. Si noti che solo l’autovalore
approssimato converge in modo quadratico, mentre l’autovettore approssimato converge ancora in
modo lineare.
Nel caso di A normale la convergenza risulterà sempre quadratica rispetto al rapporto |λ2 /λ1 |,
dove λi ∈ C, i = 1, 2; la dimostrazione è del tutto analoga a quella sopra.
Esempio 6.3.2 Si consideri la matrice
 
8 0 −1
A= 1 5 0 .
1 −1 −1
I cerchi di Gerschgorin,
(r) (r) (r)
G1 = {|z − 8| ≤ 1}, G2 = {|z − 5| ≤ 1}, G3 = {|z + 1| ≤ 2},
dicono che l’autovalore dominante λ1 ≈ 8 è isolato e quindi semplice. Ciò significa che il metodo
delle potenze convergerà.

74
Criterio d’arresto. Il metodo delle potenze ha bisogno di un criterio di arresto per la sua
terminazione. Non avendo a disposizione l’errore, la norma euclidea del vettore residuo può essere
una buona quantità calcolabile, dove il residuo è definito in questo caso come r(i) = Ax(i) − λ(i) x(i) .
Usando un criterio relativo, il test può essere scritto come

∥r(i) ∥
Se < tol Stop
|λ(i) |

Il costo computazionale dell’intera procedura deve far si che il prodotto matrice-vettore non debba
essere fatto due volte. L’algoritmo originale può essere cosı̀ modificato:
Fissato x(0) ∈ Cn di norma unitaria, e y = Ax(0)
Per i = 0, 1, 2, . . . , fino a convergenza,
λ(i) = (x(i) )H y 2n − 1 flops
∥r (i) ∥
Se |λ(i) |
< tol Stop 2n + 1 flops
(i+1)
x = y/∥y∥ 3n flops
y = Ax(i+1) 1 Mxv
End
Per ogni iterazione, il costo computazionale è: (2n − 1) + (2n + 1) + 3n+ 1 Mxv, cioè O(7n)
flops + 1 Mxv.
Il criterio d’arresto utilizzato, basato sul residuo e quindi un criterio a-posteriori, può essere
messo in relazione con l’effettivo errore, per valutare l’accuratezza delle quantità ottenute. In altre
parole ci si chiede: Ad un residuo piccolo, corrisponde un errore piccolo? Per questo scopo possono
essere utilizzati i seguenti risultati.

Teorema 6.3.3 Sia A una matrice normale e sia (λ,


b xb) l’approssimazione di una sua autocoppia.
Allora ∃ λ ∈ spec(A) tale che
b ≤ ∥Ab x − λb
bx∥2
|λ − λ| ,
∥bx∥2

Dimostrazione. Per A normale si ha A = QΛQH con Q unitaria. Sia r = (A − λI)b


b x il residuo. Per
−1 −1 H
λ ̸∈ spec(A) si ha x
b b = (A − λI) r, quindi ∥b
b x∥ = ∥(Λ − λI) Q r∥ ≤ (1/ minλ∈Λ(A) |λ − λ|)∥r∥,
b b
da cui segue il risultato. □
Dal Teorema 6.3.3 si ha inoltre, sempre supponendo A normale ed anche ∥b
x∥ = 1, che

|λ − λ|
b ∥Ab
x − λb
bx∥2
≤ ,
|λ|
b |λ|
b

ed il termine di destra è proprio la quantità usata nel criterio d’arresto dell’algoritmo. In generale,
per A non normale, la norma ∥Ab x − λb
bx∥2 è influenzata anche dal numero di condizionamento
dell’autovalore cercato, come visto nel Teorema 6.2.9. Infatti, posto r := Ab x − λb
bx, è possibile
trasformare l’equazione del residuo, Ab x − λbb x = r, in una relazione utile per il Teorema 6.2.9, cioè
del tipo (A + E)x = λx per una matrice di perturbazione E scelta in modo opportuno. Ponendo
E := −rb xH la relazione è verificata. Per il Teorema 6.2.9 si ha quindi2

b ≈ ∥E∥2 = ∥r∥2 ,
|λ − λ|
|y H x| |y H x|
2 La relazione ∥E∥ = ∥r∥ segue per esempio dal fatto che Ex̂ = r e che per ogni altro vettore w ⊥ x̂ si ha Ew = 0,

quindi ∥E∥ = maxx ∥Ex∥/∥x∥ = ∥r∥.

75
con y e x rispettivamente autovettore sinistro e destro di A relativi a λ. Quindi, ad un piccolo residuo
in norma non corrisponde necessariamente un piccolo errore nell’approssimazione dell’autovalore,
se l’autovalore è mal condizionato. Si noti che l’errore relativo soddisfa

|λ − λ|
b 1 ∥r∥2
≈ H ,
|λ|
b |y x| |λ|
b

evidenziando ancora una volta che l’errore relativo (in avanti) è circa uguale al residuo relativo
(errore all’indietro), moltiplicato per il numero di condizionamento del problema (vedi Capitolo 1).
Come ci aspettavamo dai risultati di perturbazione, l’approssimazione di un autovalore di una
matrice lontana dall’essere normale potrebbe non essere facile, in quando anche a fronte di un
piccolo residuo, l’autovalore approssimato potrebbe non essere una approssimazione soddisfacente
dell’autovalore vero.
Concludiamo questa sezione con un esempio riguardo una possibile strategia di accelerazione in
un caso particolare.

Esempio 6.3.4 Sia A ∈ R3×3 con autovalori λ ∈ {−0.99, 0, 1}. Allora il metodo delle potenze
applicato ad A converge molto lentamente, con velocità (0.99/1)k = 0.99k . Applichiamo invece il
metodo delle potenze alla matrice A + 0.5I, avente autovalori θ = λ + 0.5, cioè θ ∈ {−0.49, 0.5, 1.5}.
La velocità di convergenza all’autovalore dominante θ = 1.5 sarà (0.5/1.5)k = 0.33k , decisamente
più soddisfacente. L’autovalore λ può essere recuperato a posteriori come λ = θ − 0.5.

6.4 Metodo delle potenze inverse shiftate


Per approssimare autovalori diversi da quello dominante esistono metodi derivanti dal metodo delle
potenze. Ad esempio, se si vuole approssimare l’autocoppia (λn , xn ) con λn autovalore più piccolo
in modulo di A ∈ Cn×n può essere utilizzato il metodo delle potenze dove la moltiplicazione per
A viene “sostituita” con la moltiplicazione per A−1 ; più correttamente, all’i-esima iterazione del
metodo delle potenze si risolverà il sistema lineare

Ay = x(i) ,

Questa rappresenta l’unica modifica formale all’algoritmo; Questo metodo, delle potenze inverse, è
anche chiamato metodo di Wielandt.
Più in generale, dato σ ∈ C con σ ∈
/ spec(A), è possibile approssimare l’autovalore di A più
vicino a σ in modulo. Più precisamente, sia σ tale che esiste λm ∈ spec(A) che soddisfa

|λm − σ| < |λi − σ|, ∀ i = 1, . . . , n, i ̸= m. (6.3)

(per σ = 0 si ottiene il metodo delle potenze inverse per approssimare l’autovalore più vicino a
zero). In particolare, la disuguaglianza stretta in (6.3) implica che l’autovalore λm più vicino al
parametro σ abbia molteplicità uno in modulo. Allora è possibile usare il metodo delle potenze
dove al prodotto Ax(i) viene sostituita l’operazione (A − σI)−1 x(i) . Questo metodo è detto metodo
delle potenze inverse traslate (o shiftate): dato x(0) ∈ Cn , la sua iterazione è data dal seguente
algoritmo
Per i = 1, 2, . . . , fino a convergenza,
y = (A − σI)−1 x(i)
x(i+1) = y/∥y∥
λ(i+1) = (x(i+1) )H Ax(i+1)
End

76
L’algoritmo proposto sfrutta il fatto che gli autovettori di A e di (A−σI)−1 rimangono invariati.
Più precisamente, (λ, x) è una autocoppia di A se e solo se (1/(λ − σ), x) è una autocoppia di
(A − σI)−1 . Nell’algoritmo, una stima di λ si potrebbe quindi ottenere anche come λ(i+1) = θ1 + σ,
dove θ = (x(i+1) )H (A − σI)−1 x(i+1) (stando ben accorti a non risolvere due sistemi lineari ad ogni
iterazione!). Per motivi di accuratezza, preferiamo il calcolo di λ(i+1) come proposto nell’algoritmo,
anche se questo richiede una moltiplicazione per A.
La velocità di convergenza dipende da quanto σ è vicino all’autovalore cercato, rispetto agli altri
autovalori. Se gli autovalori λj sono ordinati in modo che |λ1 − σ| < |λ2 − σ| ≤ . . . ≤ |λn − σ| allora
la velocità di convergenza è del tipo O((|λ1 − σ|/|λ2 − σ|)k ).
Il costo computazionale è come quello del metodo delle potenze, con l’aggiunta del costo della
risoluzione del sistema lineare (A − σI)y = x(i) . Dato che tale risoluzione deve essere fatta ad
ogni iterazione, e se le dimensioni non sono troppo elevate, è opportuno fattorizzare la matrice
A − σI una volta sola, prima del ciclo iterativo, ad esempio mediante la fattorizzazione LU. Ad
ogni iterazione del metodo basterà quindi risolvere i due sistemi triangolari, che richiedono un costo
computazionale di O(n2 ) se la matrice è piena. Nel caso in cui le dimensioni della matrice siano
molto elevate, il sistema lineare può essere risolto in modo inesatto mediante un metodo iterativo.

6.5 L’iterazione QR
L’iterazione QR è un metodo molto sofisticato per il calcolo di tutti gli autovalori di una matrice
A ∈ Rn×n e, se quest’ultima è normale, anche dei suoi autovettori. Questo metodo è l’algoritmo
fondante del comando eig di MATLAB, e la sua descrizione in questo paragrafo è organizzata nel
modo seguente:

- Algoritmo di base (costoso, e convergente sotto particolari condizioni);

- Considerazioni computazionali;
- Algoritmo più avanzato (riduzione in Hessenberg superiore, traslazioni) che converge sotto
ipotesi più generali.

L’algoritmo determina una successione di matrici {Tk }k∈N tale che

Tk := UH
k AUk → T, k → +∞,

con T matrice triangolare superiore (diagonale se A è normale) avente come elementi diagonali gli
autovalori di A. Come vedremo, questa iterazione tende ad ottenere la decomposizione di Schur
della matrice A, cioè

A = U∞ TUH
∞. (6.4)

Intuitivamente, questa procedura può essere vista come una generalizzazione alle matrici del
metodo delle potenze: invece di applicare il metodo ad un vettore x(k) , lo si applica ad una intera
matrice Uk . La normalizzazione del vettore è sostituita dalla ortogonalizzazione delle colonne della
matrice. L’algoritmo risultante, che può essere applicato anche a matrici Uk rettangolari alte (con
un numero di colonne inferiore al numero di righe), prende il nome di iterazione del sottospazio.
Tornando alla successione {Tk }k∈N , questa può essere determinata come segue:
T0 = A
Per k = 0, 1, . . . ,
Tk = Qk Rk (fattorizzazione QR di Tk )

77
Tk+1 := Rk Qk
end
Nella prima operazione viene effettuata una fattorizzazione QR della matrice quadrata Tk .
Nella seconda operazione, viene creata la nuova matrice Tk+1 come prodotto dei due fattori Rk ,
Qk in ordine scambiato. In questo modo, dato che dalla fattorizzazione segue QH k Tk = Rk , si ha
Tk+1 = QH k T Q
k k . Essendo le matrici Qk unitarie per ogni k, si ha che tutte le matrici Tk sono
simili tra loro. Inoltre,

Tk+1 = QH H H H H H
k Qk−1 Tk−1 Qk−1 Qk = . . . = Qk Qk−1 · · · Q0 T0 Q0 · · · Qk−1 Qk =: Uk AUk ,
| {z }
UH
k

con Uk unitaria, quindi gli autovalori di A vengono mantenuti.

Teorema 6.5.1 (con ipotesi restrittive) Sia A ∈ Cn×n con |λ1 | > |λ2 | > · · · > |λn | > 0 dove
λi , ∀ i = 1, . . . , n indica un autovalore di A (e quindi in particolare A è diagonalizzabile), allora

lim Tk = T,
k→+∞

dove T è triangolare superiore (diagonale se A è normale) avente come elementi diagonali gli
autovalori di A, non necessariamente ordinati.

L’ipotesi |λi | > |λi+1 |, ∀ i, è molto restrittiva. D’altra parte, se ad esempio |λr | = |λr+1 | per
qualche r, allora il blocco di A  
Arr Ar,r+1
,
Ar+1,r Ar+1,r+1
non convergerà ad una matrice della forma
   
λr ∗ γ γ2
, bensı̀ a Γ= 1 ,
0 λr+1 γ3 γ4

dove γi ̸= 0 ∀ i = 1, . . . , 4 e spec (Γ) = {λr , λr+1 }. Quindi la matrice T non risulterà triangolare
superiore ma “quasi-triangolare superiore” nel senso che avrà qualche elemento non zero nella prima
sottodiagonale. Più precisamente, la matrice T sarà triangolare a blocchi, con blocchi diagonali 1×1
o 2 × 2.
Il costo computazionale di questo algoritmo di base è alquanto elevato infatti la fattorizzazione
QR costa un O(n3 ) flops se Tk è piena (si veda il Capitolo 4), cosı̀ come il costo del prodotto per
Tk costa O(n3 ) flops. In più la convergenza ottenuta è “solo” lineare. Nel seguito vengono descritte
varie procedure per limitare il costo computazionale, e per velocizzare la convergenza.
Supponiamo che Tk abbia forma di Hessenberg superiore ((Tk )ij = 0 per i > j + 1), cioè della
forma
∗ ∗ ... ... ∗
 

∗ ∗ . . . . . . ∗
 
 
Tk = 
 .. 
.
 ∗ . . . . ∗ 
 .. .. 
 . .
∗ ∗
In tal caso, il costo della sua fattorizzazione QR sarà molto inferiore, in quanto devono essere azzerati
solo gli n−1 elementi della sottodiagonale. Questo può essere fatto applicando le rotazioni di Givens

78
viste nel Capitolo 4, che annullano elementi selezioni di una matrice a basso costo computazionale.
Supponendo quindi A ≡ A1 Hessenberg superiore, definiamo la matrice
 (1) 
G
G1 = ∈ Rn×n ,
I

dove G(1) ∈ R2×2 è tale che G(1) (A11 , A21 )T = (A b 11 , 0)T . Si ha dunque che
 
A
b 11 A b 12 ... ... Ab 1n
 .. 
 0
 A
b 22 . ... Ab 2n 

G1 A1 = 
 .. 
=: A2 ,
 A32 . ... A3n  
 .. .. 
 . .
An,n−1 Ann

al costo di 6(n − k) f lops. Il secondo passo consiste nel prodotto


 
Ab 11 Ab 12 . . . ... A
b 1n
 b 2n 
   0 Ab 22 . . .
b
... A
b 
1
 
 0 Ab 33 ... A
b 3n 
G2 A2 =  G(2)  A2 =   =: A3 .
 
.
I

 A43 . . ... A4n 
 .. .. .. 
 . . . 
An,n−1 Ann
Dopo n − 1 rotazioni si ottiene
 
∗ ∗ ... ... ∗
 ∗ ∗ . . . ∗
.. 
 
..
QH

0 A ≡ G G
n−1 n−2 · · · G1 A = 
 . .  =: R1 ,
 .. .. 
 . .

ed essendo Q0 unitaria (è il prodotto di n − 1 trasformazioni unitarie), si ha A = Q0 R0 , e il costo


n−1
X n−1
X
della fattorizzazione è di 6(n − k) = 6n(n − 1) − 6 k = 3n2 − 3n flops.
k=1 k=1
Il costo della moltiplicazione T1 := R0 Q0 = R0 GH H 2
1 · · · Gn−1 è di O(3n ) flops. Si può verificare
che T1 è ancora Hessenberg superiore. Si noti che non è necessario creare Q0 esplicitamente,
ma è sufficiente memorizzare le rotazioni man mano generate (2 allocazioni di memoria per ogni
rotazione).
All’iterazione successiva verranno poi applicate da sinistra n − 1 nuove rotazioni di Givens per
ottenere la fattorizzazione di T1 , per ottenere nuovamente una matrice di tipo Hessenberg dopo
l’applicazione delle rotazioni a destra, per ottenere T2 , e cosı̀ via. Questo procedimento si applica
fino a convergenza, cioè fino a che gli elementi sotto la diagonale principale non saranno abbastanza
piccoli, solitamente sotto l’epsilon macchina.
Il costo di ogni iterazione QR, con A Hessenberg superiore (e quindi tutte le successive Tk ), è
di O(6n2 ) flops, quindi di un’ordine di grandezza inferiore al caso di matrice generica A.
Il passo che rimane da fare è quindi quello di ottenere una matrice T0 Hessenberg superiore
partendo da una matrice A qualunque. Questa trasformazione può essere ottenuta applicando per

79
esempio le trasformazioni di Householder: T b 0 = QH A, dove QH è il prodotto di transformazioni di
Householder, e Tb 0 è in forma di Hessenberg superiore. Inoltre, si verifica che l’applicazione di Q a
destra non distrugge la forma di Hessenberg, per cui T0 = T b 0 Q = QH AQ ha forma di Hessenberg
superiore. Il costo computazione per ottenere T0 è di O(n3 ), ma è importante sottolineare che
questa operazione viene fatta una sola volta.
Riassumendo quindi, l’iterazione QR è della forma
Data T0 = Hess(A),
Per k = 0, 1, . . . ,
Tk = Qk Rk (QR con rotazioni di Givens)
Tk+1 = Rk Qk
|(Tk+1 )j+1,j |
se maxj |(Tk+1 )j+1,j+1 |+|(Tk+1 )j,j | < ϵ Stop, altrimenti Continua
end
dove con Hess si indica la procedura per trasformare A in forma di Hessenberg superiore.
L’intera procedura può essere molto lenta e per accelerarla viene utilizzato uno “shift” che viene
aggiornato man mano che si converge:
Data T0 = Hess(A) e µ shift,
Per k = 0, 1, . . . ,
Tk − µI = Qk Rk (QR con rotazioni di Givens)
Tk+1 = Rk Qk + µI
|(Tk+1 )j+1,j |
se maxj |(Tk+1 )j+1,j+1 |+|(Tk+1 )j,j | < ϵ Stop, altrimenti Continua
end
La convergenza sarà più rapida per l’autovalore più vicino a µ in modulo, come previsto dal
metodo delle potenze inverse traslate.
Nella pratica, si sceglie µ = Tk−1 (n, n) nelle prime iterazioni, fino a che, ad un certo b
k,
Tbk−1 (n, n − 1) ≈ 0. A questo punto si sceglie µ = Tbk−1 (n − 1, n − 1) e la parte sottostante
di T non viene più modificata. L’aggiornamento di µ continua poi allo stesso modo: quando
k, Tb (n − 1, n − 2) ≈ 0, si porrà µ = Tb (n − 2, n − 2).
all’iterazione b
b
k
b k
b
È importante notare che, grazie al doppio uso dello shift ad ogni iterazione, le matrici Tk
ottenute mediante l’iterazione QR con shift sono ancora tutte simili tra loro, infatti

Tk+1 = Rk Qk + µI = QH H
k (Tk − µI)Qk + µI = Qk Tk Qk ,

dove nell’ultima uguaglianza si è utilizzato il fatto che Qk è unitaria (QH k Qk = I).


L’uso del parametro µ permette di accelerare notevolmente la convergenza dell’iterazione. In-
fatti, se supponiamo di scegliere uno shift µ fisso, e |λ1 − µ| ≥ · · · ≥ |λn − µ|, allora

(Tk+1 )p+1,p → 0, k → +∞,


k
λp+1 −µ
con la stessa velocità di λp −µ , con convergenza anche quadratica, in generale.
λp+1 −µ
La relazione con λp −µ mostra d’altra parte che se λp = λp+1 non si ha convergenza. Esistono
comunque ulteriori varianti dell’iterazione QR con shift (“doppio shift”) che permettono di gestire
matrici aventi autovalori di stesso modulo.
La presente implementazione non è in grado di gestire autovalori complessi. Si può dimostrare
che l’uso di un doppio shift complesso, µ e µ̄ in sequenza, permette di determinare anche gli
autovalori complessi. Se la matrice A è a valori reali, questa procedura permette anche di mantenere
l’iterazione con matrici reali; la matrice reale risultante sarà triangolare a blocchi con blocchi

80
diagonali 1 × 1 o 2 × 2. Vista la complessità del metodo nella sua interezza, ci limitiamo solo ad
accennare questi sofisticati ed importanti dettagli tecnici. Approssimativamente, l’algoritmo finale
con shift impiega una o due iterazioni per la convergenza di ogni autovalore, permettendo il calcolo
della forma di Schur in O(n3 ) operazioni floating point.
L’iterazione QR permette di ottenere tutti gli autovalori della matrice con una ottima accura-
tezza. Se richiesto, ogni autovettore può essere ottenuto mediante 1 o al massimo due iterazioni
del metodo delle potenze inverse traslate, scegliendo come parametro σ di shift proprio l’autova-
lore approssimato trovato, σ = (Tk )j,j , per j ∈ {1, . . . , n}. Nonostante la matrice A − σI diventi
fortemente mal condizionata, il metodo delle potenze riesce a determinare facilmente la direzio-
ne dell’autovettore cercato. Strategie opportune sono usate nel caso di autovalori non semplici in
modulo.
Concludiamo con un teorema sulla stabilità dell’iterazione QR. Il seguente risultato assicura che
le matrici ottenute con l’iterazione QR in aritmetica finita A ≈ U b T b bH
k̂ k̂ Uk̂ siano approssimazioni
stabili, nel senso dell’analisi all’indietro, dei fattori della decomposizione di Schur della matrice A
(si veda (6.4)).

Teorema 6.5.2 Supponiamo che l’iterazione QR converga dopo k̂ iterazioni. Allora le matrici T
b

eUb effettivamente calcolate sono tali che

b = QH (A + E)Q,
T con ∥E∥2 = O(u∥A∥2 ),

e Q unitaria, e
b HU
U b = I + F, con ∥F∥2 = O(u).
k̂ k̂

In altre parole, il teorema mostra che T


b k è l’esatta matrice della decomposizione di Schur per
una matrice “vicina” ad A, e che Ub è vicina all’essere ortogonale.

6.6 Autovalori ed il calcolo di radici di polinomi


Un polinomio pn (x) = a0 + a1 x + . . . + an xn (an ̸= 0) è in generale una funzione non lineare. Le
sue radici si possono determinare imponendo pn (x) = 0, e possono essere quindi approssimate -
singolarmente - mediante il metodo di Newton per determinare gli zeri di una funzione non lineare.
D’altra parte, è interessante notare che c’è uno stretto legame tra i polinomi e le matrici, e
questo legame permette di calcolare tutte le radici di pn mediante il calcolo di autovalori. A tal
fine, definiamo la matrice Companion di pn :
 
0 0 ··· 0 −a0 /an
1 0 · · · 0 −a1 /an 
 
0 1 · · · 0 −a2 /an 
C= .
 .. .. .. .. .. 
. . . . . 
0 0 · · · 1 −an−1 /an

Allora un calcolo esplicito mostra che il polinomio caratteristico di C è strettamente legato a pn ,


cioè vale il seguente risultato
1
det(C − λI) = (−1)n pn (λ). (6.5)
an
Dunque, gli autovalori di C coincidono con le radici di pn .

81
Esempio 6.6.1 È dato il polinomio p3 (x) = x3 − 2x2 + x − 3, con matrice Companion
 
0 0 3
C = 1 0 −1
0 1 2

Con il calcolo esplicito del determinante si ottiene det(C − λI) = −λ3 + 2λ2 − λ + 3, che corrisponde
al polinomio dato, a meno del segno, come in (6.5).

Con il metodo QR è possibile determinare tutti gli autovalori di C, e quindi le radici di pn ; il


metodo risulta veloce specie se le radici sono distinte, non necessariamente reali.

82
Capitolo 7

Radici di polinomi

Questo capitolo è un’appendice all’argomento dei metodi numerici per equazioni non lineari.

7.1 Introduzione
I polinomi di grado maggiore o uguale ad uno sono funzioni non lineari algebriche, quindi il metodo
di Newton è applicabile per determinare alcuni zeri. Sia quindi pn = pn (x) un polinomio di grado
n ≥ 1 e sia ξ una sua radice. Fissato x0 , il metodo di Newton applicato a pn costruisce la successione
di iterate {xk } con
pn (xk )
xk+1 = xk − ′ , k = 0, 1, . . . .
pn (xk )
Per x0 preso in modo opportuno, xk → ξ per k → ∞. Il calcolo di xk+1 richiede la valutazione di
pn e p′n nel punto xk , che può essere ottenuta a basso costo computazionale nel modo seguente.
Innanzi tutto notiamo che il calcolo di pn (xk ) in modo “diretto”, per esempio in codice Matlab:
p = 3 x.^3 - 2 x.^2 + x.^1 -4
oltre ad essere molto costoso (si calcolano le potenze in modo separato, ripetendo lo stesso conto
più volte), può dare seri problemi per l’amplificazione degli errori di arrotondamento. Un modo
meno oneroso e meno instabile, ma comunque ugualmente immediato, è dato dal seguente ciclo,
dove definiamo pn (x) = a0 + a1 x + . . . + an xn :

s = 1
p = a0
Per k = 1, . . . , n
s=s·x
p = p + ak s
Al termine, p contiene il valore di pn (x) per x fissato. Il costo computazionale comunque può essere
ulteriormente abbassato, usando la regola di Horner. Scriviamo il polinomio come
pn (x) = (· · · (((an x + an−1 )x + an−2 )x + an−3 )x + · · · )x + a0 ,
e per x = xk definiamo l’iterazione
b0 = an
bj = bj−1 xk + an−j , j = 1, . . . , n.

83
Al termine, si ottiene bn = pn (xk ).
Osservazione. L’iterazione che determina i bj può essere vista come la procedura di risoluzione
di un sistema con matrice bidiagonale inferiore:
 
1 −xk    

 1 −xk  bn
 a0
 1 −xk   ..   .. 
 .   . 
  =  .


 . .. . ..   b1  an−1 
 
 1 −xk  b0 an
1

Con i coefficienti bj è possibile definire il polinomio pbn−1 (x) = b0 xn−1 + b1 xn−2 + . . . + bn−1 .
Allora si ha

pn (x) = (x − xk )b
pn−1 (x) + bn . (7.1)

Tale relazione può essere verificata confrontando i coefficienti delle potenze del polinomio a sinistra
con quelli delle potenze a destra. Infatti, per la potenza jesima a sinistra avremo aj xj , mentre a
destra avremo il coefficiente (bn−j − xk bn−j−1 )xj . Quindi l’uguaglianza è verificata se

aj = bn−j − xk bn−j−1 , ∀j = 0, . . . , n

che è vera per costruzione dei bk .


La relazione (7.1) mostra che

p′n (x) = pbn−1 (x) + (x − xk )p′n−1 (x), ⇒ p′n (xk ) ≡ pbn−1 (xk ).

Quindi, i bj sono i coefficienti di un polinomio che in xk coincide con il valore del polinomio
derivata calcolato in xk . Mediante nuovamente l’uso della regola di Horner è possibile valutare
quindi pbn−1 (xk ). Riassumendo possiamo quindi definire la doppia iterazione:

b0 = an , c0 = b0
bj = bj−1 xk + an−j , j = 1, . . . , n
cj = cj−1 xk + bj , j = 1, . . . , n − 1,

da cui otteniamo pn (xk ) = bn e p′n (xk ) = cn−1 . Ad ogni iterazione di Newton vengono quindi
calcolati i nuovi bn e cn−1 , per determinare xk+1 .

Come noto, in generale la convergenza del metodo di Newton è di tipo locale. Questo vale
anche per i polinomi, quindi il metodo potrebbe divergere se x0 non è scelto in modo opportuno.
In particolare, se pn non ha radici reali, sicuramente il metodo di Newton con x0 ∈ R divergerà,
comunque sia preso x0 . D’altra parte, se le radici sono complesse, è possibile inizializzare il metodo
di Newton con x0 ∈ C. I risultati di convergenza visti in R non saranno direttamente applicabili.
La situazione cambia significativamente se il polinomio è reale ed ha tutte le radici reali. Vale
infatti il seguente risultato.

Teorema 7.1.1 Sia pn un polinomio a coefficienti reali con radici ξ1 ≥ ξ2 ≥ . . . ≥ ξn tutte reali. Al-
lora il metodo di Newton genera una successione {xk } convergente in modo monotono strettamente
decrescente per ogni x0 > ξ1 .

84
Il problema si sposta quindi alla scelta di x0 , visto che la radice più grande ξ1 in generale
non è nota. Il seguente risultato fornisce stime dall’alto per le radici del polinomio, che possono
essere usate per inizializzare il metodo di Newton. La dimostrazione segue da risultati noti sugli
autovalori, come vedremo tra breve.

Teorema 7.1.2 Le radici ξj , j = 1, . . . , n di un polinomio pn (x) = an xn + an−1 xn−1 + . . . + a0


con an ̸= 0 soddisfano
( n−1 )
X |ak |
|ξj | ≤ max 1, ,
|an |
k=0
 
a0 a1 an−1
|ξj | ≤ max ,1 + ,...,1 + .
an an an

Il teorema assicura che se x0 è preso almeno grande quanto il più piccolo tra i due massimi
ottenuti nelle stime, allora si ha convergenza del metodo di Newton.
La convergenza può essere molto lenta, specie all’inizio. Ci sono procedure che possono essere
adottate, per esempio il metodo del doppio passo, che però potrebbero portare ad un “overshooting”,
cioè nella perdita di convergenza per superamento della radice.
Dopo aver trovato una radice con il metodo di Newton, è possibile determinare la radice suc-
cessiva mediante la procedura di deflazione. Se ξ˜ è la prima radice determinata, allora si definisce
il polinomio di grado n − 1
pn (x)
pn−1 (x) =
˜
(x − ξ)
e si ripete la procedura con pn−1 per trovare le radici successive. Se è noto che tutte le radici sono
reali e ξ˜ approssima la radice più a destra, allora tale approssimazione può essere presa come valore
iniziale x0 della nuova iterazione di Newton. La procedura di deflazione è pericolosa, in quanto
la radice ξ˜ è solo una approssimazione della vera radice ξ1 , e quindi le radici del polinomio pn−1
non saranno ξ2 , ξ3 , ecc., bensi ξ˜2 , ξ˜3 , ecc., che potrebbero essere anche molto diverse da quelle del
polinomio originario (vedi il successivo paragrafo sulla perturbazioni di radici). È quindi necessario
determinare ξ˜ con grande accuratezza per procedere con la deflazione in modo preciso.
È possibile determinare il numero di radici reali di un polinomio in una certa regione mediante
la generazione della cosiddetta “sequenza di Sturm”, che studia il cambio di segno in un punto
x = a di una successione di polinomi.

7.2 Radici di polinomi ed autovalori


Dato il polinomio pn (x) = an xn + an−1 xn−1 + . . . + a0 è possibile definire la matrice companion

0 − aan0
 
1 0 − aan1 
− aan2 
 
C = 0 1 0  ∈ Rn×n

 .. .. .. 
 . . . 
an−1
1 − an

il cui polinomio caratteristico è ϕC (λ) = det(C − λI). Allora si può dimostrare che

(−1)n
ϕC (λ) = pn (λ).
an

85
La relazione mostra che, a meno di un fattore di scala, il polinomio generatore di C coincide con il
polinomio caratteristico di C. Ne segue che le radici di pn coincidono con gli autovalori di C. Di
conseguenza è possibile calcolare tutte le radici di pn mediante il calcolo degli autovalori di C. A tal
fine, è possibile per esempio utilizzare l’iterazione QR, che è molto efficiente ed è adatta anche nel
caso di autovalori complessi. Questo approccio evita tutti i problemi visti in precedenza associati
all’uso del metodo di Newton. Chiaramente, se solo alcune radici del polinomio sono richieste,
allora il metodo di Newton può ancora essere di interesse o, in alternativa, il metodo delle potenze
con le sue varianti.

Esempio 7.2.1 Sia p3 (x) = x3 − 2x2 + x − 3. Allora


 
0 0 3
C = 1 0 −1 .
0 1 2

Con un paio di semplici calcoli si trova che det(C − λI) = −(λ3 − 2λ2 + λ − 3), che coincide col
polinomio p3 (λ), a meno del fattore (−1)3 ( qui an = 1).

Sfruttando i dischi di Gerschgorin, è possibile localizzare gli autovalori di C, e quindi le radici


di pn mediante l’uso dei suoi coefficienti. applicando i risultati dei dischi alle righe e alle colonne
di C si trovano le due stime del Teorema 7.1.2.

7.3 Stabilità delle radici


In pratica, i coefficienti di un polinomio sono raramente calcolati in modo accurato. Ci chiediamo
quindi come cambiano le radici del polinomio, se i suoi cofficienti vengono perturbati. Dai risultati
sugli autovalori e dal legame tra autovalori e radici mediante la matrice companion, sappiamo che
la perturbazione può essere molto significativa. In particolare, se ξ è una radice semplice di pn , la
teoria degli autovalori assicura che per perturbazioni ε piccole, il polinomio perturbato avrà una
radice semplice ξ(ε) che tende a ξ = ξ(0) per ε → 0. Formalizziamo questa argomentazione, e
cerchiamo di precisare il tipo di perturbazione ottenibile. A tal fine, sia (eliminiamo la dipendenza
da n per alleggerire la notazione)
pε (x) = p(x) + εg(x),
il polinomio perturbato, dove g è un polinomio generico di grado al più n. Questo corrisponde ad
imporre una perturbazione sui coefficienti di p. Sia ξ(ε) una radice del polinomio perturbato, cioè

pε (ξ(ε)) ≡ p(ξ(ε)) + εg(ξ(ε)) = 0.

Derivando rispetto ad ε,
dξ(ε)
p′ (ξ(ε)) + g(ξ(ε)) + ε(g(ξ(ε)))′ = 0

e per ε = 0 si ha
dξ(0) dξ(0) g(ξ(0))
p′ (ξ(0)) + g(ξ(0)) = 0 ⇒ =− ′ ,
dε dε p (ξ(0))
dove ricordiamo che ξ(0) = ξ è la radice del polinomio non perturbato. Quindi, usando lo sviluppo
di Taylor rispetto a ε con troncamento al prim’ordine, la radice perturbata si comporta come

g(ξ)
ξ(ε) ≈ ξ − ε .
p′ (ξ)

86
Quindi al prim’ordine, la radice perturbata dista da quella originaria per un multiplo di ε, che è
la perturbazione imposta ai coefficienti. Tale perturbazione ε viene amplificata se per esempio la
derivata del polinomio p è piccola in ξ, cioè se p cresce molto lentamente in un intorno di ξ, o se
il valore di p′ è molto più piccolo della perturbazione εg(ξ). Il prossimo esempio evidenzia questa
seconda situazione.

Esempio 7.3.1 (Wilkinson) Sia p(x) = (x − 1)(x − 2) · · · (x − 20) e consideriamo la radice ξ = 20.
Si ha che p′ (20) = 19! e a19 = −210. Consideriamo il polinomio di perturbazione g(x) = a19 x19 ,
cosicchè il coefficiente di x19 del polinomio perturbato è a19 + εa19 . Dal risultato precedente segue
che
210 · 2019
ξ(ε) − ξ ≈ ε ≈ ε · 1010 .
19!
Dunque ad una piccolissima perturbazione del coefficiente del polinomio di ε = 10−16 , per esempio,
corrisponde una radice perturbata che differisce dalla radice originaria già nella settima cifra, cioè
solo le prime 6 cifre significative sono le stesse! Per una perturbazione un pò più grande, per
esempio di ε = 10−10 , non ci saranno cifre significative uguali, cioè le due radici saranno molto
diverse.

Come per gli autovalori, il problema diventa ancora più sensibile se la radice è multipla: la
perturbazione avrà un comportamento che può dipendere non più da ε ma da ε1/m , dove m è la
molteplicità della radice.

87

Potrebbero piacerti anche