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