Salta al contenuto
Note per Studenti Esercizio - pivoting parziale su una matrice 3x3 con scambio di righe

Esercizio - pivoting parziale su una matrice 3x3 con scambio di righe

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 →.

Testo.

  1. Per A=(132421223)A=\begin{pmatrix}1&3&2\\4&2&1\\2&2&3\end{pmatrix} e b=(5,7,3)T\mathbf b=(5,7,3)^T calcolare con il pivoting parziale la fattorizzazione PA=LUPA=LU, risolvere Ax=bA\mathbf x=\mathbf b e calcolare det⁡A\det A.
  2. Dire cosa succederebbe senza pivoting (moltiplicatori).
  3. Per C=(012111213)C=\begin{pmatrix}0&1&2\\1&1&1\\2&1&3\end{pmatrix} mostrare che la LU senza scambi non esiste e calcolare PC=LUPC=LU con il pivoting parziale. Calcolare det⁡C\det C.

Soluzione

1. Passo 1. La colonna 1 è (1,4,2)T(1,4,2)^T: il massimo in modulo è 44 (riga 2). Si scambiano le righe 1 e 2: (421132223),l21=14,l31=24=12.\begin{pmatrix}4&2&1\\1&3&2\\2&2&3\end{pmatrix},\qquad l_{21}=\frac14,\quad l_{31}=\frac24=\frac12 . Riga 2 −14-\frac14 riga 1: (0, 3−12, 2−14)=(0, 2,5, 1,75)(0,\ 3-\frac12,\ 2-\frac14)=(0,\ 2{,}5,\ 1{,}75). Riga 3 −12-\frac12 riga 1: (0, 2−1, 3−12)=(0, 1, 2,5)(0,\ 2-1,\ 3-\frac12)=(0,\ 1,\ 2{,}5).

Passo 2. Nella colonna 2 (dalla riga 2 in giù) si confrontano 2,52{,}5 e 11: vince 2,52{,}5 (già in posizione), nessuno scambio. l32=12,5=0,4l_{32}=\frac1{2{,}5}=0{,}4; riga 3 −0,4-0{,}4 riga 2: (0,0, 2,5−0,4⋅1,75)=(0,0, 2,5−0,7)=(0,0,1,8)(0,0,\ 2{,}5-0{,}4\cdot1{,}75)=(0,0,\ 2{,}5-0{,}7)=(0,0,1{,}8). P=(010100001),L=(1000,25100,50,41),U=(42102,51,75001,8).P=\begin{pmatrix}0&1&0\\1&0&0\\0&0&1\end{pmatrix},\quad L=\begin{pmatrix}1&0&0\\0{,}25&1&0\\0{,}5&0{,}4&1\end{pmatrix},\quad U=\begin{pmatrix}4&2&1\\0&2{,}5&1{,}75\\0&0&1{,}8\end{pmatrix}. Verifica: riga 2 di LULU = 0,25⋅(4,2,1)+(0,2,5,1,75)=(1, 0,5+2,5, 0,25+1,75)=(1,3,2)0{,}25\cdot(4,2,1)+(0,2{,}5,1{,}75)=(1,\ 0{,}5+2{,}5,\ 0{,}25+1{,}75)=(1,3,2) = riga 2 di PAPA ✓ (cioè la riga 1 di AA); riga 3 = 0,5⋅(4,2,1)+0,4⋅(0,2,5,1,75)+(0,0,1,8)=(2, 1+1, 0,5+0,7+1,8)=(2,2,3)0{,}5\cdot(4,2,1)+0{,}4\cdot(0,2{,}5,1{,}75)+(0,0,1{,}8)=(2,\ 1+1,\ 0{,}5+0{,}7+1{,}8)=(2,2,3) ✓.

Sistema. Pb=(7,5,3)TP\mathbf b=(7,5,3)^T. Avanti: y1=7y_1=7, y2=5−0,25⋅7=3,25y_2=5-0{,}25\cdot7=3{,}25, y3=3−0,5⋅7−0,4⋅3,25=3−3,5−1,3=−1,8y_3=3-0{,}5\cdot7-0{,}4\cdot3{,}25=3-3{,}5-1{,}3=-1{,}8. Indietro: x3=−1,81,8=−1x_3=\frac{-1{,}8}{1{,}8}=-1, x2=3,25−1,75⋅(−1)2,5=52,5=2x_2=\frac{3{,}25-1{,}75\cdot(-1)}{2{,}5}=\frac{5}{2{,}5}=2, x1=7−2⋅2−1⋅(−1)4=1x_1=\frac{7-2\cdot2-1\cdot(-1)}4=1. Soluzione x=(1,2,−1)T\mathbf x=(1,2,-1)^T.

Determinante. Un solo scambio: det⁡A=(−1)1⋅4⋅2,5⋅1,8=−18\det A=(-1)^1\cdot4\cdot2{,}5\cdot1{,}8=-18. Controllo con la formula di Sarrus: 1(6−2)−3(12−2)+2(8−4)=4−30+8=−181(6-2)-3(12-2)+2(8-4)=4-30+8=-18 ✓.

2. Senza pivoting il pivot sarebbe 11 e i moltiplicatori l21=4l_{21}=4, l31=2l_{31}=2: l'algoritmo funziona (nessun pivot nullo), ma il nuovo elemento a22(2)=2−4⋅3=−10a_{22}^{(2)}=2-4\cdot3=-10 è più grande in modulo di tutti i dati di partenza (il massimo è 44): in generale moltiplicatori >1>1 amplificano gli errori di arrotondamento. Col pivoting ∣lik∣≤1|l_{ik}|\le1 (0,25; 0,5; 0,40{,}25;\,0{,}5;\,0{,}4) e gli elementi di UU restano dello stesso ordine di grandezza di AA.

3. Pivot nullo. In CC è c11=0c_{11}=0: il moltiplicatore c21c11\frac{c_{21}}{c_{11}} non esiste, la LU senza scambi è impossibile (pur essendo det⁡C≠0\det C\ne0, come si vede sotto).

  • Passo 1: massimo della colonna (0,1,2)T(0,1,2)^T è 22 (riga 3): si scambiano le righe 1 e 3. Ordine delle righe originali: (3,2,1)(3,2,1). Matrice: (213111012)\begin{pmatrix}2&1&3\\1&1&1\\0&1&2\end{pmatrix}, l21=12l_{21}=\frac12, l31=0l_{31}=0. Riga 2 −12-\frac12 riga 1: (0, 12, −12)(0,\ \frac12,\ -\frac12); riga 3 invariata (0,1,2)(0,1,2).
  • Passo 2: fra 12\frac12 (riga 2) e 11 (riga 3) il massimo è 11: si scambiano le righe 2 e 3, insieme ai moltiplicatori già calcolati (l21=12↔l31=0l_{21}=\frac12\leftrightarrow l_{31}=0). Ordine originale delle righe: (3,1,2)(3,1,2). Ora l21=0l_{21}=0, l31=12l_{31}=\frac12, l32=1/21=12l_{32}=\frac{1/2}1=\frac12. Riga 3 −12-\frac12 riga 2: (0,0, −12−12⋅2)=(0,0,−32)(0,0,\ -\frac12-\frac12\cdot2)=(0,0,-\frac32). P=(001100010),L=(10001012121),U=(21301200−32).P=\begin{pmatrix}0&0&1\\1&0&0\\0&1&0\end{pmatrix},\quad L=\begin{pmatrix}1&0&0\\0&1&0\\\frac12&\frac12&1\end{pmatrix},\quad U=\begin{pmatrix}2&1&3\\0&1&2\\0&0&-\frac32\end{pmatrix}. Verifica: PCPC ha righe (riga 3, riga 1, riga 2 di CC) =(2,1,3),(0,1,2),(1,1,1)=(2,1,3),(0,1,2),(1,1,1); riga 3 di LULU = 12(2,1,3)+12(0,1,2)+(0,0,−32)=(1, 12+12, 32+1−32)=(1,1,1)\frac12(2,1,3)+\frac12(0,1,2)+(0,0,-\frac32)=(1,\ \frac12+\frac12,\ \frac32+1-\frac32)=(1,1,1) ✓. Determinante: PP corrisponde alla permutazione (3,1,2)(3,1,2), un ciclo di 3 elementi cioè due scambi (s=2s=2): det⁡C=(+1)⋅2⋅1⋅(−32)=−3\det C=(+1)\cdot2\cdot1\cdot(-\frac32)=-3. Controllo diretto: 0(3−1)−1(3−2)+2(1−2)=−1−2=−30(3-1)-1(3-2)+2(1-2)=-1-2=-3 ✓.

Risultati: x=(1,2,−1)T\mathbf x=(1,2,-1)^T e det⁡A=−18\det A=-18; per CC: det⁡C=−3\det C=-3, con due scambi.

Errori tipici. Scambiare le righe di AA ma non quelle già calcolate di LL (nel passo 2 di CC); dimenticare (−1)s(-1)^s nel determinante; applicare Ly=bL\mathbf y=\mathbf b invece di Ly=PbL\mathbf y=P\mathbf b.

Versione ripasso

(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 →)

  • A=(132421223)A=\begin{pmatrix}1&3&2\\4&2&1\\2&2&3\end{pmatrix}: scambio righe 1-2; l21=14l_{21}=\frac14, l31=12l_{31}=\frac12; righe (0,2,5,1,75)(0,2{,}5,1{,}75) e (0,1,2,5)(0,1,2{,}5); nessuno scambio al passo 2, l32=0,4l_{32}=0{,}4, u33=2,5−0,7=1,8u_{33}=2{,}5-0{,}7=1{,}8. UU diag 4; 2,5; 1,84;\,2{,}5;\,1{,}8.

  • b=(5,7,3)\mathbf b=(5,7,3): Pb=(7,5,3)P\mathbf b=(7,5,3), y=(7; 3,25; −1,8)\mathbf y=(7;\,3{,}25;\,-1{,}8), x=(1,2,−1)\mathbf x=(1,2,-1). det⁡A=−4⋅2,5⋅1,8=−18\det A=-4\cdot2{,}5\cdot1{,}8=-18.

  • Senza pivoting l21=4l_{21}=4, l31=2l_{31}=2 e a22(2)=−10a_{22}^{(2)}=-10: elementi amplificati; col pivoting ∣l∣≤1|l|\le1.

  • C=(012111213)C=\begin{pmatrix}0&1&2\\1&1&1\\2&1&3\end{pmatrix}: c11=0c_{11}=0, LU impossibile. Scambi 1-3 e poi 2-3 (insieme ai moltiplicatori): L=(10001012121)L=\begin{pmatrix}1&0&0\\0&1&0\\\frac12&\frac12&1\end{pmatrix}, U=(21301200−32)U=\begin{pmatrix}2&1&3\\0&1&2\\0&0&-\frac32\end{pmatrix}, det⁡C=(+1)⋅2⋅1⋅(−32)=−3\det C=(+1)\cdot2\cdot1\cdot(-\frac32)=-3 (due scambi).

  • Verifica PA=LUPA=LU: riga 3 =0,5(4,2,1)+0,4(0,2,5,1,75)+(0,0,1,8)=(2,2,3)=0{,}5(4,2,1)+0{,}4(0,2{,}5,1{,}75)+(0,0,1{,}8)=(2,2,3); Sarrus det⁡A=4−30+8=−18\det A=4-30+8=-18. Per CC: PP ciclo (3,1,2)(3,1,2), det⁡P=+1\det P=+1; Sarrus det⁡C=−1−2=−3\det C=-1-2=-3.

Errori tipici: moltiplicatori già calcolati non scambiati; manca (−1)s(-1)^s; Ly=bL\mathbf y=\mathbf b invece di PbP\mathbf b.

Teoria collegata