SISTEMI LINEARI

annuncio pubblicitario
Metodi iterativi
SISTEMI LINEARI
Metodi Iterativi
Jacobi, Gauss-Seidel
Metodi Iterativi
SISTEMI LINEARI
Metodi iterativi
Metodi iterativi
1
Metodi iterativi
Quando è conveniente usarli?
2
Metodi iterativi stazionari
Il metodo di Jacobi
Il metodo di Gauss-Seidel
Condizioni per la convergenza
Metodi Iterativi
SISTEMI LINEARI
Metodi iterativi
Metodi iterativi
1
Metodi iterativi
Quando è conveniente usarli?
2
Metodi iterativi stazionari
Il metodo di Jacobi
Il metodo di Gauss-Seidel
Condizioni per la convergenza
Metodi Iterativi
SISTEMI LINEARI
Metodi iterativi
Stazionari
Quando
Outline
1
Metodi iterativi
Quando è conveniente usarli?
2
Metodi iterativi stazionari
Il metodo di Jacobi
Il metodo di Gauss-Seidel
Condizioni per la convergenza
Metodi Iterativi
SISTEMI LINEARI
Metodi iterativi
Stazionari
Quando
Metodi iterativi
Ax = b,
A ∈ Rn×n ,
b ∈ Rn
Convenienti quando:
La matrice A è sparsa e senza una particolare struttura
La dimensione n è grande
Metodi Iterativi
SISTEMI LINEARI
Metodi iterativi
Stazionari
Jacobi
Gauss-Seidel
Convergenza
Metodi iterativi stazionari
Idea di base
Ax = b
A=P −Q
P non singolare e facile da invertire
−1
Px = Qx + b ⇒ x = |P −1
| {z b} ⇒ x = Bx + c
{z Q} x + P
B
c
Parto da un vettore iniziale x (0) e genero la successione
x (1) = Bx (0) + c, x (2) = Bx (1) + c, . . .
ossia
x (k) = Bx (k−1) + c (k ≥ 1)
V si costruisce la soluzione x di un sistema lineare Ax = b
come limite di una successione di vettori.
Metodi Iterativi
SISTEMI LINEARI
Metodi iterativi
Stazionari
Jacobi
Gauss-Seidel
Convergenza
Metodi iterativi stazionari
Teorema
La successione {x (k) } al tendere di k all’infinito, converge alla
soluzione x del sistema lineare Ax = b
se e solo se
il raggio spettrale della matrice di iterazione
B = P −1 Q = I − P −1 A
è minore di 1.
Raggio spettrale di B:
ρ(B) = max |λi |
i
Metodi Iterativi
λi autovalori di B
SISTEMI LINEARI
Metodi iterativi
Stazionari
Jacobi
Gauss-Seidel
Convergenza
Criterio di arresto
È necessario stabilire quando terminano le iterazioni.
Il procedimento termina quando
||x (k+1) −x (k) ||
||x (k+1) ||
≤ TOL, dove TOL è una tolleranza prefissata
(controllo dell’incremento)
si supera il numero massimo di iterazioni NMAX stabilito a
priori.
Spesso si usa anche
||r (k) ||
||r (0) ||
||r (k) ||
||b||
o più semplicemente
(controllo del residuo).
≤ TOL dove r (k) = b − Ax (k) ,
≤ TOL avendo scelto x (0) = 0
Metodi Iterativi
SISTEMI LINEARI
Metodi iterativi
Stazionari
Jacobi
Gauss-Seidel
Convergenza
Il controllo dell’incremento è significativo se la norma della
matrice di iterazione B è minore di 1.
Infatti si può dimostrare che, se ||B|| < 1,
||e(k) || ≤
1
||x (k+1) − x (k) ||
1 − ||B||
dove e(k) = x − x (k)
Il controllo del residuo è significativo se la matrice A del
sistema lineare è ben condizionata.
Si può dimostrare infatti che
||e(k) ||
||r (k) ||
≤
cond(A)
||b||
||e(0) ||
.
Metodi Iterativi
SISTEMI LINEARI
Metodi iterativi
Stazionari
Jacobi
Gauss-Seidel
Convergenza
Algoritmo e costo computazionale
Algoritmo
Input: A, b, TOL, NMAX , x0 (approssimazione iniziale)
Output: x (approssimazione ottenuta con la precisione richiesta)
k (numero iterazioni compiute)
1
Pongo l’errore iniziale e = 1 e k = 0 (contatore iterazioni)
2
Calcolo la matrice B e il termine noto c
3
Fino a quando e > TOL & k < NMAX
x = B ∗ x0 + c
e = kx − x0k/kxk
k =k +1
x0 = x
4
Se k = NMAX il metodo non converge,
altrimenti x è la soluzione.
Metodi Iterativi
SISTEMI LINEARI
Metodi iterativi
Stazionari
Jacobi
Gauss-Seidel
Convergenza
Costo computazionale
Ad ogni iterazione, il costo dell’algoritmo è dato dal costo del
prodotto matrice per vettore B ∗ x0. Quindi è dell’ordine del
numero di elementi non nulli della matrice:
Se A è sparsa
O(s)
dove s n2 ,
in genere s < n
Se A è piena
O(n2 )
Metodi Iterativi
SISTEMI LINEARI
Metodi iterativi
Stazionari
Jacobi
Gauss-Seidel
Convergenza
Outline
1
Metodi iterativi
Quando è conveniente usarli?
2
Metodi iterativi stazionari
Il metodo di Jacobi
Il metodo di Gauss-Seidel
Condizioni per la convergenza
Metodi Iterativi
SISTEMI LINEARI
Metodi iterativi
Stazionari
Jacobi
Gauss-Seidel
Convergenza
Il metodo di Jacobi

•
 0
D=
 0
0
A=D+L+U


0 0 0

• 0 0 
U=

0 • 0 
0 0 •
aii 6= 0 i = 1, . . . , n


0 • • •

0 0 • • 
L=

0 0 0 • 
0 0 0 0
0
•
•
•
Posto P = D e Q = −(L + U), la matrice di iterazione è
B = −D −1 (L + U)
e
c = D −1 b
Metodi Iterativi
SISTEMI LINEARI
0
0
•
•
0
0
0
•

0
0 

0 
0
Metodi iterativi
Stazionari
Jacobi
Gauss-Seidel
Convergenza
Comandi utili
>>tril(A)
Estrae la matrice triangolare inferiore di A inclusa la diagonale
>>triu(A)
Estrae la matrice triangolare superiore di A inclusa la diagonale
>>d=diag(A)
Estrae la diagonale di A (d è un vettore)
>>D=diag(d)
Restituisce una matrice diagonale D con elementi uguali agli
elementi del vettore d
>>eig(A)
Restituisce tutti gli autovalori della matrice A
Metodi Iterativi
SISTEMI LINEARI
Metodi iterativi
Stazionari
Jacobi
Gauss-Seidel
Convergenza
Il metodo di Jacobi
x (0) soluzione tentativo
(assumiamo x (0) = 0)
Essendo aii 6= 0, l’iterazione (k + 1)-esima (k ≥ 0) è cosı̀
definita


n
X
1 
(k+1)
(k)
xi
=
bi −
aij xj  i = 1, ..., n
aii
j=1, j6=i
Metodo degli spostamenti simultanei
Esercizio 1:
Implementare l’algoritmo di Jacobi in forma vettoriale.
Metodi Iterativi
SISTEMI LINEARI
Metodi iterativi
Stazionari
Jacobi
Gauss-Seidel
Convergenza
Outline
1
Metodi iterativi
Quando è conveniente usarli?
2
Metodi iterativi stazionari
Il metodo di Jacobi
Il metodo di Gauss-Seidel
Condizioni per la convergenza
Metodi Iterativi
SISTEMI LINEARI
Metodi iterativi
Stazionari
Jacobi
Gauss-Seidel
Convergenza
Il metodo di Gauss-Seidel
In questo caso si scompone A nella forma P − Q con
P = D + L e Q = −U. La matrice di iterazione è quindi
B = −(D + L)−1 U e il vettore c = (D + L)−1 b.
Il metodo di Gauss-Seidel sfrutta le componenti dell’iterata
(k + 1)-esima già calcolate:
P
P
(k+1)
(k)
bi − i−1
− nj=i+1 aij xj
j=1 aij xj
(k+1)
xi
=
i = 1, . . . , n
aii
dove
P0
j=1
e
Pn
j=n+1
vanno intesi come “sommatorie vuote”.
Metodo degli spostamenti successivi
Esercizio 2:
Implementare il metodo di Gauss-Seidel.
Metodi Iterativi
SISTEMI LINEARI
Metodi iterativi
Stazionari
Jacobi
Gauss-Seidel
Convergenza
Outline
1
Metodi iterativi
Quando è conveniente usarli?
2
Metodi iterativi stazionari
Il metodo di Jacobi
Il metodo di Gauss-Seidel
Condizioni per la convergenza
Metodi Iterativi
SISTEMI LINEARI
Metodi iterativi
Stazionari
Jacobi
Gauss-Seidel
Convergenza
Condizioni sufficienti per la convergenza
Jacobi
Se la matrice
A è a diagonale dominante
P
(|aii | > nj=1 j6=i |aij |) V il metodo converge
Gauss-Seidel
Se la matrice A è a diagonale dominante V il metodo
converge
Se la matrice A è simmetrica definita positiva
(x T Ax > 0 ∀x 6= 0) V il metodo converge
Quando entrambi convergono, il metodo di Gauss-Seidel
generalmente converge più rapidamente alla soluzione. Ciò
significa che il numero di iterazioni necessarie per raggiungere
la tolleranza fissata è inferiore a quello richiesto da Jacobi.
Metodi Iterativi
SISTEMI LINEARI
Scarica