Esercizio - pivot piccolo in aritmetica a quattro cifre e costo della fattorizzazione
Teoria: Fattorizzazione LU, pivoting e CholeskyRisolvere $A\mathbf x=\mathbf b$ con Gauss equivale a fattorizzare $A=LU$ ($L$ triangolare inferiore con $1$ sulla diagonale e i moltiplicatori $l_{ik}=\frac{a_{ik}^{(k)}}{a_{kk}^{(k)}}$ sotto la diagonale, $U$ la matrice a scala finale) e poi risolvere $L\mathbf y=\mathbf b$ (in avanti) e $U\mathbf x=\mathbf y$ (all'indietro). Esiste (ed è unica) se i minori principali di testa $\det A_k$, $k<n$, sono $\ne0$. Costo $\frac23n^3$ flop per la fattorizzazione, $2n^2$ per ogni termine noto; $\det A=\prod u_{kk}$. Con un pivot piccolo l'algoritmo è instabile: il pivoting parziale (scambio di righe che porta in posizione di pivot l'elemento di modulo massimo della colonna) dà $PA=LU$ con $|l_{ik}|\le1$ ed esiste per ogni $A$ invertibile. Se $A$ è simmetrica definita positiva esiste $A=LL^T$ (Cholesky), con $l_{jj}=\sqrt{a_{jj}-\sum_{k<j}l_{jk}^2}$ e $l_{ij}=\frac{a_{ij}-\sum_{k<j}l_{ik}l_{jk}}{l_{jj}}$; costo $\frac13n^3$, senza pivoting.Fattorizzazione LU, pivoting e Cholesky →, Aritmetica di macchina - floating point, precisione di macchina e cancellazioneUn calcolatore rappresenta solo un insieme finito di numeri F(β,t,L,U); ogni numero reale viene arrotondato con errore relativo al più u = ½β^(1−t) (u ≈ 1,1·10⁻¹⁶ in doppia precisione) e ogni operazione è esatta più un errore (1+δ), |δ| ≤ u. Conseguenze: overflow e underflow, somma non associativa, assorbimento, e soprattutto la cancellazione numerica nella differenza di numeri quasi uguali, che si evita riformulando l'espressione.Aritmetica di macchina - floating point, precisione di macchina e cancellazione →.
Testo. Si risolve il sistema con un calcolatore che lavora con 4 cifre significative decimali e arrotonda ogni operazione.
- Calcolare la soluzione esatta (a 6 cifre).
- Eseguire la LU senza scambi in aritmetica a 4 cifre e dare la soluzione ottenuta.
- Ripetere con il pivoting parziale.
- Un calcolatore esegue flop/s. Quanto tempo serve per risolvere un sistema con LU, e quanto per 100 termini noti diversi con la stessa matrice, riusando la fattorizzazione o rifacendola ogni volta?
Soluzione
1. Soluzione esatta. Sottraendo la prima equazione dalla seconda: , quindi La matrice è ben condizionata: , , , quindi . Piccole perturbazioni dei dati non fanno danni: un eventuale errore grande è colpa dell'algoritmo.
2. Senza scambi (4 cifre).
- Moltiplicatore: .
- , che a 4 cifre diventa (il è sparito).
- .
- (accettabile: esatto ).
- : sbagliato del 100% (esatto ). Il piccolo errore su (di ordine , invisibile) viene diviso per il pivot e amplificato di : errore assoluto su .
3. Con il pivoting. Si scambiano le righe: con termini noti .
- ; .
- .
- ; . Soluzione , con errore come ci si aspetta da un calcolo a 4 cifre (l'errore di arrotondamento di ciascuna operazione è relativo).
4. Costo. Per : LU flop s. Ogni coppia di sostituzioni: flop ms. Per 100 termini noti:
- riusando la fattorizzazione: s;
- rifacendo tutto ogni volta: s. Il risparmio è di un fattore . Se la matrice è anche SPD, Cholesky dimezza il costo di fattorizzazione ( s).
Risultati: esatto ; senza pivoting (errore ); con pivoting ; tempo s + ms per termine noto.
Errori tipici. Attribuire l'errore al condizionamento del problema ( è piccolo: il problema è buono, l'algoritmo senza pivoting no); dimenticare di arrotondare a 4 cifre ogni risultato intermedio; calcolare il costo di LU come senza il fattore .
Versione ripasso
, 4 cifre significative.
- Esatto: , ; , problema ben condizionato.
- Senza scambi: , , , , : errore (colpa dell'algoritmo).
- Con pivoting: , , , , .
- , flop/s: LU s; sostituzioni ms. 100 termini noti: s riusando LU contro s rifacendo (fattore ).
Errori tipici: errore attribuito al condizionamento; arrotondamenti intermedi saltati; senza .