Esercizio - conduzione del calore in una barra con Jacobi e Gauss-Seidel
Teoria: Metodi iterativi - Jacobi, Gauss-Seidel e convergenzaSi spezza $A=M-N$ con $M$ facile da invertire e si itera $M\mathbf x^{(k+1)}=N\mathbf x^{(k)}+\mathbf b$, cioè $\mathbf x^{(k+1)}=B\mathbf x^{(k)}+\mathbf c$ con $B=M^{-1}N=I-M^{-1}A$. Con $A=D+L+U$ (diagonale, parte strettamente inferiore e superiore): Jacobi $M=D$, $x_i^{(k+1)}=\frac1{a_{ii}}\big(b_i-\sum_{j\ne i}a_{ij}x_j^{(k)}\big)$; Gauss-Seidel $M=D+L$, usa subito i valori nuovi $x_j^{(k+1)}$, $j<i$. Convergenza per ogni $\mathbf x^{(0)}$ se e solo se $\rho(B)<1$ (D); basta $|B|<1$. Matrice a dominanza diagonale stretta per righe: convergono entrambi; $A$ SPD: converge Gauss-Seidel; per matrici tridiagonali $\rho(B_{GS})=\rho(B_J)^2$. Errore: $\mathbf e^{(k)}=B^k\mathbf e^{(0)}$, $|\mathbf e^{(k)}|\le|B|^k|\mathbf e^{(0)}|$ e $|\mathbf x-\mathbf x^{(k)}|\le\frac{|B|}{1-|B|}|\mathbf x^{(k)}-\mathbf x^{(k-1)}|$. Per guadagnare $d$ cifre servono $k\approx\frac d{-\log_{10}\rho(B)}$ iterazioni.Metodi iterativi - Jacobi, Gauss-Seidel e convergenza →; la stessa matrice è in Esercizio - condizionamento della matrice di rigidezza di una catena di molle.
Testo. Una barra di lunghezza m con generazione interna di calore uniforme ha, a regime, temperatura che soddisfa con e T(0)=T(L)=0\,^\circC (scostamento dalla temperatura degli estremi). La soluzione esatta è . Si discretizza con nodi interni a passo m: la formula alle differenze centrate dà
- Scrivere il sistema e verificare che la soluzione esatta del sistema è .
- Eseguire tre iterazioni di Jacobi e tre di Gauss-Seidel da e calcolare gli errori.
- Calcolare e e il numero di iterazioni per ridurre l'errore di un fattore .
- Quante iterazioni servirebbero con ? Conviene un metodo iterativo?
Soluzione
1. Sistema. con . I nodi sono e K. Verifica: ✓; ✓; ✓. (Le differenze centrate sono esatte per i polinomi di secondo grado, quindi la soluzione discreta coincide con quella continua nei nodi.) Esplicitando le incognite: , , .
2. Iterazioni (temperature in K, errore in norma rispetto a ). Jacobi:
- : ; ; . Errore .
- : ; ; . Errore .
- : ; ; . Errore .
Gauss-Seidel:
- : ; ; . Errore .
- : ; ; . Errore .
- : ; ; . Errore .
Dopo 3 iterazioni la temperatura al centro è K (Jacobi) o K (Gauss-Seidel) contro K: la convergenza è lenta. Il rapporto fra errori successivi di Gauss-Seidel è esattamente da in poi.
3. Raggi spettrali. ha autovalori : , quindi Per ridurre l'errore di : Jacobi iterazioni; Gauss-Seidel iterazioni. Gauss-Seidel dimezza il numero di iterazioni.
4. Griglia fine. In generale . Per : , ; per guadagnare 6 cifre servono iterazioni di Jacobi e di Gauss-Seidel. Ogni iterazione costa operazioni: in totale flop per Gauss-Seidel, contro flop per risolvere direttamente il sistema tridiagonale (Cholesky o LU per matrici tridiagonali: ). Per una matrice a banda stretta conviene il metodo diretto. Gli iterativi servono per matrici sparse di grandi dimensioni non a banda stretta (griglie 2D o 3D), e anche lì con accelerazioni (gradiente coniugato, multigriglia), perché al raffinare della griglia.
Risultati: errori dopo 3 iterazioni: Jacobi K, Gauss-Seidel K; , ; 20 e 10 iterazioni per ; con : e iterazioni per .
Errori tipici. Usare (vale il quadrato); dimenticare che è il termine noto di ogni equazione e non solo del nodo centrale; concludere che un metodo iterativo è sempre più economico di uno diretto.
Versione ripasso
, , ; , : ; esatto .
Jacobi: ; ; ; errori .
Gauss-Seidel: ; ; ; errori (rapporto ).
, , . Fattore : (Jacobi), (GS).
: ; e iterazioni per ( flop) contro del metodo diretto tridiagonale.
Equazioni: , , ; verifica esatta .
Dopo 3 iterazioni la temperatura al centro è (Jacobi), (GS), esatta K: convergenza lenta; le differenze centrate sono esatte sui polinomi di grado 2.
Per griglie fini : servono accelerazioni (gradiente coniugato, multigriglia); per matrici a banda stretta conviene il diretto.
Errori tipici: (è il quadrato); termine noto ovunque; iterativo sempre più economico.