You are on page 1of 22

Una trave di lunghezza L, fissata agli estremi e tesa lungo la direzione

della sua lunghezza da una forza S, `


e soggetta a un carico trasversale t(x)dx. Nellipotesi di piccole deflessioni, la deflessione della
e descritta dal problema differenziale lineare ai limiti del
trave w(x) `
secondo ordine

Appunti delle lezioni sui metodi numerici


per la soluzione di sistemi lineari

Prof. F. Pitolli

(A.A. 2012-2013)

CALCOLO NUMERICO

ANALISI NUMERICA

Esempio 1

S
q
d2w

=
w(x) +
t(x)(x L)

dx2
EI
2EI

0<x<L

w(0) = w(L) = 0 .

x: distanza dallestremo sinistro della trave; L: lunghezza della


trave; t(x): intensit`
a del carico; E: modulo di elasticit`
a ; S: tensione agli estremi della trave; I: momento principale di inerzia
1

Soluzione

Supponendo che il carico sia lineare t(x) = x e che la trave sia di


acciaio e abbia le seguenti caratteristiche:
L = 120 cm

q = 100 kg/m

S = 1000 kg

I = 625 cm4

La soluzione approssimata {yi y(xi)}i=1,...,N +1, nei nodi xi = a + ih,


i = 1, . . . , N , si ottiene risolvendo il sistema lineare tridiagonale di
N equazioni nelle N incognite Y = [y1, y2, , yN ]T

E = 3.0 107 kg/cm2

AY = B
con

approssimare la deflessione w(x) ogni 6 cm con uno schema alle


differenze finite.

A=

0.015

S
2 + h2 EI
1
0
S
2
1
2 + h EI 1 0

S
1 2 + h2 EI

w(x)

0.01

0.005

B = h2r(x1) + , h2r(x2) , . . . , h2r(xN 1), h2r(xN ) +


0

20

40

60
x

80

100

Soluzione esatta

120

r(x) =
2

q
x (x L)
2EI

iT

Esempio 3

Esempio 2
3

Un ubriaco compie una passeggiata casuale, facendo un passo a sinistra o a destra a caso lungo una strada rettilinea. Quando raggiunge
una estremit`
a della strada, si ferma.

Determinare i potenziali nei nodi


1 6 del circuito
(le resistenze sono misurate in
Ohm)

15

10

B
1

Calcolare la probabilit`
a che lubriaco raggiunga lestremit`
a sinistra
della strada partendo dalla posizione i.

Soluzione
Applicando la legge di Kirchoff
sistema lineare

i Ii = 0 in ogni nodo si ottiene il

11v1
5v2
v6

20v1 +41v2 15v3


6v5

4v4
3v2 +7v3
v
+2v
v5

3
4

10v4 +28v5 15v6

15v5 +47v6
2v1

= 500
=
0
=
0
=
0
=
0
=
0
4

Esempio di passeggiata per N = 10


Soluzione

Si pu`
o simulare una passeggiata casuale tirando una moneta.

La probabilit`
a pi, i = 0, 1, ..., N , di raggiungere lestremo sinistro
partendo dalla posizione i, soddisfa la relazione

90

80

p0 = 1

70

60

50

1
1p
pi = 2
i1 + 2 pi+1

i = 1, . . . , N 1

Si tratta di un sistema lineare tridiagonale nelle incognite


pi , i = 1, . . . , N 1

40

30

20

10

pN = 0

10

Punto di partenza: x5

p1
12 p2

12 p1 +p2 12 p3

12 pN 3

1
2

+pN 2

= 0

12 pN 1 = 0

12 pN 2

+pN 1

= 0
7

Esempio 4

Soluzione

Nella tabella sono riportate le misure sperimentali relative alla forza


F (x) necessaria per allungare una molla fino alla lunghezza x.

La forza F (x) necessaria per allungare una molla fino alla lunghezza x
`
e data da F (x) = k(x l) (Legge di Hooke) dove k `
e la costante
elastica e l `
e la lunghezza a riposo della molla.

2
7.0

x
F (x)

3
8.3

4
9.4

5
11.3

6
12.3

8
14.4

10
15.9

Per trovare la costante elastica della molla si devono approssimare i


dati in tabella con il polinomio ai minimi quadrati di primo grado
(retta di regressione):
P1(x) = a0 + a1 x

Determinare la costante elastica della molla.


18

Il coefficiente a1 fornisce lapprossimazione della costante elastica.


18

16

14

12
F(x)

F(x)

>>
>>
>>
>>
>>

16

14

12

10
10

X=[2, 3, 4, 5, 6, 8, 10]
F=[7.0, 8.3, 9.4, 11.3, 12.3, 14.4, 15.9]
X2 = linspace(X(1),X(7))
p = polyfit(X,F,1);y2 = polyval(p,X2)
p

p =

1.1383 5.0491
6
0

10

6
0

12

10

12

Sistema delle equazioni normali

Metodi diretti
per la soluzione di sistemi lineari

I coefficient1 a1, a2 del polinomio ai minimi quadrati si ottengono


risolvendo il sistema delle equazioni normali

Sono basati sulla trasformazione del sistema di partenza

a0 s0 + a1 s1 = v0

dove

a s +a s =v
0 1
1 2
1

s0 = n + 1

s1 =

v0 =

F (xi )

i=0

a0 = 5.049

v1 =

mente semplice per cui `


e facile calcolarne la soluzione.

s v s1 v0
a1 = 0 1
s0 s2 s2
1

n
X

xi

n
X

xi F (xi)

i=0
n
X

in uno equivalente che abbia una struttura particolar-

v s v1 s1
a0 = 0 2
s0 s2 s2
1

s2 =

n
X

La soluzione numerica viene calcolata in un numero


finito di passi e, se non vi fossero errori di arrotonda-

x2
i

mento nei dati o durante i calcoli, la soluzione numerica

i=0

sarebbe esatta.
Data loccupazione di memoria (RAM) richiesta nei pas-

i=0

saggi dellalgoritmo, vengono utilizzati quando la matrice

a1 = 1.1383.
10

dei coefficienti ha dimensione non troppo elevata.


11

Costo computazionale di un algoritmo

Costo computazionale del metodo di Cramer


xi =

Prima di implementare un algoritmo bisogna stimare il suo costo


computazionale, cio`
e il numero di operazioni pesanti (moltiplicazioni o divisioni) necessarie per calcolare numericamente la soluzione.
Costo computazionale:
Cc numero di moltiplicazioni o divisioni

Di
detA

i = 1, 2, ..., n

n + 1 determinanti (Di, i = 1, . . . , n e det A)

n! prodotti per ciascun determinante

n 1 moltiplicazioni per ciascun prodotto


+ n divisioni (trascurabili)

Metodo di Cramer

Costo computazionale:

DallAlgebra sappiamo che la soluzione esatta di un sistema lineare


si pu`
o ottenere con il metodo di Cramer.
Di
, i = 1, 2, ..., n, dove
e regolare, X = A1B = xi =
Se A `
detA
Di `
e il determinante della matrice ottenuta da A sostituendo alla
colonna i-esima il vettore B.
12

Cc = (n + 1)n!(n 1) + n (n + 1)n!(n 1)
n = 15 Cc 3 1014 moltiplicazioni circa 4 giorni

n = 20 Cc 3 1021 moltiplicazioni circa 4800 anni

(supponendo 0.5 1010 secondi per operazione)

Inutilizzabile!!

13

Metodo di eliminazione di Gauss


Il metodo di eliminazione di Gauss trasforma, in n 1 passi, il
sistema lineare
AX = B

X, B IRn A IRnn

Fattorizzazione LU
Il metodo di eliminazione di Gauss pu`
o essere interpretato come
la fattorizzazione della matrice di partenza A nel prodotto di due
matrici triangolari.

con matrice dei coefficienti A piena, nel sistema equivalente


e
UX = B

Teorema. Se la matrice A IRnn ha determinanti principali


di testa tali che
detAk 6= 0, k = 1, 2, , n,
allora
A = LU
nn
dove L IR
`
e una matrice triangolare inferiore con elee una matrice triangolare
menti diagonali pari a 1 e U IRnn `
superiore.

e IRn U IRnn
X, B

con matrice dei coefficienti U triangolare superiore.


Il metodo utilizza le seguenti operazioni lecite:
scambio di 2 equazioni
somma di unequazione con unaltra moltiplicata per una costante
14

15

Struttura delle matrici L e U

A = LU =

1
0
0
0
m21
1
0
0
m31 m32
1
0
..
..
..
..
mn1 mn2 mn3

..

0
0
0
..
1

matrice dei moltiplicatori

(1)

a12

(2)
(2)
a22 a23

a
11

(1)

(1)

a13

(1)

..

a33

(3)

..

..

..

..

..

a1n

(2)
a2n

(3)
a3n

(n)
ann

..
0
0
matrice del sistema
triangolare

Nota 1: Se A non soddisfa le ipotesi detAk 6= 0, ma `


e comunque
regolare, tramite scambi di righe pu`
o essere riportata ad una matrice
che soddisfa le ipotesi e che quindi pu`
o essere fattorizzata.

Soluzione di sistemi triangolari


Sistemi triangolari superiori

u11 x1 + u12 x2 + + u1k xk


u22 x2 + + u2k xk

ukk xk

UX = B

Nota 2: il costo computazionale della fattorizzazione `


e lo stesso di
n3
quello delleliminazione di Gauss Cc
.
3

+
+

xn =

xk =

+ u1n xn
+ u2n xn

+ ukn xn

unn xn

l11 x1

=
b1

lk1 x1 + lk2 x2

ln1 x1 + ln2 x2

LX = B

bk

n
X

uki xi

i=k+1

1
, k = n 1, n 2, ..., 2, 1
ukk

(Algoritmo di sostituzione allindietro)


17

Costo computazionale

+ lkk xk = bk

+ lnk xk + + lnn xn = bn

Algoritmo di sostituzione
Ad ogni passo ci sono
n k moltiplicazioni

1
b
x1 = 1
l11

xk = bk

k1
X
i=1

lki xi

divisione
Cc =

1
lkk

n
X

(n k + 1) =

k=1

n
n2
n2
+
2
2
2

k = 1, 2, . . . , n
Nota: Se le matrici U e L sono regolari, sicuramente

(Algoritmo di sostituzione in avanti)


18

b1
b2

bk

bn

bn
unn

16

Sistemi triangolari inferiori

=
=

ukk e lkk sono 6= 0.


19

Applicazioni della fattorizzazione


Soluzione di pi`
u sistemi lineari
Soluzione di un sistema lineare

Se dobbiamo risolvere pi`


u sistemi lineari

Consideriamo il sistema lineare AX = B e supponiamo che la matrice


dei coefficienti A possa essere fattorizzata.

AX = B

A=LU

LU X = B

LY = B

sistema triang. inf.


(algoritmo di sost. in avanti)
sistema triang. sup.
(algoritmo di sost. allindietro)

UX = Y

Una volta fattorizzata A, la soluzione del sistema si ottiene risolvendo


n2
.
i due sistemi trangolari con costo computazionale 2
2

AXi = Bi

i = 1, 2, . . . , r

aventi la stessa matrice A e diversi termini noti, si fattorizza una


volta per tutte la matrice A = LU e si risolvono, per ogni vettore Bi ,
i due sistemi triangolari

LYi = Bi

i = 1, 2, . . . , r

UX = Y
i
i

per la soluzione dei quali il costo computazionale `


e solo n2.

20

21

Calcolo dellinversa di A
La matrice inversa A1 di una matrice regolare A `
e la matrice tale
che
A A1 = I
I : matrice identit`
a

Calcolo del determinante di A

detA = det(L U ) = detL detU =

n
Y

lkk

{z
| k=1

Teorema di Binet

n
Y

(1) (2)

k=1

(n)

ukk = a11 a22 ann

=1

I :=

1
0
0
1

0
0

0
0

1

= [E1 E2 En]

Ei = [0, 0, , |{z}
1 , 0, , 0]T
i

Vettori della base canon-

ica

Se durante la fattorizzazione sono stati fatti s scambi di righe, allora

A A1 = I A Xi = Ei

i = 1, 2, , n A1 = [X1 X2 Xn]

Una volta nota la fattorizzazione di A, basta risolvere gli n sistemi


(1) (2)

(n)

detA = (1)s a11 a22 ann

L Yi = Ei ,

U Xi = Yi,

Costo computazionale: Cc
22

i = 1, , n

4
n3
+ n n2 = n3
3
3

23

Matrici tridiagonali

Calcolo del rango di A


Se lalgoritmo di eliminazione applicato alla matrice quadrata
A IRnn termina regolarmente dopo n 1 passi la matrice A
ha rango massimo pari a n (matrice regolare).
Se lalgoritmo di eliminazione applicato alla matrice quadrata
(k)
A IRnn non pu`
o proseguire dopo q passi perch
e ark = 0,
r = k, . . . , n la matrice A ha rango pari a q n (matrice
singolare).
Lalgoritmo di eliminazione applicato alla matrice rettangolare
A IRmn termina necessariamente dopo q m passi la matrice A ha rango pari a q.

Nel caso in cui la matrice dei coefficienti A `


e tridiagonale la fattorizzazione LU `
e molto semplice in quanto le matrici L e U hanno una
struttura semplice.

A=

d1
a2

0
0

s1 0

0
d2 s2
0
... ... ...

0 dn1 sn1
0
an
dn

Nota: le operazioni lecite conservano il rango.

1 0
0
2 1
0
0 3 1
..
.. . . .
0 0

...
n

0
0
0
..
1

u1 v 1 0

0
0 u2 v 2
0
..
.. . . . . . .
..
0 0 un1 vn1
0 0
0
un

24

Esempio 1: soluzione
= [
La soluzione esatta `
eX
p0, . . . , pN ]T , dove pi = 1 Ni , i = 0, . . . , N .

i = 1, 2, . . . , n 1

i = ai /ui1

ui = di i vi1

Con il solutore di Matlab si ha:


i = 2, 3, . . . , n

divisioni

moltipli
cazioni

Soluzione del sistema lineare AX = B


yi = bi i yi1

xn = yn/un xi = (yi vi xi+1)/ui

i = 2, 3, . . . , n
i = n 1, . . . , 1

Costo computazionale: Cc = (n
1) + (n
1) +
| {z }
| {z }
moltipli
cazioni

Xk
kX

decimali
esatti

11
21
51
101
501
5001
10001

3.33e-016
1.55e-015
4.16e-015
2.14e-014
1.11e-013
1.84e-012
1.38e-011

15
14
14
13
12
11
10

i = 2, 3, . . . , n

Costo computazionale: Cc = (n
1) + (n
1) = 2n 2
| {z }
| {z }

y1 = b1

= LU

25

Algoritmo di Thomas

u1 = d1

vi = si

moltipli
cazioni

n
= 3n
|{z}
divisioni
26

Cc

333
2667
41667
333333
41666666
41666666666
333333333333

tempo di
calcolo
0.000304
0.000356
0.000402
0.001555
0.070898
29.306639
225.971643

occupazione
di memoria

s
s
s
s
s
s
s

0.8 Kbyte
3.2 Kbyte
20 Kbyte
8 Kbyte
200 Kbyte
2 Mbyte
800 Mbyte

Nota. In realt`
a gli elementi diversi da zero della matrice A sono
N + (N 1) + (N 1) = 3N 2 << N 2
e una matrice sparsa
A`

27

Istruzioni MATLAB
N = 10
A = diag(ones(N-1,1));
for i=2:N-1, A(i,i-1) = -0.5; end
for i=1:N-2, A(i,i+1) = -0.5; end
B = zeros(N-1,1);B(1)=0.5
tic
X = A\B
toc
Xe = 1-(1:N-1)/N
max(abs(X-Xe))

Esercizio

2 2 0

Data la matrice tridiagonale A = 2 3 1


0 1 4
calcolarne linversa con lalgoritmo di Thomas.

Nota. tic e toc sono le istruzioni per calcolare il tempo di esecuzione.


Esercizio
Scrivere un programma (Matlab/Fortran/C) che risolva un sistema
lineare con lalgoritmo di Thomas e utilizzarlo per risolvere il problema della passeggiata casuale.
Di quanto si riducono loccupazione di memoria e il tempo di esecuzione rispetto al solutore di Matlab? Si riduce anche lerrore di
propagazione?

Soluzione
Poich
e det A = 6 6= 0, la matrice A `
e regolare e quindi ammette
linversa.
Linversa `
e definita dalla relazione A A1 = I, pertanto le colonne di
A1 = [X1 X2 X3] sono le soluzioni dei sistemi lineri A Xi = Ei, dove
Ei, i = 1, 2, 3, sono i tre vettore della base canonica in IR3.

28

La soluzione dei sistemi lineari

Dalluguaglianza A = LU , dove

L = 2

si ottiene

u1 = 2

29

0 0

1 0
3 1

u1 v 1

U = 0 u2
0

v1 = 2

L Yi = Ei

v2
u3

con gli algoritmi di sostituzione in avanti e indietro d`


a
11
6

4
X1 =
3

1
3

v2 = 1

2 = 1 u2 = 3 (1)(2) = 1

3 = 1 u3 = 4 (1)(1) = 3

L = 1

0 0

1 0
1 1

2 2 0

1 1
0 0
3

U = 0

U Xi = Yi

30

4
3

4
X2 =
3

1
3

11
6

4
A1 =
3

1
3

1
3

1
X3 =
3

1
3

4
3
4
3
1
3

1
3

1
3

31

Sistemi non lineari


F (X) = 0

Sistemi lineari

Metodo del punto unito

AX = B

F (X) = AX B

X, F IRn

X, B IRn A IRnn

Sistemi non lineari


F (X) = 0 X = (X) con = [1(X), 2(X), ..., n(X)]T

Se X IRn `
e radice di F allora `
e punto unito di :
X = [x1, x2, ..., xn]T

X = [x1, x2, ..., xn]T

F = [f1(X), f2(X), ..., fn(X)]T

A = aij i,j=0
B = [b1, b2, ..., bn]T

0=

[0, 0, ..., 0]T

f1(x1, x2, ..., xn) = 0


f2(x1, x2, ..., xn) = 0
................................
................................
fn(x1, x2, ..., xn) = 0

F (X) = 0 X = (X)

in

Sistemi lineari
A X = B X = C X+Q con Q = [q1, q2, ..., qn]T

a11x1 + a12x2 + ... + a1nxn = b1


a21x1 + a22x2 + ... + a2nxn = b2
................................
................................
an1x1 + an2x2 + ... + annxnn = bn

in

C = cij i,j=0
Se X IRn `
e soluzione di A X = B allora `
e punto unito
di = C X + Q:
AX = B X = C X + Q

32

33

Metodi iterativi a un punto


Metodi iterativi per sistemi lineari

Il punto unito X = (X), X = [x1, x2, ..., xn]T , pu`


o essere
approssimato generando la successione

X (0) dato
X (k)

(X (k1))

k = 1, 2, ...

(0)

(0)

Nel caso lineare il punto unito X = [x1, x2, ..., xn]T , pu`
o
(0)

X (0) = [x1 , x2 , ..., xn ]T dato


(k)
x1

(k1) (k1)
(k1)
1(x1
, x2
, ..., xn
)

x(k) = (x(k1), x(k1), ..., x(k1)


)
n
2 1
2
2

(k)
xn

(k1) (k1)
(k1)
n(x1
, x2
, ..., xn
)

Le funzione i sono chiamate funzioni di iterazione.

34

essere approssimato generando la successione

X (k) = C X (k1) + Q
X (0) IRn dato
(k)

xi

n
X

(k1)

cij xj

j=1

k = 1, 2, . . .

+ qi

i = 1, . . . , n

La matrice C IRnn `
e chiamata matrice di iterazione.
35

Convergenza

Norma di vettore

Per misurare la lunghezza di un vettore V IRn si ricorre alla norma


di vettore:

1/p
n
X
p

kV k =
|vi|
i=1

Convergenza:

lim kE (k)k = 0

La norma di un vettore V = [v1, . . . , vn]T viene utilizzata per misurare la sua lunghezza.
Intorno: kV W k r

Norma uno:

kV k1 :=

n
X

v
uX
u n
|vi|2
Norma due o euclidea: kV k2 := t
i=1

Per poter definire la convergenza di un metodo iterativo dobbiamo


prima di tutto definire lerrore di troncamento
Errore di troncamento:
E (k) = X

X (k)
IRn

soluzione
soluzione
esatta
approssimata

|vi|

r
V

i=1

lim X (k) = X

Se il metodo iterativo `
e convergente, in assenza di errori di arrotondamento si ottiene la soluzione esatta dopo un numero infinito di
passi.

Norma infinito:

Nota. In pratica ci si arresta quando kE (k)k

Nota. Tutte le norme sono equivalenti: mkV kp kV kq M kV kp

kV k := max |vi|

r
V

1in

v1

(criterio di arresto)
36

37

Propriet`
a della norma di vettore
kV k 0,

Norme di matrici

kV k = 0V = 0

kV k = || kV k

La norma di una matrice A IRnn soddisfa le seguenti

IR, V IRn
V, W IRn

kV + W k kV k + kW k

Propriet`
a
(disuguaglianza triangolare)
kAk 0,

kAk = 0A = 0

Distanza: in uno spazio vettoriale normato S `e possibile introdurre la distanza tra due punti V e W in S
d(V, W ) := kV W k

kAk = || kAk,

IR, A IRnn

kA + Bk kAk + kBk,

A, B IRnn

(disuguaglianza triangolare)

Propriet`
a della distanza:
kA Bk kA|| kBk,

d(V, W ) = 0 V = W
d(V, W ) = d(W, V )

V, W S

A, B IRnn

Definizione. Una matrice si dice convergente se lim kAk k = 0


k

d(V, W ) d(V, Z) + d(Z, W )

V, W, Z S

38

39

Norme indotte dalla norma di vettore


Ogni norma di vettore pu`
o essere utilizzata per definire una norma
di matrice che permette di misurare come la matrice agisce sui
vettori:
kAk = max ||A X||
kXk=1

A IRnn

Infatti, se X 6= 0, si ha


A X
kA Xk
kA Xk


kAk = max kA Xk = max
= kAk
= max


kXk
kXk=1
kXk6=0 kXk
kXk6=0 kXk

Nota. Per tutte le norme indotte si ha kIk = 1 (I: matrice identit`


a)
40

Convergenza: condizione necessaria

1in

Norma due o spettrale:

(per colonne)

n
X

|aij |

(per righe)

j=1

||A||2 :=

(AT A)

Teorema. Per una norma verificante la relazione di compatibilit`


a
si ha (A) kAk.
Infatti da X = A X = kXk = kA Xk kAk kXk = || kAk.
41

Definizione. Unapplicazione : S S, dove S `


e uno spazio
normato `
e detta contrazione, se esiste (0, 1) tale che
X, Y S

Teorema. Sia S uno


spazio
n
o
n vettoriale

onormato e sia : S S.
e convergente a un valoSe la successione X (k) = X (k1) `
re X S e lapplicazione
`
e continua in X X `
e punto unito di
 
, cio`
e X= X .
Dim.



 

X = lim X (k) = lim X (k1) = lim X (k1) = X
k

||A|| := max

|aij |

i=1

k(X) (Y )k kX Y k < kX Y k

Convergenza: lim E (k) = 0 lim X (k) = X

1jn

n
X

Convergenza: condizione sufficiente

Tramite la norma di vettore si pu`


o misurare la lunghezza del
vettore errore di trocamento, cio`
e la distanza tra la soluzione esatta
e quella approssimata.

||A||1 := max

dove (M ) := maxi |i | (i : autovalori di M ) `


e il raggio spettrale
nn
della matrice M IR
.
e simmetrica = (AT A) = 2(A) = kAk2 = (A)
Se A `

kA Xk kAk kXk

Norma uno:

Norma infinito:

X IRn

Le norme indotte soddisfano tutte le propriet`


a delle norme e, inoltre,
soddisfano la relazione di compatibilit`
a :

Norme indotte: esempi

Teorema. Sia D IRn. Se : D D `


e una contrazione
esiste un unico punto unito X D di
la successione

X (k) = X (k1)

o

`
e convergente a X

per ogni approssimazione iniziale X (0) D

42

43

Contrazione: condizione sufficiente


Matrice Jacobiana di

1(X) 1(X)

x1
x2

(X)

x
1

J(X) =

n(X)

x1

2(X)

x2

n(X)

x2

Esempio
La condizione kJ(X)k , X D, `
e sicuramente verificata se

1(X)

xn

2(X)

xn

n(X)

xn



(X)


i

Mik
x

k

con

Esempio: n = 2
(

f (x, y) = 0
g(x, y) = 0

X (0) IRn
(k)

xi

n
X

C: matrice di
iterazione

dato
(k1)

cij xj

j=1

+ qi,

Se il metodo iterativo `
e convergente, in assenza di errori
di arrotondamento si ottiene la soluzione esatta dopo un
numero infinito di passi.

46

|x(X)| M11 |y (X)| M12


|x(X)| M21 |y (X)| M22

M12 + M22 < 1

2 + M2 + M2 + M2 < 1
oppure M11
12
21
22

45

Metodi iterativi per sistemi lineari:


condizione sufficiente di convergenza
Matrice Jacobiana di = C X + Q

lim E (k) = 0 lim X (k) = X

kM k < 1 oppure M11 + M21 < 1

1 (X)

x1

2 (X)

x1
J(X) =

....

n (X)

i = 1, . . . , n

M21 + M22 < 1

Un metodo iterativo `
e detto convergente se

x = (x, y)
y = (x, y)

44

Metodi iterativi per sistemi lineari

M11 + M12 < 1

`
e una contrazione in D

X (k) = C X (k1) + Q, k = 1, 2, . . .

XD

kM k < 1 dove M = [Mik ]n


i,k=1

Teorema. Se i) le funzioni di iterazione 1, 2, ..., n sono


continue e parzialmente derivabili in D;
ii) esiste (0, 1) tale che kJ(X)k per X D

i, k = 1, . . . , n

1 (X)
x2
2 (X)
x2
....
n (X)
x2

1 (X)

xn

2 (X)

...

xn
=

.... ....

n (X)

...

x
...

Corollario. Se esiste (0, 1) tale che kCk


`
e una contrazione per ogni X
il metodo iterativo `
e convergente
47

Condizione sufficiente di convergenza

Condizione necessaria e sufficiente di convergenza

Teorema. Condizione sufficiente affinch`


e un metodo
iterativo sia convergente a X per qualunque scelta del
vettore iniziale X (0), `
e che
kCk < 1

Teorema. Una matrice A IRnn `


e convergente se e
solo se (A) < 1.
Teorema. Un metodo iterativo converge per qualunque
scelta del vettore iniziale X (0) , se e solo se
(C) < 1
dove (C) = max |i| `
e il raggio spettrale della matrice

E (k) = X X (k) = (CX + Q) (CX (k1) + Q) =


= C(X X (k1) ) = CE (k1)

E (k) = CE (k1)

kE (k)k = kCE (k1)k = kC 2E (k2)k = = kC k E (0)k kC k k kE (0)k

Relazione di compatibilit`
a
(0)k kCkk kE (0)k
kE (k)k kC k k kE (0)k = k C
| C{z C} k kE
k volte

1in

di iterazione C
E (k) = C E (k1) = = C k E (0)
lim E (k) = lim C k E (0) = 0

lim C k = 0
k
|
{z
}

(C) < 1

matrice
convergente

se kCk < 1 lim kE (k)k = 0


k
48

Criterio darresto

Velocit`
a asintotica di convergenza

Se il metodo iterativo `
e convergente, si arresta il procedimento
quando
kX (k+1) X (k)k <

49

Se A IRnn `
e una matrice convergente, vale la propriet`
a
lim

: tolleranza prefissata
Dalla relazione

kE (k)k = kX (k) Xk = kX (k) X (k+1) + X (k+1) Xk =

kE (k+1)k kCk kE (k)k kCk


kE (k+1)k

{z

kAk k = (A)

kE (k)k = kC k k kE (0)k

= kX (k) X (k+1) + E (k+1)k kX (k+1) X (k)k + kE (k+1)k


|

kX (k+1) X (k)k + kE (k+1)k

per k grande si ottiene


kE (k)k
kC k k k (C)
kE (0)k

kCkk+1
kCk
kX (k+1) X (k)k
kX (1) X (0) k
1 kCk
1 kCk

Stima a priori: il numero di iterazioni K necessario affinch


e
kE (K)k < , `
e dato da

Lerrore si riduce di un fattore 10m alliterazione


K

(1 kCk)
1
K > log
kX (1) X (0) k log kCk

m
Log (C)

Velocit`
a asintotica di convergenza: V = Log (C)
50

51

Esercizio

Data la matrice di iterazione C() = 0

vettore Q = (7/8, 7/8, 1/2)T ,

1
2

2
1
4

Traccia della soluzione


IR, e il

1
1
1
||C||1 = max(2|| + , || + ) = 2|| +
2
4
2

1.1) determinare per quali valori di il procedimento iterativo


(

X (k+1) = C()X (k) + Q,


X (0) dato

k = 0, 1, . . .

1.1) Condizione sufficiente di convergenza: ||C||1 < 1 oppure ||C|| <


1

||

3
3
||C|| = max( ||, ) =

2
4

||
2

X (k) IR3

|| >

||C||1 < 1|| <


1
2

1
4

||C|| < 1|| <

1
2

2
3

Attenzione: le condizioni su sono diverse a seconda della norma


che si sceglie.

risulta sicuramente convergente;


1.2) posto = 1/2, X (0) = (0, 0, 0)T , dare una stima del numero di
iterazioni necessarie affinch
e lapprossimazione abbia 5 decimali esatti.
52

53

Condizione necessaria e sufficiente di convergenza:


(C()) < 1
1.2) =

1
1 )|| = 3 > 1
||C( 2
1
2
2

1 )|| =
||C( 2

3
<1
4

Autovalori di C(): 0 con molteplicit`


a 2,

Attenzione: in norma uno non si pu`


o stabilire se il metodo converge,
si ha invece convergenza in norma infinito, infatti
lim ||E (k)|| = 0
k

K > log

(1 ||C( 1
2 )||)
||X (1) X (0) ||

2.5

1 )||
log ||C( 2

1

Raggio spettrale di C(): (C()) = +
4

(C()) < 1

1
+
4

3
5
<<
4
4

(C())
1.5

0.5

0
2

3
(1) X (0)|| = ||Q|| = max |q | = 7 , = 0.5 105
||C( 1

i
2 )|| = 4 , ||X
8

1.5

0.5

0.5



1


Velocit`
a di convergenza: V () = Log((C()) = Log +

K 47

54

Nota: questo intervallo di contiene entrambi gli intervalli trovati


con la condizione sufficiente.
55

1.5

Costruzione di metodi iterativi


AX = B

X = CX + Q

Splitting di A: A = M + N

Metodo di Jacobi

dove M `
e una matrice invertibile.

AX = B (M + N )X = B M X = N X + B
X = M 1N X + M 1B C = M 1N

Q = M 1B

Una possibile decomposizione di A `


e

D = diag(a11, a22, . . . , ann)

0
0
a21 0

L = a31 a32

an1 an2

an,n1

0
0
0

(elementi di A al di sotto
della diagonale principale)

0
0

U =
0
0

a12
0

a13
a23

a1n
a2n

an1,n
0

(elementi di A al di sopra
della diagonale principale)

M = D + L, N = U

(k+1)

X (k) = CJ X (k1)+QJ xi

a
n2
ann

b1

a11

b2

QJ = 22

a
2n
a22

ann

aii

n
X

j=1
j 6= i

(k)

aij xj

+ bi

i = 1, 2, . . . , n; k 0

56

57

Convergenza dei metodi di Jacobi e Gauss-Seidel

Metodo di Gauss-Seidel
(

ann

a
a
12 1n
a11
a11

Algoritmo J

(elementi diagonali di A)

M = D, N = L + U
a
21

a22

(
CJ =

CJ = D 1(L + U )


QJ = D 1B

an1

A = L + D + U
dove

CGS = (D + L)1U
QGS = (D + L)1B

Per verificare la convergenza si possono applicare alle matrici di


a viste:
iterazione CJ e CGS le condizioni gi`

C.S.:

X (k) = CGS X (k1) + QGS

C.N.S.:

Algoritmo GS

n
X
X
1 i1
(k+1)
(k+1)
(k)
aij xj
xi
=

aij xj + bi
aii
j=1
j=i+1

i = 1, 2, . . . , n; k 0
58

kCJ k1, kCJ k < 1 e kCGS k1, kCGS k < 1


(CJ ) < 1 e (CGS ) < 1

Attenzione: Le condizioni di convergenza per le matrici di iterazione CJ e CGS vanno verificate di volta in volta.
Per alcune matrici A potrebbe convergere solo uno dei due metodi.
Se convergono entrambi i metodi, quello di Gauss-Seidel converge
pi`
u velocemente.
59

Convergenza per matrici A


con struttura speciale
Matrici diagonalmente dominanti:
|aii| >

n
X

|aij |

i = 1, 2, . . . , n

|aii| >

j=1
j 6= i

n
X

Matrici (simmetriche) definite positive:


Una matrice quadrata A IRnn simmetrica `
e definita positiva se

|aji|

X T AX =

i = 1, 2, . . . , n

(diagonale dominanza
per colonne)

Condizione sufficiente di convergenza:


Teorema. Se A `
e diagonalmente dominante per righe o per
colonne, i metodi di Jacobi e Gauss-Seidel sono entrambi
convergenti per qualunque scelta dellapprossimazione iniziale
X (0) .
Per esempio, se A `
e diagonalmente
dominante
per righe si ha





n
n
X
1
X
aij

<1
kCJ k = max

|aij |
max
1in
1in

|aii|

aii

j=1
j=1

j 6= i
j 6= i

aij xixj > 0

X IRn

i,j=1

j=1
j 6= i

(diagonale dominanza
per righe)

n
X

Per riconoscere se una matrice `


e definita positiva si pu`
o usare il criterio di Sylvester:
Affinch
e una matrice A IRnn simmetrica sia definita poe necessario e sufficiente che
sitiva, `
det Ak > 0
k = 1, 2, . . . , n,
dove Ak sono le sottomatrici principali di testa di A.
Condizione sufficiente di convergenza:
Teorema.
Se A `
e (simmetrica) definita positiva, il
metodo di Gauss-Seidel `
e convergente per qualunque scelta
dellapprossimazione iniziale X (0).

60

61

Metodo di rilassamento (S.O.R.)


M =

D
D
+ L, N = U (1 )

IR+

Convergenza del metodo di sovrarilassamento


1 


D
D

C
=

+
L
(1

Condizione
necessaria


1

+
L
B
Q
=

Poich
e (C ) |1 |, il metodo di rilassamento
pu`
o convergere solo se (0, 2)

X (k) = C X (k1)+Q = (D + L)1 (U + (1 )D)X (k)+(D + L)1B

Teorema. Se A `
e (simmetrica) definita positiva, la condizione (0, 2) `
e necessaria e sufficiente per la convergenza.

Algoritmo S.O.R. (successive over relaxation)

n
X
X
1 i1
(k)
(k+1)
(k)
aij xj
vi =

aij xj + bi
aii
j=1
j=i+1
(k+1)

xi

(k)

= vi

Teorema. Se A `
e (simmetrica) definita positiva e tridiagoa di convergenza `
e massima per
nale allora la velocit`
2
q
= 0 =
1 + 1 (CGS )

(k)

+ (1 )xi

i = 1, 2, . . . , n; k 0
62

63

Esempio 1: iterazioni

Esempio 1

La soluzione esatta `
e pi = 1 Ni , i = 0, . . . , N .

Risolvere il problema della passeggiata casuale con i metodi di Jacobi e Gauss-Seidel.


Soluzione
Si tratta di risolvere il sistema lineare

2p1 p2

p1 +2p2 p3

+2p
p
p
N
3
N
2
N 1

pN 2 +2pN 1

= 1

kCJ k1

kCJ k

(CJ )

kX (50) X (49)k

kE (50)k

11
21
51
101

1
1
1
1

1
1
1
1

0.9595
0.9888
0.9981
0.9995

0.64 102
0.95 102
0.95 102
0.95 102

0.77 101
0.36
0.68
0.81

decimali
esatti
0
0
0
0

Per il metodo di Gauss-Seidel si ha:

= 0
= 0
= 0

nelle incognite pi , i = 1, . . . , N 1.

64

Script MATLAB: metodo di Jacobi

kCGS k1

kCGS k

(CGS )

kX (50) X (49) k

kE (50)k

11
21
51
101

0.9990
1
1
1

0.9980
1
1
1

0.9206
0.9778
0.9962
0.9990

0.69 103
0.42 102
0.44 102
0.44 102

0.80 102
0.18
0.55
0.73

decimali
esatti
1
0
0
0

Cosa succede se si utilizza il S.O.R.? E possibile determinare ott?


65

QJ = Minv*B;
%
% Calcolo autovalori e verifica C.N.S. di convergenza
%
rhoCJ = max(abs(eigs(CJ,1)))
if (rhoCJ >= 1)
error(Attenzione: ==>> rho > 1)
return
end
%
% Ciclo iterativo
%
X0 = QJ;
for k=1:50,
X = CJ*X0+QJ;
err = norm(X-X0,inf)
X0 = X;
end,
disp(X)

% Soluzione di un sistema lineare con metodo di Jacobi


%
% Input:
%
A: matrice dei coefficienti
%
B: vettore dei termini noti
%
epsilon: accuratezza
% Output:
%
X: vettore soluzione
%
CJ: matrice di iterazione
% Input
A = input(Matrice dei Coefficienti: );
B = input(Vettore (colonna) dei termini noti: );
% Calcolo delle dimensioni della matrice
dimA = size(A);
n = dimA(1);
%
% Costruzione matrice di iterazione
%
D = diag(diag(A));
L = tril(A,-1);
U = triu(A,1);
Minv = inv(D);
CJ = -Minv*(L+U);

Per il metodo di Jacobi si ha:

Per costruire la matrice dei coefficienti A e il termine noto B, si


possono dare, dalla linea di comando, le istruzioni:
>> N=11;A=2*eye(N-1);for i=1:N-1,for j=1:N-1,if abs(i-j)==1,A(i,j)=-1; end,end,end
>> B=zeros(N-1,1);B(1)=1;
66

67

Programma FORTRAN: metodo di Jacobi

Script MATLAB
% Soluzione di un sistema lineare AX=B con lalgoritmo del metodo di Jacobi
%
clear
%
% Input
A = input(Matrice dei Coefficienti: );
B = input(Vettore (riga) dei termini noti: );
X0 = input(Vettore (riga) dellapprossimazione iniziale: );
Kmax = input(Numero massimo di iterazioni: );
%
% Ciclo iterativo
N = size(A,1);
for k=1:Kmax
for i=1:N
X(i) = (-sum(A(i,1:i-1).*X0(1:i-1))-sum(A(i,i+1:N).*X0(i+1:N))+B(i))/A(i,i);
end
E(k) = norm(X-X0,inf);
X0=X;
end
Per il metodo di Gauss-Seidel si sostituisce listruzione del ciclo interno con
for i=1:N
X(i) = (-sum(A(i,1:i-1).*X(1:i-1))-sum(A(i,i+1:N).*X0(i+1:N))+B(i))/A(i,i);
end
68

open (20,file=sistlin.dat)
read (20,*) n, thres
if (n .gt. nmax) stop n>nmax
read (20,*) ((a(i,j),j=1,n),b(i),i=1,n)
close(20)

program jacobi
*
*
*
*
*
*
*
*
*
*
*
*
*
*

Soluzione di un sistemia lineare con il metodo di Jacobi


Input:
- n: dimensioni del sistema lineare
- thres: accuratezza richiesta nellapprossimazione
- a(n,n): matrice dei coefficienti
- b(n): vettore dei termini noti
Output:
- a(n,n): matrice di iterazione
- iter-1: numero di iterazioni
- errmax: differenza tra le ultime due approssimazioni in norma infinito
- x(n): soluzione approssimata
implicit none
integer nmax, n, i, j, iter, itermax
real aux, errmax, thres

*
parameter (nmax=150)
real a(nmax,nmax),b(nmax),x(nmax),x0(nmax)
*
* Lettura dei dati di input
* (il vettore dei termini noti viene memorizzato nellultima colonna del file)
*
69

*
* Ciclo iterativo
*
errmax = 100
itermax = 200
iter = 1
do while (errmax.gt.thres.and.iter.le.itermax)
errmax = 0.
do i = 1, n
x(i) = b(i)
do j = 1, n
x(i) = x(i) + a(i,j)*x0(j)
enddo
errmax = max(errmax,abs(x(i)-x0(i)))
enddo
do i = 1, n
x0(i) = x(i)
enddo
iter = iter + 1
enddo

*
* Costruzione della matrice di iterazione (viene memorizzata in a),
*
del vettore q (viene memorizzato in b),
*
dellapprossimazione iniziale (viene memorizzata in x0)
*
do i = 1, n
aux = a(i,i)
b(i) = b(i)/aux
a(i,i) = 0.
do j = 1, n+1
a(i,j) = -a(i,j)/aux
enddo
x0(i) = b(i)
enddo
*
* Apertura del file di output
*
open (21,file=output.dat)
write (21,200) ((a(i,j),j=1,n),i=1,n)
200
format (2x,Matrice di iterazione:/5(e13.5,2x))
70

71

*
* Scrittura delloutput
*
write (21,201) iter-1, errmax, (x(i),i=1,n)
201
format (//,2x,Numero iterazioni:,i4//,2x,Errore:,e13.6//,
$
2x,Vettore Xn:/6(e13.6,2x))

Esercizio
Dato il sistema lineare AX = B dove

close(21)

*
stop
end

Esercizio
Scrivere un programma (Matlab/Fortran/C) che approssimi la soluzione
di un sistema lineare con il metodo del sovrarilassamento. I dati di
input (dimensioni del sistema lineare, matrice dei coefficienti, vettore
dei termini noti, accuratezza richiesta, parametro di rilassamento)
devono essere letti dal file input.dat. I dati di output (matrice di
iterazione, numero totale di iterazioni, differenza tra due iterazioni
successive in norma 1, soluzione approssimata) devono essere scritti
sul file output.dat.

1 1 2

A=
2 1

2 1

2
,

B = (1, 0, 0)T ,

1.1) verificare quale tra i metodi di Jacobi e Gauss-Seidel risulta convergente;


1.2) approssimare la soluzione del sistema lineare con 6 decimali
esatti.

72

Traccia della soluzione

1 0 0

1.1) D = 0 1 0
0 0 1

0 0 0

L= 2 0 0
2 1 0

0 1 2

CJ = 2 0 2
2 1 0

1.2) Per approssimare la soluzione del sistema lineare con 6 decimali


o utilizzare il metodo di Jacobi arrestando le iterazioni
esatti, si pu`
quando
||E (k+1)|| ||X (k+1) X (k) || 0.5 106 (criterio di arresto)

0 1 2

U = 0 0 2
0 0 0

73

Iterazioni

0 1 2

CGS = 0 2 6
0 0
2

X (0) = QJ = D 1B = (1, 0, 0)T

Entrambe le matrici hanno norma maggiore di 1, quindi la cone soddisfatta. Per verificare
dizione sufficiente di convergenza non `
se `
e soddisfatta la condizione necessaria e sufficiente bisogna calcolare il raggio spettrale delle matrici di iterazione.
Autovalori di CJ : 0 con molteplicit`
a 3
(CJ ) = 0 il metodo di Jacobi converge

X (1) = CJ X (0) + QJ = (1, 2, 2)T

||X (1) X (0) || = 2

X (2) = CJ X (1) + QJ = (1, 2, 0)T

||X (2) X (1)|| = 4

X (3) = CJ X (2) + QJ = (1, 2, 0)T

||X (3) X (2)|| = 0

Nota 1. In questo caso la soluzione `


e esatta.

Autovalori di CGS : 0 con molteplicit`


a 1, 2 con molteplicit`
a 2
(CGS ) = 2 il metodo di Gauss-Seidel non converge
74

Nota 2. La velocit`
a di convergenza `
e VJ = Log((CJ )) = .
Cosa si pu`
o dire per il metodo S.O.R. ?

75

Esercizio

x2
= 9
5x1
Dato il sistema lineare
x1 + 5x2 2x3 = 7

2x2 + 5x3 = 6

approssimare

la soluzione con 8 decimali esatti utilizzando il metodo SOR.

Traccia della soluzione

5 1
0

La matrice dei coefficienti A = 1


e tridiagonale.
5 2 `
0 2
5
Verifichiamo se `
e definita positiva utilizzando il criterio di Sylvester.
det A1 = 5 > "0

5 1
= 23 > 0
1
5
det A3 = det A = 100 > 0

det A2 = det

Per risolvere il sistema lineare si pu`


o utilizzare il metodo del rilassamento (SOR) con parametro ottimo
2
q
0 =
1 + 1 (GGS )

0 1
0
0 25 0
1

0 2 =
5 50
0
0
125
0
0
0
0 2 20

Aultovalori di CGS : 0 con molteplicit`


a 2;

(CGS ) =

5
0 0

CGS = (D+L)1U = 1
5 0
0 2 5

1
con molteplicit`
a 1
5

1
0 1.05573
5

A`
e definita positiva

Nota. Una matrice tridiagonale simmetrica con elementi positivi


sulla diagonale principale `
e sempre definita positiva

Metodo
Iterazioni
Tempo di calcolo (s)

SOR 0
12
0.01

SOR = 0.8
20
0.01

Jacobi
25
0.03

76

Condizionamento di un sistema lineare


Il condizionamento del problema della soluzione di un sistema lineare
`
e indipendente dal metodo numerico scelto per risolverlo.
Il condizionamento misura quanto una perturbazione sui dati di
input (matrice dei coefficienti e termine noto) influenzi i risultati (la
soluzione).
Un sistema lineare si dice ben condizionato se a piccole variazioni
sui dati corrispondono piccole variazioni sui risultati.
Viceversa, se a piccole variazioni sui dati corrispondono grandi variazioni sui risultati, si dice che il sistema `
e mal condizionato.
Quando si approssima la soluzione di un sistema lineare mal condizionato bisogna ridurre il pi`
u possibile gli errori di arrotondamento.
78

Gauss-Seidel
13
0.02
77

Errore sul termine noto


Supponiamo che il termine noto B sia affetto da un errore B.
B

A X = B A(X + X) = B + B
Per sottrazione si ricava
A X = B X = A1 B
Per misurare la perturbazione X indotta su X si ricorre alla norma.
||X|| = ||A1 B|| ||A1|| ||B||
||B|| = ||A X|| ||A|| ||X||
Dividendo termine a termine si trova una maggiorazione per lerrore
relativo ||X||/||X||.
||X||
||B||
||B||
||A|| ||A1||
= K(A)
|
{z
} ||B||
||X||
||B||

79

Numero di condizionamento

Errore sulla matrice dei coefficienti

K(A) := ||A|| ||A1||: numero di condizionamento della matrice A


||B||
||X||
K(A)
||X||
||B||

Se anche la matrice A `
e affetta da un errore A si ha
||X||

||X||

Rappresenta il coefficiente di amplificazione dellerrore relativo sui dati

K(A)
||A||
1 K(A)
||A||

{z

||A||
||B||
+
||B||
||A||

Coefficiente di amplificazione
Si pu`
o dimostrare che

1 K(A) +

Condizionamento ottimo
Condizionamento peggiore
(matrici ortogonali)
(matrici singolari)

Condizionamento in norma 2
Se A `
e (simmetrica) definita positiva si ha K2(A) = ||A||2||A1||2 =

Esempi di matrici malcondizionate: matrici di Hilbert

H=

1
1/2
1/3
1/2
1/3
1/4
1/3
1/4
1/5

1/n 1/(n + 1) 1/(n + 2)

1/n
1/(n + 1)
1/(n + 2)

1/(2n 1)

Infatti ||A||2 =

(AT A) =

max
min

(A2) = (A) = max

||A1||2 = (A1) = maxi


80

1
1
=
i
min

81

Traccia della soluzione


Esercizio

a) kA()k1 = max(2, 2, 2||+1) =

2
per 2|| + 1 2 ||
2|| + 1 per 2|| + 1 > 2 || >

kA()k1 3 per || 1

1 2

Data la matrice A() = 1 0


0
0 1

b) K(A()) = kA()k1 kA1()k1

a) individuare i valori di per cui kA()k1 3;


b) studiare come varia il numero di condizionamento K(A()) in
1
norma 1 per || e trovarne il massimo;
2
 

c) Dato il sistema A 1
2 X = B, fornire una stima dellerrore relativo
||X||1
||B||
corrispondente a un errore relativo ||B|| 1 = 102.
||X||
1

kA1()k1 =

3/2
per ||
2|| + 1 per || >

1
4
1
4

1
3
per
|| 4
1
K(A()) = 2(2|| + 1) per 4 < || 1
2

1 < ||
(2|| + 1)2 per
2

max||1/2 K(A()) = K(A(1/2)) = 4

||X||

82

0 2 2
1

A1() = 1 1 2
2
0
0 2

||B||

c) ||X|| 1 K(A(1/2)) ||B|| 1 = 4 102


1
1

83

1
2
1
2

Riferimenti bibliografici
L. Gori, Calcolo Numerico:
Cap. 2 2.1-2.5, 2.8-2.11
Cap. 4 4.1-4.6, 4.8, 4.10 (solo enunciati dei teoremi), 4.12
L. Gori, M.L. Lo Cascio, F. Pitolli, Esercizi di Calcolo Numerico:
2.1-2.5, , 2.19-2.25, 2.29, 2.30, 7.15, 7.16, 7.19, 7.35, 7.49, 7.52, 7.57-7.59, 7.64

84

You might also like