caricato da wond3r_

1. Metodi diretti per la soluzione di sistemi lineari

Metodi Analitici e Numerici
Prof.ssa M. Cristina CERUTTI
23 ottobre 2018
1
Parte I
Calcolo numerico
1
Risoluzione di sistemi lineari con metodi diretti
Si consideri il sistema lineare quadrato di n equazioni in n incognite
Ax = b
(1)
dove A matrice quadrata di ordine n è la matrice dei coefficienti, b è il vettore dei termini noti è x è il vettore delle
incognite. Supporremo in tutta la trattazione che la matrice A sia non singolare, e quindi che il sistema ammetta
un’unica souzione.
Analizziamo alcuni metodi noti di soluzione del sistema.
1.1
Metodo di Cramer
Un metodo classico è il metodo di Cramer.
T
La soluzione v = [x1 , . . . , xn ] del sistema (1) ha componenti:
xi =
det (Ai )
det (A)
dove Ai è ottenuta sostituendo la colonna i-esima di A con il termine noto b
Esempio 1.
(
x + 2y = 3
3x + 7y = 2
⇒ A=
1
3
2
7
b=
b1
3 2
det
det
b2
2
7
det (Ax )
=
x=
=
det (A)
1 2
1
det
det
3 7
3
1 3
1
det
det
3 2
3
det (Ay )
=
y=
=
det (A)
1 2
1
det
det
3 7
3
3
2
2
7
= 17
2
7
b1
b2
= −7
2
7
Osservazione 1.1. Se si calcolano i determinanti con la regola di Laplace, il metodo di Cramer ha un costo
computazionale molto elevato ' 3 (n + 1)!.
Per aver un’idea dell’enormità si pensi che il supercomputer più veloce al mondo di Giugno 2018, il Summit
IBM (cfr. https://www.top500.org) che ha una velocità di picco di 122 Pflops (1 Pflop è 1015 flops cioè operazioni
al secondo), per risolvere un sistema di 25 equazioni in 25 incognite impiegherebbe circa 300 anni!!! E per le
applicazioni spesso ci si trova a dover risolvere sistemi di migiaiai di equazioni ed incognite.
Analizziamo quindi metodi più efficienti.
1.2
Risoluzione sistemi triangolari
Iniziamo con i sistemi triangolari e osserviamo che se A è triangolare non singolare gli elementi sulla diagonale
principale aii 6= 0 ∀ i = 1, . . . , n
2
1.2.1
Forward substitution
Un sistema triangolare inferiore è un sistema in cui la matrice dei coefficienti è appunto triangolare inferiore (o
bassa) cioè:

 


b1
x1
a11
0 ...
0


 
 a12 a22 . . .
0 

  x 2   b2 
= . 


 ..

.
..
.
.
..
..   ..   .. 
 .
.
bn
xn
an1 an2 . . . ann
Per questi sistemi è facile calcolare successivamente le componenti xi , 1 = 1, . . . , n, della soluzione come:
x1 =
x2 =
b1
a11
1
[b2 − a21 x1 ]
a22
In generale abbiamo:
Algoritmo 1.


i−1
X
1 
bi −
aij xj 
xi =
aii
j=1
j = 1, . . . , n
(2)
Questo algoritmo prende il nome di algoritmo di sostituzione in avanti, conosciuto anche come forward
substitution.
1.2.2
Backward substitution
Un sistema triangolare superiore, è un sistema in cui la matrice dei coefficienti è triangolare superiore (o alta), cioè:


 

a1 1 a1 2 . . . a1n
x1
b1
 0

 

a2 2 . . . a2 n 

  x 2   b2 
= . 
 ..



..
.
.
.
..
..   ..   .. 
 .
.
0
0
. . . an n
xn
bn
Il termine xn è immediatamente calcolabile come:
xn =
bn
an n
Per quanto riguarda il termine xn−1 l’operazione da eseguire corrisponde a:
xn−1 = [bn−1 − an−1,n xn ]
1
an−1,n−1
In generale si ha:
Algoritmo 2. Data una matrice U triangolare alta la soluzione del sistema U x = b si trova attraverso il seguente
algoritmo:
xn =

xi =
bn
an n

n
X
1 
bi −
ai j xj 
ai i
j=i+1
i = 1, . . . , n
j = i + 1, . . . n
Questo algoritmo prende il nome di sostituzione all’indietro, conosciuto anche come backward substitution.
3
Osservazione 1.2. Iniziamo con l’osservare che per simmetria il costo computazionale per il backward substitution
è ovviamente uguale a quello del forward substitution, è quindi pari a n2
Osservazione 1.3. Calcoliamo il costo computazionale dell’algoritmo. Cominciamo con l’osservare che, al primo
passaggio (calcolo dell’elemento x1 ) si esegue una sola operazione (la divisione), al secondo passaggio le operazioni
diventano tre, la divisione per a22 , la moltiplicazione e la sottrazione all’interno della parentesi. All’i-esimo
passaggio ho sempre una divisione per aii e, per ognuno degli i − 1 elementi della sommatoria nella parentesi in (2),
2 operazioni (un prodotto ed una somma). Quindi il numero di operazioni elementari (flops) risulta essere:
n−1
X
1 + (1 + 2) + · · · + (1 + 2 (i)) + · · · + (1 + 2 (n − 1)) =
(1 + 2 (i))
i=0
⇓
=n+2
n−1
X
i = n + A2
i=1
1.3
n (n − 1)
= n2
2A
Metodo di eliminazione di Gauss
Il metodo di eliminazione di Gauss si basa sull’idea di ridurre progressivamente il sistema Ax = b ad un sistema
equivalente (avente cioè la stessa soluzione) della forma U x = b̂ dove U è triangolare superiore e b̂ è un nuovo
termine noto. Quest’ultimo sistema potrà poi essere risolto con il metodo di sostituzioni all’indietro (o backward
substitution visto nel paragrafo precedente.
Indicando il sistema originale come A(1) x = b(1) , costruisco successivamente sistemi A(k) x = b(k) tali che la
matrice dei coefficienti A(k) ha gli elementi sottodiagonali delle prime k − 1 colonne nulli. Quindi nel passaggio da
A(k−1) ad A(k) rendo nulli gli elementi sottodiagonali della colonna (k − 1)-esima.
Vediamo come fare questo al primo passaggio: opero sulla matrice completa (cioè la matrice A orlata con il
vettore b) che chiamerò B (1) , lascio invariata la prima riga e sostituisco la seconda riga con la differenza tra riga
stessa e la prima riga moltiplicata per un’opportuna costante non nulla (in questo modo si ottiene un sistema
equivalente a quello di partenza) scelta in modo tale da rendere nullo il secondo elemento della prima colonna.
Questo elemento viene detto moltiplicatore ed indicato con m21 (l’indice mi indica che mi permette di rendere nullo
l’elemento di posto (1, 2)). Si verifica facilmente che
(1)
m21 =
a21
(1)
a11
R2 = R2 − m21 R1
Analogamente sostituisco la terza riga con la differenza tra riga stessa e la prima riga moltiplicata per un’opportuna costante non nulla scelta in modo tale da rendere nullo il terzo elemento della prima colonna. Questa volta
il moltiplicatore verrà indicato con m31 . E così via.
Analogamente sostituisco la terza riga con la differenza tra riga stessa e la prima riga moltiplicata per un’opportuna costante non nulla scelta in modo tale da rendere nullo il terzo elemento della prima colonna. Questa volta
il moltiplicatore verrà indicato con m31 . Ripetendo questo procedimento per tutte le righe successive ottengo, per
la prima colonna, un vettore che ha come unico elemento non nullo il primo (che viene detto pivot).
 (1)

 (1)

(1)
(1)
(1)
(1)
(1)
(1)
a11 a12 . . . a1n
b1
b1
a11 a12 . . . a1n
 (1)

(1) 
(2)
(2)
(2) 
(1)
(1)
 a21 a22 . . . a2n
 0
b2 
a22 . . . a2n
b2 
 .


⇒
..
..
..
.. 
..
.. 
..
..

 .
 ..
.
.
 .
 .
.
.
.
. 
.
. 
(1)
an1
(1)
an2
...
(1)
ann
(1)
0
bn
(2)
an2
...
(2)
ann
(2)
bn
Al secondo passaggio voglio rendere nulli gli elementi sottodiagonali della seconda colonna, quindi in generale
avremo che:
(k)
aik
i = k + 1, . . . , n
mik = (k)
akk
4
(k)
dove l’elemento akk viene detto pivot della rispettiva colonna.
Quindi nel caso generale, l’operazione eseguita è:
(k+1)
aij
(k+1)
bi
(k)
(k)
= aij − mik ak,j
(k)
= bi
i, j = k + 1, . . . , n
(k) (k)
i = k + 1, . . . , n
− mik bk
Si osservi che anche j parte da k + 1 perché la colonna k-esima è uguale a quella di A(k) .
Esempio 1. Si consideri il seguente sistema

 3x− y + z
2x+ y

−2x− 2y + z
3×3

=
2
3
=
1 ⇒ 2
= −2
−2
−1 1
1 0
−2 1

2
1  = B (1)
−2
La matrice B (2) ha la prima riga uguale alla matrice B (1) .
Per calcolare la seconda riga della matrice B (2) il moltiplicatore è m21 =
− 23 [
2
3
0
2
e quindi calcolo
3
1 0 1
−1 1 2 ]
5
− 23 − 31
3
Analogamente per calcolare la terza riga della matrice B (2) il moltiplicatore è m31 = −
2
3
Ottengo così la matrice
[
−2 −2 1 −2
3 −1 1
2
8
5
2
0 3 3 −3
3
= 0
0

B (2)
1
−1
5
3
8
−3
2
e quindi calcolo
3
]
2

− 13 
− 23
− 32
5
3
L’ultimo passaggio consiste nel rendere nullo l’elemento di posto (2, 3) sottraendo dalla terza riga di B (2) la seconda
riga (in modo tale che gli elementi nulli nella prima colonna rimangano tali) moltiplicata per il moltiplicatore
−8
m32 = 53 = − 85 . Ottengo così
3


2
3 −1
1
5
− 13 
− 32
B (3) =  0
3
3
0
0
− 65
5
Risolvendo a questo punto il sistema ottenuto con il backward substitution ottengo
z = −2
y = −1
x=1
Algoritmo 3. del MEG per ridurre il sistema a triangolare alto (k)
mik =
(k)
aik
(k)
akk
(k+1)
= aij − mik akj
(k+1)
= bi
aij
bi
(k)
(k)
(k) (k)
− mik bk
Poi si risolve il sistema triangolare così ottenuto.
Osservazione 1.4. Per il calcolo del costo computazionale si ricordi la formula
N
X
i=1
i2 =
(2N + 1) (N + 1) N
6
5
Contributo per il calcolo di m
Essendo:
(k)
mik =
aik
(k)
akk
si esegue una sola operazione (la divisione) per ognuno degli elementi della matrice che devono essere resi nulli,
cioè n − 1 al primo passaggio, poi n − 2, etc..
n−1
X
#flops = (n − 1) + (n − 2) + · · · + 1 =
i=
i=1
n (n − 1)
(n − 1) (n − 1 + 1)
=
2
2
Contributo per il calcolo di aij
(k+1)
Essendo il generico aij
(k)
(k)
= aij − mik akj si ha che per effettuare tale calcolo si devono eseguire due operazioni
(k+1)
elementari, il prodotto e la sottrazione. Per capire quanti sono gli aij
da calcolare si osservi che per k = 1
(cioè per il calcolo della matrice B (2) ) si devono calcolare gli elementi di una sottomatrice quadrata di ordine n − 1
(essendo noti prima riga e prima colonna), cioè (n − 1)2 elementi. In generale per calcolare B (k+1) devo calcolare
(n − k)2 elementi. Di conseguenza il numero di operazioni elementari totali (flops) è:
n−1
h
i
X
(2n − 1) (n − 1) n
(2n − 2 + 1) (n − 1 + 1) (n − 1)
2
2
=
#flops = 2 (n − 1) + (n − 2) + · · · + 1 = 2
i2 = 2
6
3
i=1
Contributo per il calcolo di b
(k+1)
(k)
(k) (k)
Essendo il generico bi
= bi − mik bk , quindi per effettuare tale calcolo si devono eseguire due operazioni
(k) (k)
elementari: il prodotto mik bk e la sottrazione. Il numero totale dei b da calcolare è pari a quello degli m. Di
conseguenza il costo computazionale di tale operazione risulta essere:
#flops = 2 [(n − 1) + (n − 2) + · · · + 1] = 2
n−1
X
i=2
i=1
n (n − 1)
= n (n − 1)
2
Costo computazionale totale
In definitiva il costo computazionale totale per la riduzione del sistema è pari a:
#flops =
n (n − 1)
3
(2n − 1) (n − 1) n
n (n − 1) (2n − 1) (n − 1) n
+
+2
= n (n − 1) +
2
3
2
2
3
(3)
A questo va sommato n2 , costo per la soluzione del sistema triangolare e si ottiene:
3
(2n − 1) (n − 1) n
2
n (n − 1) +
+ n2 ' n3
2
3
3
Di conseguenza per un numero di passaggi n molto grande, il costo computazionale del MEG ha ordine di
grandezza 32 n3
#flopstot =
Osservazione 2. Il costo computazione per il MEG è molto minore di quello richiesto dal metodo di Cramer:
Costo computazionale
1.4
MEG
2 3
3n
Cramer
3 (n + 1)!
Fattorizzazione LU (di Gauss)
Si cerca una fattorizzazione della matrice A in modo tale da avere A = LU con L triangolare inferiore ed U
triangolare superiore.
6
Se si trova questa fattorizzazione la risoluzione del sistema Ax = b si riduce alla risoluzione dei due sistemi


Ly = b


Ux = y
Poiché L ed U dipendono dalla sola A e non dal termine noto, la stessa fattorizzazione può essere utilizzata per
risolvere diversi sistemi lineari che hanno la stessa matrice dei coefficienti A, ma con termine noto b variabile.
Problema: È possibile trovare questa fattorizzazione? Come si trovano le matrici L e U ?
Esempio 2. Considerando ad esempio una matrice 2 × 2 :
a11
a21
a12
a22
=
0
l11
l21
l22
u11
0
u12
u22
Il sistema presenta quattro equazioni e sei incognite (gli elementi delle matrici L e U ), di conseguenza è un
sistema sottodeterminato quindi si possono scegliere arbitrariamente 2 elementi: nella fattorizzazione LU di Gauss
si scelgono gli elementi l11 e l22 (gli elementi sulla diagonale principale della matrice L) uguali ad uno. Nell’esempio:
a11
a21
a12
a22
=
1
l21
0
1
u11
0
u12
u22
In questo modo se a11 6= 0 la soluzione è univocamente determinata ed è:


u11 = a11

u = a
12
12
l21 = aa21 (a11 6= 0)

11


21
21 a12
u22 = a22 − aa11
a12 = a22 a11a−a
= detA
a11
11
Osservazione 1.5. Se si fosse applicato i l MEG alla matrice A:
a21
m21 =
= l12
a11
Inoltre la prima riga di U è uguale alla prima riga di A e u22 = a22 − m21 a12 , cioè la stessa operazione che si
avrebbe ottenuto applicando il MEG.
Proposizione 1. Se ∃ la fattorizzazione LU di Gauss è unica e si ha che:
L → Ha gli elementi tutti uguali a 1 sulla diagonale (per scelta arbitraria)
e gli elementi sottodiagonali sono i moltiplicatori del MEG
U → È la matrice finale del MEG
Dimostrazione. Si osservi che la matrice A(2) può essere ottenuta dalla matrice A(1) = A tramite moltiplicazione
per una matrice M(1) , cioè come A(2) = M1 A(1) , dove M1 ha la forma:


1
0 0 ... 0
 −m21 1 0 . . . 0 




M1 =  −m31 0 1 . . . 0 

..
.. .. . .
.. 

. . 
.
. .
0
−mn1
0
...
1
Analogamente, la matrice A3 sarà ottenuta come A(3) = M2 A(2) = M2 M1 A, dove la matrice M2 ha la forma:


1
0
0 ... 0
 0
1
0 ... 0 


 0 −m32 1 . . . 0 
M2 = 

 ..
..
.. . .
.. 
 .
.
.
.
. 
0 −mn 2 0 . . . 1
7
In generale la matrice Mk ha la forma:

1 ...
 .. . .
 .
.

 0 ...
Mk = 
 0 ...

 .
 ..
0
0
..
.
0 ...
..
.
1
−mk+1,k
..
.
0 ...
1 ...
.. . .
.
.
0 ...
−mn,k
...
dove ek è il k-esimo vettore della base canonica:
eTk = 0 0
ee mk è il vettore:

0
.. 
. 

0 
 = In − mk eTk
0 

.. 
. 
1
···
0
0
..
.





mk = 
 mk+1,k


..

.
mn,k
1
···
0










e risulta A(k+1) = Mk A(k)
In definitiva si ottiene la matrice A(n) che è la matrice triangolare alta del MEG e che poniamo = U come:
An = U = Mn−1 Mn−2 · · · M2 M1 A
Ricordando ora come si calcola l’inversa di un prodotto abbiamo
−1
−1
A = M1−1 M2−1 · · · Mn−2
Mn−1
U
Le matrici Mk hanno inversa data da
Mk−1 = 2In − Mk = In + mk eTk
come si verifica facilmente osservando che mi eTi mj eTj uguale alla matrice identicamente nulla per i ≤ j.
Di conseguenza si ha che:
!
n−1
X
T
T
T
A = In + m1 e1 · · · In + mn−1 en−1 U = In +
mi ei U
i=1
Abbiamo quindi dimostrato il risultato ponendo
−1
−1
M1−1 M2−1 · · · Mn−2
Mn−1
=L
che è proprio la matrice con la forma cercata.
Osservazione 1.6. Il costo computazionale della fattorizzazioe LU è quindi pari a quello del MEG escluso il
contributo per il calcolo dei vettori b(k) quindi ∼ 32 n3 .
Osservazione 1.7. La fattorizzazione LU di Gauss può servire anche per calcolare il determinante di A con un
costo computazionale molto inferiore rispetto a quello della regola di Laplace; infatti si ha che
detA = u11 u22 · · · unn =
n
Y
uii
i=1
Condizione necessaria e sufficiente per fattorizzazione LU
Una condizione necessaria e sufficiente affinchè possa esistere la fattorizzazione LU è che i determinanti delle
sottomatrici principali di nord-ovest siano 6= 0 , cioè che non siano singolari.
8
Condizioni sufficienti per fattorizzazione LU
Condizioni sufficienti per la fattorizzazione LU sono che:
1. la matrice A sia simmetrica e definita positiva, cioè con autovalori tutti positivi, da cui segue che:
xT Ax ≥ λmin kxk2
2. a matrice A sia a dominanza diagonale stretta per righe o per colonne, cioè
Definizione 1 (Matrice a dominanza diagonale). Una matrice A quadrata si dice a dominanza diagonale
stretta per righe se ha gli elementi sulla diagonale principale maggiori strettamente in valore assoluto della
somma dei valori assoluti dei restanti elementi della stessa riga, cioè:
Dominanza diagonale stretta → |aii | >
n
X
|aij |
j=1,j6=i
In modo del tutto analogo si definisce la dominanza diagonale stretta per colonne.
|aii | >
n
X
|aji |
i=1,j6=i
Matlab 1. In Matlab il comando per eseguire la fattorizzazione LU su una matrice A è:
[L U P]=lu(A)
1.5
Pivoting
(k)
Supponiamo che ad un certo passo k si trovi un pivot akk = 0. Si osservi che, essendo per ipotesi A(k) n
non singolare
n
(k)
come A, sicuramente ∃ aik Con i > k t.c. aik 6= 0. Se così non fosse, la matrice di elementi Ai,j=k,...,n
avrebbe una colonna di elementi tutti nulli e di conseguenza sarebbe detA(k = 0. Il pivoting consiste nello scambiare
la riga k-esima con la riga j-esima in modo da avere un pivot diverso da 0 e da poter continuare con l’algoritmo
per la fattorizzazione LU (scambiando anche le opportune righe della matrice L). Naturalmente alla fine si otterrà
la fattorizzazione LU non di A ma di una matrice in cui sono stata scambiate tra loro alcune righe. Si tiene traccia
delle righe scambiate nella matrice di permutazione P che all’inizio è l’identità ed in cui di volta in volta si scambiano
le stesse righe che si scambiano nella matrice A. Si osservi che una matrice così fatta è idempotente, cioè P P = I.
Se nell’operazione di fattorizzazione avviene il pivoting si avrà che LU = P A e quindi nell’applicazione ai sistemi
lineari si dovrà risolvere:
(
Ly = P b
P Ax = P b ⇒ LU y = P b ⇒
Ux = y
Quello qui descritto è detto pivoting parziale ed ha un costo computazionale di n2 É ancheh possibile
effettuare
i
(k)
il pivoting totale in cui si va alla ricerca dell’elemento maggiore all’interno della sottomatrice aij
ed ha un
i,j≥k
costo computazionale di 32 n3
(k)
Osservazione 3. Poiché inoltre un valore grande di mik generato da un valore piccolo del pivot akk può amplificare
(k)
gli eventuali errori di arrotondamento presenti negli elementi akj in realtà è utile scegliere come pivot sempre quello
maggiore in modulo tra quelli disponibili, cioè se
|akr | = maxi≥k |aki |
si scambiano la riga k-esima e la riga r-esima. Matlab esegue la fattotizzazione LU in questo modo e quindi
restituisce L, U e P . Matlab effettua sempre questo tipodi pivoting.
9
1.6
Fattorizzazione di Cholesky
Se la matrice A è simmetrica è possibile applicare la fottorizzazione di Cholesky cioè scrivere la matrice A come:
A = QT Q
Q → Triangolare superiore
Il costo computazionale associato a questo metodo è la metà di quello di LU :
#flops '
1.7
n3
3
Errore e condizionamento
Definizione 2. [Errore relativo]Sia x̂ la soluzione numerica calcolata e sia x la soluzione esatta; si definisce errore
relativo la quantità:
kx − x̂k
E=
kxk
Definizione 3. [Residuo]Sia x̂ la soluzione numerica calcolata per il sistema lineare del tipo Ax = b , si definisce
residuo la quantità:
r = b − Ax̂ = Ax − Ax̂ = A (x − x̂)
(x − x̂) = A−1 r
⇒
Osservazione 1.8. Nell’ambito dell’algebra lineare x̂ e xcoincidono; utilizzando software come Matlab per la
risoluzione di sistemi lineari del tipo Ax = b si generano degli errori di approssimazione, tra un passaggio e l’altro,
che portano appunto la differenza b − Ax̂ a non essere pari al vettore nullo.
1.7.1
Numero di condizionamento
Ricordiamo la seguente definizione
Definizione 4. [Norma di una matrice] Data una matrice A quadrata di ordine n si dice norma di A il numero
reale positivo
kAxk
=
max
kAuk
kxk
u∈Rn ,kuk=1
kAk = maxn
x∈R
Definizione 5. [Numero di condizionamento]Si definisce numero di condizionamento K (A) della matrice A , la
quantità:
K (A) = kAk · kA−1 k
• Se il numero di condizionamento è molto grande, si dice che la matrice è malcondizionata.
• Se il numero di condizionamento è piccolo (vicino al valore unitario), si dice che la matrice è bencondizionata.
Proposizione 2. Vale la seguente stima per l’errore relativo E:
E ≤ K (A)
krk
kbk
Dimostrazione. Per definizione di errore relativo (Def: 2) si ha che:
E=
kx − x̂k
kA−1 rk
=
kxk
kxk
• Per la definizione di norma di una matrice :
E=
kA−1 rk
kA−1 k · krk
≤
kxk
kxk
10
• Si può inoltre notare che:
kAxk
kAk · kxk
≤
kxk
kxk
• Quindi si ottiene:
E≤
kA−1 rk
⇒
x≥
= kAk · kA−1 k
kbk
kAk
kAxk
kbk
=
kAk
kAk
krk
krk
= K (A)
kbk
kbk
(4)
Osservazione 1.9. Se A è una matrice simmetrica e definita positiva allora il numero di condizionamento è:
K (A) =
λmax
λmin
Dimostrazione. Si ricorda che una matrice simmetrica è diagonalizzabie ed esiste una base ortonormale di autovetn
tori, cioè {ui }i=1 dove u1 è autovettore per l’autovalore λi (cioè Aui = λi ui ) e uiT ui = δij cioè = 0 se i 6= j e = 1
se i = j).
Pn
Ogni vettore x ∈ Rn può quindi essere scritto come x = i=1 xi vi calcoliamo
kAxk = (Ax) (Ax) =
T
2
A
n
X
!!T
i i
xv
n
X
A
i=1
=
n
X
i=1
!T
i
x λi v
i
n
X
i=1
!!
i i
xv
=
i=1
!
i
x λi v
i
=
n
X
n
X
!T
i
x Av
n
X
i
i=1
x2i λ2i ≤ (λmax )
2
n
X
!
i
x Av
i
=
i=1
2
x2i = (λmax ) kxk2
i=1
i=1
da cui segue che kAxk ≤ λmax kxk. Si osservi poi che l’uguaglianza vale per x = vmax autovettore associato a λmax .
Quindi kAk = λmax . Poiché inoltre gli autovalori della matrice inversa A−1 sono i reciproci degli autovalori della
1
da cui segue la tesi.
matrice A, si ha che kA−1 k = λmin
Osservazione 1.10. Anche se il residuo krk si mantiene piccolo può capitare che K (A) sia tanto grande da non
essere compensato dal residuo.
Esempio 3. Prendendo per esempio la matrice di Hilbert di ordine 4:
K (H4 ) > 1.5 × 104
e
krk ' 10−16
Matlab 2. Il comando Matlab per il numero di condizionamento di una matrice A è:
cond (A)
11