Salta al contenuto
Note per Studenti Esercizio - condizionamento della matrice di rigidezza di una catena di molle

Esercizio - condizionamento della matrice di rigidezza di una catena di molle

Teoria: Norme di matrici e condizionamento dei sistemi lineariNorme di vettore $|x|1=\sum|x_i|$, $|x|2=\sqrt{\sum x_i^2}$, $|x|\infty=\max|x_i|$. Norma di matrice indotta $|A|=\max{x\ne0}\frac{|Ax|}{|x|}$: $|A|1$ = massima somma per colonne, $|A|\infty$ = massima somma per righe, $|A|2=\sqrt{\lambda{\max}(A^TA)}$ (= $\rho(A)$ se $A$ simmetrica); valgono $|Ax|\le|A||x|$, $|AB|\le|A||B|$, $\rho(A)\le|A|$. Numero di condizionamento $\kappa(A)=|A||A^{-1}|\ge1$ ($\kappa_2=\frac{\sigma_{\max}}{\sigma_{\min}}$, per SPD $\frac{\lambda_{\max}}{\lambda_{\min}}$, per ortogonali 1). Se $A\mathbf x=\mathbf b$ e $A(\mathbf x+\delta\mathbf x)=\mathbf b+\delta\mathbf b$: $\frac{|\delta\mathbf x|}{|\mathbf x|}\le\kappa(A)\frac{|\delta\mathbf b|}{|\mathbf b|}$ (D); con residuo $\mathbf r=\mathbf b-A\hat{\mathbf x}$: $\frac1\kappa\frac{|\mathbf r|}{|\mathbf b|}\le\frac{|\mathbf x-\hat{\mathbf x}|}{|\mathbf x|}\le\kappa\frac{|\mathbf r|}{|\mathbf b|}$. Si perdono circa $\log_{10}\kappa$ cifre; un residuo piccolo non garantisce un errore piccolo se $\kappa$ è grande.Norme di matrici e condizionamento dei sistemi lineari →. La matrice è la stessa di Esercizio - Cholesky della matrice di rigidezza di una catena di tre masse.

Testo. Una catena di nn masse collegate da molle uguali di rigidezza kk e fissata alle due pareti ha matrice di rigidezza K=k KnK=k\,K_n con Kn=tridiag⁡(−1,2,−1)K_n=\operatorname{tridiag}(-1,2,-1). Gli autovalori di KnK_n sono λj=2−2cos⁡jπn+1\lambda_j=2-2\cos\frac{j\pi}{n+1}, j=1,…,nj=1,\dots,n.

  1. Per n=3n=3 calcolare gli autovalori, κ2\kappa_2 e κ∞\kappa_\infty (con l'inversa K3−1=14(321242123)K_3^{-1}=\frac14\begin{pmatrix}3&2&1\\2&4&2\\1&2&3\end{pmatrix}). Il valore dipende da kk?
  2. Ricavare la formula approssimata di κ2(Kn)\kappa_2(K_n) per nn grande e calcolarla per n=10,100,1000n=10,100,1000.
  3. I carichi sono noti con errore relativo 10−610^{-6}. Dare il limite superiore dell'errore relativo sugli spostamenti per n=100n=100 e il numero di cifre perse.
  4. (Teoria) Perché dimezzare il passo di una discretizzazione (raddoppiare nn) peggiora il condizionamento? E perché κ(kKn)=κ(Kn)\kappa(kK_n)=\kappa(K_n)?

Soluzione

1. Caso n=3n=3. λj=2−2cos⁡jπ4\lambda_j=2-2\cos\frac{j\pi}4: λ1=2−2=0,5858\lambda_1=2-\sqrt2=0{,}5858, λ2=2−2⋅0=2\lambda_2=2-2\cdot0=2, λ3=2+2=3,4142\lambda_3=2+\sqrt2=3{,}4142. La matrice è SPD, quindi κ2(K3)=λmax⁡λmin⁡=2+22−2=(2+2)24−2=6+422=3+22=5,828.\kappa_2(K_3)=\frac{\lambda_{\max}}{\lambda_{\min}}=\frac{2+\sqrt2}{2-\sqrt2}=\frac{(2+\sqrt2)^2}{4-2}=\frac{6+4\sqrt2}2=3+2\sqrt2=5{,}828 . Con la norma ∞\infty: ∥K3∥∞=4\|K_3\|_\infty=4 (riga centrale 1+2+11+2+1) e ∥K3−1∥∞\|K_3^{-1}\|_\infty è la massima somma per righe di K3−1K_3^{-1}: 3+2+14=1,5\frac{3+2+1}4=1{,}5; 2+4+24=2\frac{2+4+2}4=2; 1+2+34=1,5\frac{1+2+3}4=1{,}5, quindi 22. κ∞=4⋅2=8\kappa_\infty=4\cdot2=8. I due valori sono compatibili (κ2≤n κ∞\kappa_2\le n\,\kappa_\infty). Dipendenza da kk: nessuna. κ(kK3)=∥kK3∥ ∥(kK3)−1∥=k∥K3∥⋅1k∥K3−1∥=κ(K3)\kappa(kK_3)=\|kK_3\|\,\|(kK_3)^{-1}\|=k\|K_3\|\cdot\frac1k\|K_3^{-1}\|=\kappa(K_3): il condizionamento non dipende dalle unità di misura della rigidezza.

2. Formula per nn grande. λmin⁡=2−2cos⁡πn+1≈(πn+1)2\lambda_{\min}=2-2\cos\frac\pi{n+1}\approx\Big(\frac\pi{n+1}\Big)^2 (sviluppo 1−cos⁡t≈t221-\cos t\approx\frac{t^2}2) e λmax⁡=2+2cos⁡πn+1≈4\lambda_{\max}=2+2\cos\frac\pi{n+1}\approx4. Quindi κ2(Kn)≈4(n+1)2π2.\kappa_2(K_n)\approx\frac{4(n+1)^2}{\pi^2} .

nn κ2\kappa_2 esatto formula 4(n+1)2π2\frac{4(n+1)^2}{\pi^2}
3 5,83 6,48
10 48,4 49,0
100 4134 4134
1000 4,06⋅1054{,}06\cdot10^5 4,06⋅1054{,}06\cdot10^5

3. Stima dell'errore per n=100n=100. Il limite superiore è κ2⋅10−6=4134⋅10−6=4,1⋅10−3\kappa_2\cdot10^{-6}=4134\cdot10^{-6}=4{,}1\cdot10^{-3}, cioè 0,4%0{,}4\%: si perdono log⁡104134=3,6\log_{10}4134=3{,}6 cifre, quindi dei 66 digit dei dati ne restano circa 2,42{,}4. Con la doppia precisione (u≈10−16u\approx10^{-16}) l'errore di arrotondamento amplificato è ≈4⋅10−13\approx4\cdot10^{-13}, trascurabile: l'errore di rappresentazione dei dati conta più di quello dell'algoritmo. Per n=1000n=1000 il limite diventa 0,40{,}4 (40%): con carichi noti a 10−610^{-6} gli spostamenti non sarebbero attendibili.

4. Teoria. Peggiora perché con più nodi la struttura discreta ha modi sempre più «lunghi» e sempre più «corti»: il rapporto tra l'energia dei modi più rigidi (oscillanti da nodo a nodo, λmax⁡≈4\lambda_{\max}\approx4) e quella dei modi più morbidi (spostamento lento di tutta la catena, λmin⁡≈π2(n+1)2\lambda_{\min}\approx\frac{\pi^2}{(n+1)^2}) cresce come (n+1)2(n+1)^2: raddoppiando nn, κ\kappa si moltiplica per ≈4\approx4, cioè si perdono altre log⁡104=0,6\log_{10}4=0{,}6 cifre. È una proprietà dei problemi alle differenze finite e agli elementi finiti: più la griglia è fine, più i sistemi sono mal condizionati (da qui i precondizionatori e i metodi multigriglia). Scala: la norma indotta è omogenea, ∥αA∥=∣α∣∥A∥\|\alpha A\|=|\alpha|\|A\|, e (αA)−1=α−1A−1(\alpha A)^{-1}=\alpha^{-1}A^{-1}.

Risultati: n=3n=3: κ2=3+22=5,83\kappa_2=3+2\sqrt2=5{,}83, κ∞=8\kappa_\infty=8; κ2(Kn)≈4(n+1)2π2\kappa_2(K_n)\approx\frac{4(n+1)^2}{\pi^2}; per n=100n=100 errore relativo ≤0,4%\le0{,}4\% con 3,63{,}6 cifre perse.

Errori tipici. Calcolare κ2\kappa_2 come λmax⁡λmin⁡\frac{\lambda_{\max}}{\lambda_{\min}} per una matrice non SPD (serve σmax⁡σmin⁡\frac{\sigma_{\max}}{\sigma_{\min}}); pensare che κ\kappa dipenda da kk; confondere λmin⁡≈π2(n+1)2\lambda_{\min}\approx\frac{\pi^2}{(n+1)^2} con 1n+1\frac1{n+1}.

Versione ripasso

(Norme di matrici e condizionamento dei sistemi lineariNorme di vettore $|x|1=\sum|x_i|$, $|x|2=\sqrt{\sum x_i^2}$, $|x|\infty=\max|x_i|$. Norma di matrice indotta $|A|=\max{x\ne0}\frac{|Ax|}{|x|}$: $|A|1$ = massima somma per colonne, $|A|\infty$ = massima somma per righe, $|A|2=\sqrt{\lambda{\max}(A^TA)}$ (= $\rho(A)$ se $A$ simmetrica); valgono $|Ax|\le|A||x|$, $|AB|\le|A||B|$, $\rho(A)\le|A|$. Numero di condizionamento $\kappa(A)=|A||A^{-1}|\ge1$ ($\kappa_2=\frac{\sigma_{\max}}{\sigma_{\min}}$, per SPD $\frac{\lambda_{\max}}{\lambda_{\min}}$, per ortogonali 1). Se $A\mathbf x=\mathbf b$ e $A(\mathbf x+\delta\mathbf x)=\mathbf b+\delta\mathbf b$: $\frac{|\delta\mathbf x|}{|\mathbf x|}\le\kappa(A)\frac{|\delta\mathbf b|}{|\mathbf b|}$ (D); con residuo $\mathbf r=\mathbf b-A\hat{\mathbf x}$: $\frac1\kappa\frac{|\mathbf r|}{|\mathbf b|}\le\frac{|\mathbf x-\hat{\mathbf x}|}{|\mathbf x|}\le\kappa\frac{|\mathbf r|}{|\mathbf b|}$. Si perdono circa $\log_{10}\kappa$ cifre; un residuo piccolo non garantisce un errore piccolo se $\kappa$ è grande.Norme di matrici e condizionamento dei sistemi lineari →)

K=kKnK=kK_n, Kn=tridiag⁡(−1,2,−1)K_n=\operatorname{tridiag}(-1,2,-1), λj=2−2cos⁡jπn+1\lambda_j=2-2\cos\frac{j\pi}{n+1}.

  • n=3n=3: λ=2−2; 2; 2+2\lambda=2-\sqrt2;\,2;\,2+\sqrt2, κ2=2+22−2=3+22=5,83\kappa_2=\frac{2+\sqrt2}{2-\sqrt2}=3+2\sqrt2=5{,}83; ∥K3∥∞=4\|K_3\|_\infty=4, ∥K3−1∥∞=2\|K_3^{-1}\|_\infty=2, κ∞=8\kappa_\infty=8. κ(kK)=κ(K)\kappa(kK)=\kappa(K).

  • nn grande: λmin⁡≈π2(n+1)2\lambda_{\min}\approx\frac{\pi^2}{(n+1)^2}, λmax⁡≈4\lambda_{\max}\approx4, κ2≈4(n+1)2π2\kappa_2\approx\frac{4(n+1)^2}{\pi^2}: 48,448{,}4 (n=10n=10), 41344134 (n=100n=100), 4,06⋅1054{,}06\cdot10^5 (n=1000n=1000).

  • Carichi con errore 10−610^{-6}, n=100n=100: errore sugli spostamenti ≤4,1⋅10−3\le4{,}1\cdot10^{-3}, 3,63{,}6 cifre perse; n=1000n=1000: 0,40{,}4.

  • Raddoppiare nn: κ×4\kappa\times4 (0,60{,}6 cifre in più perse); griglie fini ⇒\Rightarrow mal condizionamento (precondizionatori, multigriglia).

  • K3−1=14(321242123)K_3^{-1}=\frac14\begin{pmatrix}3&2&1\\2&4&2\\1&2&3\end{pmatrix}: somme per righe 1,5; 2; 1,51{,}5;\,2;\,1{,}5; κ∞=4⋅2=8\kappa_\infty=4\cdot2=8. 1−cos⁡t≈t221-\cos t\approx\frac{t^2}2 per λmin⁡\lambda_{\min}.

Errori tipici: λmax⁡λmin⁡\frac{\lambda_{\max}}{\lambda_{\min}} per matrici non SPD; κ\kappa dipendente da kk; λmin⁡≈1n+1\lambda_{\min}\approx\frac1{n+1}.

Esercizi su questo argomento

Teoria collegata