Salta al contenuto
Note per Studenti Norme di matrici e condizionamento dei sistemi lineari

Norme di matrici e condizionamento dei sistemi lineari

In questa pagina 8

Un sistema Ax=bA\mathbf x=\mathbf b nasce da dati misurati (carichi, proprietà dei materiali, geometria) che hanno incertezze. La domanda è: di quanto può cambiare la soluzione se i dati cambiano di poco? Per un sistema 2×22\times2 con coefficienti quasi uguali la risposta può essere «moltissimo», e in quel caso nessun algoritmo, per quanto accurato, può rimediare. Per rispondere in modo quantitativo serve un modo di misurare la «grandezza» di vettori e matrici: le norme. Il quadro generale del condizionamento è in Condizionamento di un problema e stabilità di un algoritmoL'errore finale ha tre origini (dati, troncamento, arrotondamento). Un problema è ben posto se la soluzione esiste, è unica e dipende con continuità dai dati; il numero di condizionamento K = |x f'(x)/f(x)| misura di quanto un errore relativo sui dati si amplifica nel risultato (si perdono circa log10 K cifre). La stabilità riguarda invece l'algoritmo: un algoritmo instabile amplifica gli errori anche su un problema ben condizionato (ricorrenza I_n = 1 − n I_{n−1}); un problema mal condizionato non si salva con nessun algoritmo. Uno schema numerico converge se è consistente e stabile (derivata numerica: troncamento contro arrotondamento).Condizionamento di un problema e stabilità di un algoritmo →; qui si specializza ai sistemi lineari.

Prerequisiti: Prodotto scalare, norma e angoliIl prodotto scalare aggiunge a uno spazio vettoriale lunghezze e angoli: norma, disuguaglianza di Cauchy-Schwarz, angolo tra vettori in R^n, ortogonalità, proiezione su una retta, aree e volumi con il determinante della matrice dei prodotti scalari.Prodotto scalare, norma e angoli →, Autovalori e autovettoriUn autovettore è un vettore non nullo che una funzione lineare manda in un suo multiplo; si trovano gli autovalori come radici del polinomio caratteristico det(A − λI) e gli autovettori come nucleo di A − λI. Matrici simili hanno gli stessi autovalori.Autovalori e autovettori →, Teorema spettrale e forme quadraticheUna funzione lineare è simmetrica se f(v)·w = v·f(w); in una base ortonormale ha matrice simmetrica. Teorema spettrale: f è simmetrica se e solo se esiste una base ortonormale di autovettori, cioè A simmetrica ⇔ PᵀAP diagonale con P ortogonale. È l'ortodiagonalizzazione delle matrici simmetriche reali: serve per le direzioni principali (tensioni, momenti d'inerzia) e permette di scrivere le forme quadratiche come somma di quadrati con gli autovalori come coefficienti.Teorema spettrale e forme quadratiche →, Matrice inversaL'inversa di una matrice quadrata A è la matrice A⁻¹ con A A⁻¹ = A⁻¹ A = I; esiste se e solo se rango(A) = n e si calcola con Gauss-Jordan riducendo (A | I) fino a (I | A⁻¹).Matrice inversa →; la fattorizzazione che risolve il sistema è in 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 →.

1. Norme di vettore

Definizione. Una norma su Rn\mathbb R^n è una funzione ∥⋅∥\|\cdot\| con: ∥x∥≥0\|\mathbf x\|\ge0 e =0=0 solo per x=0\mathbf x=\mathbf 0; ∥αx∥=∣α∣∥x∥\|\alpha\mathbf x\|=|\alpha|\|\mathbf x\|; ∥x+y∥≤∥x∥+∥y∥\|\mathbf x+\mathbf y\|\le\|\mathbf x\|+\|\mathbf y\| (disuguaglianza triangolare).

Le tre norme usate sono ∥x∥1=∑i=1n∣xi∣,∥x∥2=∑i=1nxi2,∥x∥∞=max⁡i∣xi∣.\|\mathbf x\|_1=\sum_{i=1}^n|x_i|,\qquad\|\mathbf x\|_2=\sqrt{\sum_{i=1}^nx_i^2},\qquad\|\mathbf x\|_\infty=\max_i|x_i| . Per x=(3,−4,12)T\mathbf x=(3,-4,12)^T: ∥x∥1=19\|\mathbf x\|_1=19, ∥x∥2=9+16+144=13\|\mathbf x\|_2=\sqrt{9+16+144}=13, ∥x∥∞=12\|\mathbf x\|_\infty=12. In Rn\mathbb R^n tutte le norme sono equivalenti: ad esempio ∥x∥∞≤∥x∥2≤n ∥x∥∞\|\mathbf x\|_\infty\le\|\mathbf x\|_2\le\sqrt n\,\|\mathbf x\|_\infty e ∥x∥2≤∥x∥1≤n ∥x∥2\|\mathbf x\|_2\le\|\mathbf x\|_1\le\sqrt n\,\|\mathbf x\|_2. Per questo una successione che tende a zero in una norma tende a zero in tutte; le costanti però contano nelle stime.

2. Norme di matrice

Una matrice AA è un'applicazione lineare: la sua «grandezza» è il massimo fattore di cui allunga un vettore.

Definizione (norma indotta). ∥A∥=max⁡x≠0∥Ax∥∥x∥=max⁡∥x∥=1∥Ax∥\|A\|=\displaystyle\max_{\mathbf x\ne\mathbf 0}\frac{\|A\mathbf x\|}{\|\mathbf x\|}=\max_{\|\mathbf x\|=1}\|A\mathbf x\|.

Dalla definizione seguono subito ∥Ax∥≤∥A∥ ∥x∥\|A\mathbf x\|\le\|A\|\,\|\mathbf x\| per ogni x\mathbf x e la proprietà submoltiplicativa ∥AB∥≤∥A∥ ∥B∥\|AB\|\le\|A\|\,\|B\| (perché ∥ABx∥≤∥A∥∥Bx∥≤∥A∥∥B∥∥x∥\|AB\mathbf x\|\le\|A\|\|B\mathbf x\|\le\|A\|\|B\|\|\mathbf x\|).

Teorema (formule esplicite). ∥A∥1=max⁡j∑i=1n∣aij∣  (massima somma per colonne),∥A∥∞=max⁡i∑j=1n∣aij∣  (massima somma per righe),\|A\|_1=\max_j\sum_{i=1}^n|a_{ij}|\ \ (\text{massima somma per colonne}),\qquad\|A\|_\infty=\max_i\sum_{j=1}^n|a_{ij}|\ \ (\text{massima somma per righe}), ∥A∥2=λmax⁡(ATA)=σmax⁡(A).\|A\|_2=\sqrt{\lambda_{\max}(A^TA)}=\sigma_{\max}(A).

Dimostrazione per ∥⋅∥∞\|\cdot\|_\infty. Per ogni x\mathbf x, ∣(Ax)i∣=∣∑jaijxj∣≤∑j∣aij∣ ∥x∥∞|(A\mathbf x)_i|=\big|\sum_ja_{ij}x_j\big|\le\sum_j|a_{ij}|\,\|\mathbf x\|_\infty, quindi ∥Ax∥∞≤(max⁡i∑j∣aij∣)∥x∥∞\|A\mathbf x\|_\infty\le\big(\max_i\sum_j|a_{ij}|\big)\|\mathbf x\|_\infty. Viceversa, se la riga i∗i^* ha somma massima, il vettore xj=sgn⁡(ai∗j)x_j=\operatorname{sgn}(a_{i^*j}) ha ∥x∥∞=1\|\mathbf x\|_\infty=1 e (Ax)i∗=∑j∣ai∗j∣(A\mathbf x)_{i^*}=\sum_j|a_{i^*j}|: il massimo è raggiunto. ■\blacksquare (Per ∥⋅∥1\|\cdot\|_1 è lo stesso scambiando righe e colonne.)

Perché ∥A∥2\|A\|_2 ha gli autovalori di ATAA^TA. ∥Ax∥22=xTATAx\|A\mathbf x\|_2^2=\mathbf x^TA^TA\mathbf x, forma quadratica con matrice simmetrica semidefinita positiva ATAA^TA: il suo massimo su ∥x∥2=1\|\mathbf x\|_2=1 è l'autovalore massimo (Teorema spettrale e forme quadraticheUna funzione lineare è simmetrica se f(v)·w = v·f(w); in una base ortonormale ha matrice simmetrica. Teorema spettrale: f è simmetrica se e solo se esiste una base ortonormale di autovettori, cioè A simmetrica ⇔ PᵀAP diagonale con P ortogonale. È l'ortodiagonalizzazione delle matrici simmetriche reali: serve per le direzioni principali (tensioni, momenti d'inerzia) e permette di scrivere le forme quadratiche come somma di quadrati con gli autovalori come coefficienti.Teorema spettrale e forme quadratiche →). La radice degli autovalori di ATAA^TA sono i valori singolari σi\sigma_i. Se AA è simmetrica, ATA=A2A^TA=A^2 ha autovalori λi2\lambda_i^2 e ∥A∥2=max⁡∣λi∣=ρ(A)\|A\|_2=\max|\lambda_i|=\rho(A).

Raggio spettrale. ρ(A)=max⁡∣λi(A)∣\rho(A)=\max|\lambda_i(A)| (autovalori anche complessi). Per ogni norma indotta ρ(A)≤∥A∥\rho(A)\le\|A\|.

Perché. Se Av=λvA\mathbf v=\lambda\mathbf v, v≠0\mathbf v\ne\mathbf 0: ∣λ∣ ∥v∥=∥Av∥≤∥A∥ ∥v∥|\lambda|\,\|\mathbf v\|=\|A\mathbf v\|\le\|A\|\,\|\mathbf v\|, quindi ∣λ∣≤∥A∥|\lambda|\le\|A\| per ogni autovalore. ■\blacksquare Il raggio spettrale non è una norma (la matrice (0100)\begin{pmatrix}0&1\\0&0\end{pmatrix} ha ρ=0\rho=0) ma è l'estremo inferiore delle norme indotte: serve per i metodi iterativi (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 norma di Frobenius ∥A∥F=∑ijaij2\|A\|_F=\sqrt{\sum_{ij}a_{ij}^2} non è indotta ma è facile da calcolare e vale ∥A∥2≤∥A∥F≤n ∥A∥2\|A\|_2\le\|A\|_F\le\sqrt n\,\|A\|_2. Vale anche ∥A∥2≤∥A∥1∥A∥∞\|A\|_2\le\sqrt{\|A\|_1\|A\|_\infty}.

Esempio (3×33\times3). A=(1−2304−1−215)A=\begin{pmatrix}1&-2&3\\0&4&-1\\-2&1&5\end{pmatrix}. Somme per colonne: ∣1∣+∣0∣+∣−2∣=3|1|+|0|+|-2|=3; ∣−2∣+4+1=7|-2|+4+1=7; 3+1+5=93+1+5=9: ∥A∥1=9\|A\|_1=9. Somme per righe: 1+2+3=61+2+3=6; 0+4+1=50+4+1=5; 2+1+5=82+1+5=8: ∥A∥∞=8\|A\|_\infty=8. Frobenius: 1+4+9+0+16+1+4+1+25=61=7,81\sqrt{1+4+9+0+16+1+4+1+25}=\sqrt{61}=7{,}81. Stime per la norma 2: ∥A∥2≤9⋅8=8,49\|A\|_2\le\sqrt{9\cdot8}=8{,}49 e ∥A∥2≥ρ(A)=4,38\|A\|_2\ge\rho(A)=4{,}38; il valore esatto (Python) è 6,136{,}13.

Esempio (2×22\times2, norma 2 a mano). A=(1201)A=\begin{pmatrix}1&2\\0&1\end{pmatrix}: ATA=(1225)A^TA=\begin{pmatrix}1&2\\2&5\end{pmatrix}, polinomio caratteristico λ2−6λ+1=0\lambda^2-6\lambda+1=0, λ=3±22\lambda=3\pm2\sqrt2. Allora ∥A∥2=3+22=1+2=2,4142\|A\|_2=\sqrt{3+2\sqrt2}=1+\sqrt2=2{,}4142 (perché (1+2)2=3+22(1+\sqrt2)^2=3+2\sqrt2). Gli autovalori di AA valgono entrambi 11: ρ(A)=1<∥A∥2\rho(A)=1<\|A\|_2, a conferma che ρ\rho può essere molto minore della norma.

3. Numero di condizionamento

Definizione. Per AA invertibile κ(A)=∥A∥ ∥A−1∥\kappa(A)=\|A\|\,\|A^{-1}\| (con la stessa norma indotta).

Proprietà.

Esempio. A=(1201)A=\begin{pmatrix}1&2\\0&1\end{pmatrix} ha A−1=(1−201)A^{-1}=\begin{pmatrix}1&-2\\0&1\end{pmatrix}, quindi κ1=κ∞=3⋅3=9\kappa_1=\kappa_\infty=3\cdot3=9 e κ2=(1+2)2=5,83\kappa_2=(1+\sqrt2)^2=5{,}83.

Esempio (quasi singolare). A=(1111,0001)A=\begin{pmatrix}1&1\\1&1{,}0001\end{pmatrix} ha det⁡A=10−4\det A=10^{-4}, A−1=104(1,0001−1−11)A^{-1}=10^4\begin{pmatrix}1{,}0001&-1\\-1&1\end{pmatrix}, ∥A∥∞=2,0001\|A\|_\infty=2{,}0001, ∥A−1∥∞=2,0001⋅104\|A^{-1}\|_\infty=2{,}0001\cdot10^4, quindi κ∞(A)=4,0004⋅104\kappa_\infty(A)=4{,}0004\cdot10^4. Le due righe sono quasi parallele: le due rette del sistema sono quasi sovrapposte e il loro punto di intersezione si sposta molto per piccole variazioni.

4. Sensibilità della soluzione ai dati

Teorema (perturbazione del termine noto, D). Se Ax=bA\mathbf x=\mathbf b e A(x+δx)=b+δbA(\mathbf x+\delta\mathbf x)=\mathbf b+\delta\mathbf b, con b≠0\mathbf b\ne\mathbf 0, ∥δx∥∥x∥≤κ(A) ∥δb∥∥b∥.\frac{\|\delta\mathbf x\|}{\|\mathbf x\|}\le\kappa(A)\,\frac{\|\delta\mathbf b\|}{\|\mathbf b\|}.

Dimostrazione. Sottraendo le equazioni, A δx=δbA\,\delta\mathbf x=\delta\mathbf b, cioè δx=A−1δb\delta\mathbf x=A^{-1}\delta\mathbf b e ∥δx∥≤∥A−1∥ ∥δb∥\|\delta\mathbf x\|\le\|A^{-1}\|\,\|\delta\mathbf b\|. Da b=Ax\mathbf b=A\mathbf x si ha ∥b∥≤∥A∥ ∥x∥\|\mathbf b\|\le\|A\|\,\|\mathbf x\|, cioè 1∥x∥≤∥A∥∥b∥\frac1{\|\mathbf x\|}\le\frac{\|A\|}{\|\mathbf b\|}. Moltiplicando le due disuguaglianze si ottiene la tesi. ■\blacksquare

Il fattore κ(A)\kappa(A) è l'amplificatore massimo dell'errore relativo sui dati; esistono b\mathbf b e δb\delta\mathbf b per cui la disuguaglianza è un'uguaglianza.

Perturbando anche la matrice: se (A+δA)(x+δx)=b+δb(A+\delta A)(\mathbf x+\delta\mathbf x)=\mathbf b+\delta\mathbf b con κ(A)∥δA∥∥A∥<1\kappa(A)\frac{\|\delta A\|}{\|A\|}<1, ∥δx∥∥x∥≤κ(A)1−κ(A)∥δA∥∥A∥(∥δA∥∥A∥+∥δb∥∥b∥).\frac{\|\delta\mathbf x\|}{\|\mathbf x\|}\le\frac{\kappa(A)}{1-\kappa(A)\frac{\|\delta A\|}{\|A\|}}\left(\frac{\|\delta A\|}{\|A\|}+\frac{\|\delta\mathbf b\|}{\|\mathbf b\|}\right). Se κ ∥δA∥∥A∥≪1\kappa\,\frac{\|\delta A\|}{\|A\|}\ll1 il denominatore è ≈1\approx1 e la regola è la stessa: errore relativo sui dati ×κ\times\kappa.

Esempio. Con A=(1111,0001)A=\begin{pmatrix}1&1\\1&1{,}0001\end{pmatrix} e b=(2; 2,0001)T\mathbf b=(2;\,2{,}0001)^T la soluzione è x=(1,1)T\mathbf x=(1,1)^T. Se b2b_2 passa a 2,00022{,}0002 (∥δb∥∞=10−4\|\delta\mathbf b\|_\infty=10^{-4}, errore relativo 10−42,0001=5⋅10−5\frac{10^{-4}}{2{,}0001}=5\cdot10^{-5}) la soluzione diventa (0, 2)T(0,\,2)^T: δx=(−1,1)\delta\mathbf x=(-1,1), errore relativo 11=1\frac{1}{1}=1, cioè 100%. L'amplificazione effettiva è 15⋅10−5=2⋅104≤κ∞=4⋅104\frac1{5\cdot10^{-5}}=2\cdot10^4\le\kappa_\infty=4\cdot10^4 ✓.

Cifre perdute. Se i dati hanno dd cifre decimali corrette e κ≈10s\kappa\approx10^s, la soluzione ha circa d−sd-s cifre corrette. In doppia precisione (d≈16d\approx16) con κ=1012\kappa=10^{12} restano circa 44 cifre. Esempio classico: le matrici di Hilbert Hij=1i+j−1H_{ij}=\frac1{i+j-1} hanno κ2=5,2⋅102\kappa_2=5{,}2\cdot10^2 per n=3n=3, 4,8⋅1054{,}8\cdot10^5 per n=5n=5, 1,5⋅10101{,}5\cdot10^{10} per n=8n=8, 1,6⋅10131{,}6\cdot10^{13} per n=10n=10.

5. Residuo ed errore

Per un algoritmo si conosce la soluzione calcolata x^\hat{\mathbf x} ma non la soluzione vera x\mathbf x. Quello che si può calcolare è il residuo r=b−Ax^\mathbf r=\mathbf b-A\hat{\mathbf x}. Dato che A(x−x^)=rA(\mathbf x-\hat{\mathbf x})=\mathbf r, l'errore è e=x−x^=A−1r\mathbf e=\mathbf x-\hat{\mathbf x}=A^{-1}\mathbf r e (stessi argomenti del teorema, in entrambi i versi):

 1κ(A)∥r∥∥b∥ ≤ ∥x−x^∥∥x∥ ≤ κ(A)∥r∥∥b∥ \boxed{\ \frac1{\kappa(A)}\frac{\|\mathbf r\|}{\|\mathbf b\|}\ \le\ \frac{\|\mathbf x-\hat{\mathbf x}\|}{\|\mathbf x\|}\ \le\ \kappa(A)\frac{\|\mathbf r\|}{\|\mathbf b\|}\ }

Se κ\kappa è vicino a 11, residuo piccolo ⇔\Leftrightarrow errore piccolo. Se κ\kappa è grande, un residuo piccolo non dice niente sull'errore: è il motivo per cui il criterio d'arresto «∥r∥<tol\|\mathbf r\|<\text{tol}» dei metodi iterativi è affidabile solo per matrici ben condizionate.

Esempio. Con la stessa AA quasi singolare e x^=(2,0)T\hat{\mathbf x}=(2,0)^T: r=b−Ax^=(2−2, 2,0001−2)=(0, 10−4)\mathbf r=\mathbf b-A\hat{\mathbf x}=(2-2,\ 2{,}0001-2)=(0,\,10^{-4}), residuo relativo 10−42,0001=5⋅10−5\frac{10^{-4}}{2{,}0001}=5\cdot10^{-5} — minuscolo, eppure x−x^=(−1,1)\mathbf x-\hat{\mathbf x}=(-1,1) ha errore relativo 11. Il limite superiore κ⋅5⋅10−5=2\kappa\cdot5\cdot10^{-5}=2 lo rispetta.

Collegamento con gli algoritmi. La fattorizzazione LU con pivoting è stabile all'indietro: produce x^\hat{\mathbf x} con residuo piccolo, ∥r∥∥b∥≈u\frac{\|\mathbf r\|}{\|\mathbf b\|}\approx u (uu precisione di macchina). L'errore finale è allora ≲κ(A) u\lesssim\kappa(A)\,u: la precisione dipende dal condizionamento del problema, non dall'algoritmo.

6. Implementazione

python
import numpy as np
from numpy.linalg import norm, cond, inv, solve

A = np.array([[1, -2, 3], [0, 4, -1], [-2, 1, 5]], dtype=float)
print("norme 1, inf, F, 2:", norm(A, 1), norm(A, np.inf), round(norm(A, "fro"), 4), round(norm(A, 2), 4))
print("raggio spettrale   :", round(max(abs(np.linalg.eigvals(A))), 4))

B = np.array([[1, 1], [1, 1.0001]])
b = np.array([2, 2.0001])
print("cond_inf(B) =", round(cond(B, np.inf), 1))
x = solve(B, b)
x2 = solve(B, b + [0, 1e-4])                   # perturbo b2 di 1e-4
print("x =", x.round(6), "  x perturbata =", x2.round(6) + 0)
print("amplificazione:", norm(x2 - x, np.inf) / norm(x, np.inf) / (1e-4 / norm(b, np.inf)))

for n in (3, 5, 8, 10):                         # matrici di Hilbert
    H = np.array([[1 / (i + j + 1) for j in range(n)] for i in range(n)])
    print("Hilbert", n, f"cond_2 = {cond(H):.2e}")

Output:

norme 1, inf, F, 2: 9.0 8.0 7.8102 6.1295
raggio spettrale   : 4.3836
cond_inf(B) = 40004.0
x = [1. 1.]   x perturbata = [0. 2.]
amplificazione: 20001.0
Hilbert 3 cond_2 = 5.24e+02
Hilbert 5 cond_2 = 4.77e+05
Hilbert 8 cond_2 = 1.53e+10
Hilbert 10 cond_2 = 1.60e+13

Equivalenti MATLAB: norm(A,1), norm(A,inf), norm(A) (norma 2), norm(A,'fro'), cond(A) o cond(A,1), rcond(A) (stima di 1/κ11/\kappa_1, più economica), hilb(n).

Errori da evitare

  • Confondere ρ(A)\rho(A) con ∥A∥\|A\|: ρ(A)≤∥A∥\rho(A)\le\|A\|, anche con forte differenza (esempio (1201)\begin{pmatrix}1&2\\0&1\end{pmatrix}: ρ=1\rho=1, ∥⋅∥2=2,41\|\cdot\|_2=2{,}41).
  • Scambiare «somma per colonne» e «per righe» nelle norme 11 e ∞\infty.
  • Giudicare il condizionamento dal determinante: κ(αA)=κ(A)\kappa(\alpha A)=\kappa(A), mentre det⁡(αA)=αndet⁡A\det(\alpha A)=\alpha^n\det A.
  • Fidarsi del residuo piccolo con κ\kappa grande.
  • Usare norme diverse nello stesso rapporto (errore in norma 2, dati in norma ∞\infty): le stime valgono con la stessa norma; passare da una all'altra costa un fattore ≤n\le\sqrt n.
  • Dimenticare che κ\kappa è un limite superiore: il peggioramento effettivo può essere minore, ma esistono dati per cui è raggiunto.

Esercizi svolti: Esercizio - norme e raggio spettrale di matrici 2x2 e 3x3, Esercizio - numero di condizionamento di un sistema 2x2 quasi singolare, Esercizio - residuo ed errore in un sistema ben e mal condizionato, Esercizio - condizionamento della matrice di rigidezza di una catena di molle.

Domande d'esame

  1. Dare le formule di ∥A∥1\|A\|_1 e ∥A∥∞\|A\|_\infty e dimostrare quella di ∥A∥∞\|A\|_\infty. Traccia. Disuguaglianza ∣(Ax)i∣≤∑j∣aij∣∥x∥∞|(A\mathbf x)_i|\le\sum_j|a_{ij}|\|\mathbf x\|_\infty; massimo raggiunto con xj=sgn⁡(ai∗j)x_j=\operatorname{sgn}(a_{i^*j}).
  2. Dimostrare ρ(A)≤∥A∥\rho(A)\le\|A\| e mostrare che l'uguaglianza può non valere. Traccia. ∣λ∣∥v∥=∥Av∥≤∥A∥∥v∥|\lambda|\|\mathbf v\|=\|A\mathbf v\|\le\|A\|\|\mathbf v\|; (1201)\begin{pmatrix}1&2\\0&1\end{pmatrix}.
  3. Dimostrare che ∥δx∥∥x∥≤κ(A)∥δb∥∥b∥\frac{\|\delta\mathbf x\|}{\|\mathbf x\|}\le\kappa(A)\frac{\|\delta\mathbf b\|}{\|\mathbf b\|}. Che significa κ=108\kappa=10^8 in doppia precisione? Traccia. δx=A−1δb\delta\mathbf x=A^{-1}\delta\mathbf b e ∥b∥≤∥A∥∥x∥\|\mathbf b\|\le\|A\|\|\mathbf x\|; restano circa 16−8=816-8=8 cifre.
  4. Perché un residuo piccolo non garantisce un errore piccolo? Quando lo garantisce? Traccia. e=A−1r\mathbf e=A^{-1}\mathbf r, ∥e∥∥x∥≤κ∥r∥∥b∥\frac{\|\mathbf e\|}{\|\mathbf x\|}\le\kappa\frac{\|\mathbf r\|}{\|\mathbf b\|}; se κ≈1\kappa\approx1 (ad esempio AA ortogonale, SPD con autovalori vicini).

Versione ripasso

(Condizionamento di un problema e stabilità di un algoritmoL'errore finale ha tre origini (dati, troncamento, arrotondamento). Un problema è ben posto se la soluzione esiste, è unica e dipende con continuità dai dati; il numero di condizionamento K = |x f'(x)/f(x)| misura di quanto un errore relativo sui dati si amplifica nel risultato (si perdono circa log10 K cifre). La stabilità riguarda invece l'algoritmo: un algoritmo instabile amplifica gli errori anche su un problema ben condizionato (ricorrenza I_n = 1 − n I_{n−1}); un problema mal condizionato non si salva con nessun algoritmo. Uno schema numerico converge se è consistente e stabile (derivata numerica: troncamento contro arrotondamento).Condizionamento di un problema e stabilità di un algoritmo →, 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 →)

Vettori. ∥x∥1=∑∣xi∣\|\mathbf x\|_1=\sum|x_i|, ∥x∥2=∑xi2\|\mathbf x\|_2=\sqrt{\sum x_i^2}, ∥x∥∞=max⁡∣xi∣\|\mathbf x\|_\infty=\max|x_i|; (3,−4,12)(3,-4,12): 19, 13, 1219,\,13,\,12. Norme equivalenti: ∥x∥∞≤∥x∥2≤n∥x∥∞\|\mathbf x\|_\infty\le\|\mathbf x\|_2\le\sqrt n\|\mathbf x\|_\infty.

Matrici. ∥A∥=max⁡∥Ax∥∥x∥\|A\|=\max\frac{\|A\mathbf x\|}{\|\mathbf x\|}; ∥Ax∥≤∥A∥∥x∥\|A\mathbf x\|\le\|A\|\|\mathbf x\|, ∥AB∥≤∥A∥∥B∥\|AB\|\le\|A\|\|B\|. ∥A∥1\|A\|_1 = max somma per colonne, ∥A∥∞\|A\|_\infty = max somma per righe, ∥A∥2=λmax⁡(ATA)=σmax⁡\|A\|_2=\sqrt{\lambda_{\max}(A^TA)}=\sigma_{\max} (=ρ(A)=\rho(A) se simmetrica). Prova per ∞\infty: ∣(Ax)i∣≤∑j∣aij∣∥x∥∞|(A\mathbf x)_i|\le\sum_j|a_{ij}|\|\mathbf x\|_\infty, massimo con xj=sgn⁡(ai∗j)x_j=\operatorname{sgn}(a_{i^*j}). ∥A∥F=∑aij2\|A\|_F=\sqrt{\sum a_{ij}^2}; ∥A∥2≤∥A∥1∥A∥∞\|A\|_2\le\sqrt{\|A\|_1\|A\|_\infty}.

Raggio spettrale. ρ(A)=max⁡∣λi∣≤∥A∥\rho(A)=\max|\lambda_i|\le\|A\| (D: ∣λ∣∥v∥=∥Av∥≤∥A∥∥v∥|\lambda|\|\mathbf v\|=\|A\mathbf v\|\le\|A\|\|\mathbf v\|). (1201)\begin{pmatrix}1&2\\0&1\end{pmatrix}: ρ=1\rho=1, ATAA^TA ha λ=3±22\lambda=3\pm2\sqrt2, ∥A∥2=1+2=2,414\|A\|_2=1+\sqrt2=2{,}414.

Esempio 3×33\times3 (1−2304−1−215)\begin{pmatrix}1&-2&3\\0&4&-1\\-2&1&5\end{pmatrix}: ∥⋅∥1=9\|\cdot\|_1=9, ∥⋅∥∞=8\|\cdot\|_\infty=8, ∥⋅∥F=61\|\cdot\|_F=\sqrt{61}, ρ=4,38≤∥⋅∥2=6,13≤72\rho=4{,}38\le\|\cdot\|_2=6{,}13\le\sqrt{72}.

Condizionamento. κ(A)=∥A∥∥A−1∥≥1\kappa(A)=\|A\|\|A^{-1}\|\ge1, κ(αA)=κ(A)\kappa(\alpha A)=\kappa(A) (non è il determinante), κ2=σmax⁡σmin⁡\kappa_2=\frac{\sigma_{\max}}{\sigma_{\min}}, SPD λmax⁡λmin⁡\frac{\lambda_{\max}}{\lambda_{\min}}, ortogonale 11. (1201)\begin{pmatrix}1&2\\0&1\end{pmatrix}: κ1=κ∞=9\kappa_1=\kappa_\infty=9, κ2=5,83\kappa_2=5{,}83.

Perturbazione (D). Ax=bA\mathbf x=\mathbf b, A(x+δx)=b+δbA(\mathbf x+\delta\mathbf x)=\mathbf b+\delta\mathbf b: δx=A−1δb\delta\mathbf x=A^{-1}\delta\mathbf b, ∥b∥≤∥A∥∥x∥⇒∥δx∥∥x∥≤κ∥δb∥∥b∥\|\mathbf b\|\le\|A\|\|\mathbf x\|\Rightarrow\frac{\|\delta\mathbf x\|}{\|\mathbf x\|}\le\kappa\frac{\|\delta\mathbf b\|}{\|\mathbf b\|}. Con δA\delta A: fattore κ1−κ∥δA∥/∥A∥\frac\kappa{1-\kappa\|\delta A\|/\|A\|}. Cifre perse ≈log⁡10κ\approx\log_{10}\kappa. Hilbert: κ2=5,2⋅102\kappa_2=5{,}2\cdot10^2 (n=3n=3), 4,8⋅1054{,}8\cdot10^5 (5), 1,5⋅10101{,}5\cdot10^{10} (8), 1,6⋅10131{,}6\cdot10^{13} (10).

Residuo. r=b−Ax^\mathbf r=\mathbf b-A\hat{\mathbf x}, e=A−1r\mathbf e=A^{-1}\mathbf r: 1κ∥r∥∥b∥≤∥e∥∥x∥≤κ∥r∥∥b∥\frac1\kappa\frac{\|\mathbf r\|}{\|\mathbf b\|}\le\frac{\|\mathbf e\|}{\|\mathbf x\|}\le\kappa\frac{\|\mathbf r\|}{\|\mathbf b\|}. Con κ\kappa grande residuo piccolo non implica errore piccolo. LU con pivoting: residuo ≈u\approx u, errore ≲κu\lesssim\kappa u.

Esempio quasi singolare. B=(1111,0001)B=\begin{pmatrix}1&1\\1&1{,}0001\end{pmatrix}, κ∞=4,0004⋅104\kappa_\infty=4{,}0004\cdot10^4. b=(2;2,0001)→x=(1,1)\mathbf b=(2;2{,}0001)\to\mathbf x=(1,1); b2→2,0002b_2\to2{,}0002 (5⋅10−55\cdot10^{-5} relativo) dà x=(0,2)\mathbf x=(0,2) (100%); amplificazione 2⋅104≤κ2\cdot10^4\le\kappa. x^=(2,0)\hat{\mathbf x}=(2,0): r=(0,10−4)\mathbf r=(0,10^{-4}), residuo relativo 5⋅10−55\cdot10^{-5} ma errore relativo 11.

Passaggi principali.

  • Norma 2 a mano: ATA=(1225)A^TA=\begin{pmatrix}1&2\\2&5\end{pmatrix}, λ2−6λ+1=0\lambda^2-6\lambda+1=0, λ=3±22=(1±2)2\lambda=3\pm2\sqrt2=(1\pm\sqrt2)^2.
  • κ≥1\kappa\ge1: 1=∥I∥=∥AA−1∥≤∥A∥∥A−1∥1=\|I\|=\|AA^{-1}\|\le\|A\|\|A^{-1}\|.
  • κ2\kappa_2 SPD: gli autovalori di A−1A^{-1} sono 1λi\frac1{\lambda_i}.
  • Residuo: A(x−x^)=rA(\mathbf x-\hat{\mathbf x})=\mathbf r; i due versi usano ∥A−1∥\|A^{-1}\| e ∥A∥\|A\|.
  • Inversa del sistema quasi singolare: det⁡B=10−4\det B=10^{-4}, B−1=104(1,0001−1−11)B^{-1}=10^4\begin{pmatrix}1{,}0001&-1\\-1&1\end{pmatrix}, ∥B∥∞=2,0001\|B\|_\infty=2{,}0001, ∥B−1∥∞=2,0001⋅104\|B^{-1}\|_\infty=2{,}0001\cdot10^4.
  • Distanza dalla singolarità: 1κ=min⁡∥δA∥∥A∥\frac1\kappa=\min\frac{\|\delta A\|}{\|A\|} tra le perturbazioni che rendono A+δAA+\delta A singolare; κ\kappa non dipende dalla scala (diag⁡(10−10,10−10)\operatorname{diag}(10^{-10},10^{-10}) ha κ=1\kappa=1).
  • Cifre: dati con dd cifre e κ≈10s\kappa\approx10^s danno circa d−sd-s cifre; κ=1012\kappa=10^{12} in doppia lascia 44 cifre.

Errori tipici.

  • ρ\rho scambiato con la norma.
  • Somme per colonne e per righe scambiate.
  • Condizionamento giudicato dal determinante.
  • Fiducia nel residuo con κ\kappa grande.

Esercizi su questo argomento

Teoria collegata