Salta al contenuto
Note per Studenti Eliminazione di Gauss

Eliminazione di Gauss

In questa pagina 9
In questa pagina 5

Lezioni 16, 17 e 18 (videolezioni n. 16–18). Esercizi svolti: Esercizio 41 · sistema 4×4 con due parametri (compitino 2025), Esercizio 42 · rango con parametro e condizione sui termini noti (compitino 2026), Esercizio 43 · rango con parametro e sistemi incompatibili (compitino 2023), Esercizio 44 · rango con parametro, righe e colonne, nucleo della trasposta (settembre 2023), Esercizio 45 · matrice R tale che RA è a scala, nucleo, immagine e cambio di base. Seguito: 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 →.

Il teorema di Rouché-CapelliUn sistema lineare si scrive AX = B; ha soluzioni se e solo se B sta nell'immagine di A, cioè se rango(A) = rango(A|B) (Rouché-Capelli); le soluzioni sono una soluzione particolare più il nucleo e dipendono da n − r parametri.Sistemi lineari e teorema di Rouché-Capelli → dice che tutto dipende dal rango di una matrice. Finora per calcolarlo si scriveva una combinazione lineare uguale a zero e si risolveva un sistema (e, se i vettori risultavano dipendenti, se ne toglieva uno e si ricominciava). Il metodo di eliminazione di Gauss fa lo stesso lavoro in molti meno passaggi: si trasforma la matrice in una più semplice con lo stesso rango, finché il rango si legge a occhio.

Le tre operazioni elementari

Le operazioni elementari sulle righe di una matrice sono:

  1. scambiare due righe: Ri↔RjR_i \leftrightarrow R_j;
  2. moltiplicare una riga per un numero diverso da zero: Ri→λRiR_i \to \lambda R_i, con λ≠0\lambda \ne 0;
  3. sommare a una riga un multiplo di un'altra riga (o una combinazione lineare di altre righe): Ri→Ri+αRjR_i \to R_i + \alpha R_j, con j≠ij \ne i.

Allo stesso modo si definiscono le operazioni elementari sulle colonne (Ci↔CjC_i \leftrightarrow C_j, ecc.).

Perché non cambiano il rango. Il rango è il numero di righe linearmente indipendenti (che è anche il numero di colonne indipendenti).

  1. Scambiare due righe cambia solo l'ordine: le righe sono sempre le stesse.
  2. Sostituire una riga con un suo multiplo λRi\lambda R_i, λ≠0\lambda \ne 0, non cambia il sottospazio generatoL'intersezione di due sottospazi è un sottospazio, l'unione in generale no. Al suo posto si usa la somma U + W = {u + w}, il più piccolo sottospazio che contiene entrambi. Il sottospazio generato da un insieme S è l'insieme di tutte le combinazioni lineari di vettori di S.Intersezione, somma e sottospazio generato → dalle righe: λRi\lambda R_i si ottiene da RiR_i e Ri=1λ(λRi)R_i = \frac1\lambda (\lambda R_i) si riottiene da λRi\lambda R_i. (Con λ=0\lambda = 0 invece la riga sparirebbe: per questo è vietato.)
  3. Ri+αRjR_i + \alpha R_j è combinazione di righe della matrice, e viceversa Ri=(Ri+αRj)−αRjR_i = (R_i + \alpha R_j) - \alpha R_j: anche qui il sottospazio generato dalle righe resta lo stesso.

In tutti e tre i casi il sottospazio generato dalle righe non cambia, quindi nemmeno la sua dimensione, che è il rango. Lo stesso ragionamento vale per le colonne.

Lettura con i sistemi. Sulle righe della matrice completa di un sistema, le tre operazioni sono: scambiare due equazioni, moltiplicare un'equazione per un numero non nullo, sommare a un'equazione un multiplo di un'altra. Sono le mosse che si fanno da sempre per risolvere un sistema, e producono un sistema equivalente (con le stesse soluzioni). Il perché, per la terza: se XX risolve RiR_i e RjR_j risolve anche Ri+αRjR_i + \alpha R_j (si sommano le due uguaglianze); viceversa se risolve Ri+αRjR_i + \alpha R_j e RjR_j, risolve anche Ri=(Ri+αRj)−αRjR_i = (R_i + \alpha R_j) - \alpha R_j. Nessuna soluzione si perde e nessuna si aggiunge.

Esempio nel piano. {x+y=3x−y=1\begin{cases} x + y = 3 \\ x - y = 1 \end{cases} con R2→R2−R1R_2 \to R_2 - R_1 diventa {x+y=3−2y=−2\begin{cases} x + y = 3 \\ -2y = -2 \end{cases}. La seconda retta è cambiata (da x−y=1x - y = 1 a y=1y = 1), ma passa ancora per il punto comune (2,1)(2, 1): il sistema nuovo ha la stessa soluzione, e in più ha una incognita in meno nella seconda equazione.

Grafico interattivo: R₂ → R₂ − R₁ sostituisce la retta x − y = 1 con la retta y = 1: le rette cambiano, il punto comune (2, 1) resta lo stesso

La forma a scala

Definizione (forma a scala e pivot). Una matrice è in forma a scala (per righe) se, in ogni riga, il primo elemento non nullo sta strettamente più a destra del primo elemento non nullo della riga precedente; le eventuali righe nulle stanno in fondo.

Il primo elemento non nullo di ogni riga non nulla si chiama pivot.

Esempio. (123004000)\begin{pmatrix} 1 & 2 & 3 \\ 0 & 0 & 4 \\ 0 & 0 & 0 \end{pmatrix} è a scala, con pivot 11 (prima riga) e 44 (seconda riga).

(p1∗∗∗∗0p2∗∗∗000p3∗00000)(p1,p2,p3≠0, ∗=numeri qualsiasi)\begin{pmatrix} \boxed{p_1} & * & * & * & * \\ 0 & \boxed{p_2} & * & * & * \\ 0 & 0 & 0 & \boxed{p_3} & * \\ 0 & 0 & 0 & 0 & 0 \end{pmatrix} \qquad (p_1, p_2, p_3 \ne 0, \ * = \text{numeri qualsiasi})

Gli zeri sotto la "scala" sono obbligatori, gli asterischi possono essere qualunque cosa. Come si vede, i pivot non devono per forza stare sulla diagonale: un gradino può essere largo più di una colonna (qui il terzo pivot è nella quarta colonna).

Teorema (rango di una matrice a scala). Il rango di una matrice in forma a scala è il numero di righe non nulle (cioè il numero di pivot).

Esempio. La matrice a scala (123004000)\begin{pmatrix} 1 & 2 & 3 \\ 0 & 0 & 4 \\ 0 & 0 & 0 \end{pmatrix} ha due righe non nulle, quindi rango 22.

Perché. Le righe nulle non contano. Le righe non nulle sono indipendenti: in una combinazione c1R1+c2R2+⋯+ckRk=0c_1 R_1 + c_2 R_2 + \dots + c_k R_k = 0, guardando la colonna del primo pivot, solo R1R_1 ha un elemento non nullo lì (sotto ci sono zeri), quindi c1p1=0c_1 p_1 = 0 e c1=0c_1 = 0. Tolta R1R_1, lo stesso ragionamento sulla colonna del secondo pivot dà c2=0c_2 = 0, e così via: tutti i coefficienti sono nulli.

L'algoritmo

  1. Si guarda la prima colonna. Se è tutta nulla, la si ignora e si passa alla successiva.
  2. Se serve, con uno scambio di righe si porta in alto un elemento non nullo: sarà il pivot. (Conviene scegliere un 11 o un −1-1, se c'è, per evitare frazioni.)
  3. Con operazioni Ri→Ri−ai1a11R1R_i \to R_i - \frac{a_{i1}}{a_{11}} R_1 si crea uno zero sotto il pivot in ogni riga. Il coefficiente ai1a11\frac{a_{i1}}{a_{11}} è scelto apposta: il primo elemento di ai1a11R1\frac{a_{i1}}{a_{11}} R_1 è ai1a11⋅a11=ai1\frac{a_{i1}}{a_{11}} \cdot a_{11} = a_{i1}, e sottraendolo da ai1a_{i1} resta 00.
  4. Si "copre" la prima riga e la prima colonna e si ripete tutto sulla sottomatrice rimasta.
  5. Ci si ferma quando la matrice è a scala.

Consiglio del prof: procedere sempre con ordine. Per creare gli zeri della colonna kk si usa solo la riga del kk-esimo pivot. Usare una riga "vecchia" (per esempio la prima quando si lavora sulla terza colonna) crea lo zero voluto ma distrugge zeri già fatti nelle colonne precedenti, e si gira in tondo. Procedendo sempre allo stesso modo il metodo diventa meccanico, si sbaglia meno ed è anche il modo in cui lo si programma al calcolatore.

Esempio 1: rango di una 3×33 \times 3 (lezione 16)

A=(2−1314−2301)A = \begin{pmatrix} 2 & -1 & 3 \\ 1 & 4 & -2 \\ 3 & 0 & 1 \end{pmatrix}

Passo 1: R1↔R2R_1 \leftrightarrow R_2, per avere 11 come primo pivot (con il 22 si dovrebbe moltiplicare per 32\frac32 e comparirebbero frazioni).

(14−22−13301)\begin{pmatrix} 1 & 4 & -2 \\ 2 & -1 & 3 \\ 3 & 0 & 1 \end{pmatrix}

Passo 2: zeri nella prima colonna. La seconda riga inizia con 22 e la prima con 11: R2→R2−2R1R_2 \to R_2 - 2R_1. La terza inizia con 33: R3→R3−3R1R_3 \to R_3 - 3R_1.

R2−2R1=(2−2, −1−8, 3+4)=(0,−9,7),R3−3R1=(3−3, 0−12, 1+6)=(0,−12,7)R_2 - 2R_1 = (2 - 2,\ -1 - 8,\ 3 + 4) = (0, -9, 7), \qquad R_3 - 3R_1 = (3 - 3,\ 0 - 12,\ 1 + 6) = (0, -12, 7)

(14−20−970−127)\begin{pmatrix} 1 & 4 & -2 \\ 0 & -9 & 7 \\ 0 & -12 & 7 \end{pmatrix}

Passo 3: zero sotto il −9-9. Il rapporto è −12−9=43\frac{-12}{-9} = \frac43: R3→R3−43R2R_3 \to R_3 - \frac43 R_2. Il terzo elemento diventa 7−43⋅7=−737 - \frac43 \cdot 7 = -\frac73.

(14−20−9700−73)\begin{pmatrix} 1 & 4 & -2 \\ 0 & -9 & 7 \\ 0 & 0 & -\frac73 \end{pmatrix}

Tre righe non nulle: rango⁡(A)=3\operatorname{rango}(A) = 3. (Per il rango non serve nemmeno sapere che l'ultimo numero è −73-\frac73: basta sapere che non è zero.) Il conto del terzo elemento, per esteso: R3−43R2=(0, −12−43(−9), 7−43⋅7)=(0, −12+12, 21−283)=(0,0,−73)R_3 - \frac43 R_2 = \big(0, \ -12 - \frac43(-9), \ 7 - \frac43 \cdot 7\big) = \big(0, \ -12 + 12, \ \frac{21 - 28}{3}\big) = (0, 0, -\frac73).

Rango 33 per una matrice 3×33 \times 3 vuol dire che AA è invertibileL'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 →. Più avanti si vedrà che il prodotto dei pivot dà anche il determinante, a meno del segno degli scambi: 1⋅(−9)⋅(−73)=211 \cdot (-9) \cdot (-\frac73) = 21, e con uno scambio di righe det⁡A=−21\det A = -21 (vedi Proprietà del determinante, Binet e LaplaceIl determinante è lineare in ogni riga, cambia segno scambiando due righe, non cambia sommando a una riga un multiplo di un'altra: così si calcola con Gauss riducendo a triangolare. Binet: det(AB) = det A · det B. Laplace: sviluppo lungo una riga o colonna con i complementi algebrici.Proprietà del determinante, Binet e Laplace →).

Esempio 2: una riga dipendente

A=(02−13130−128−11)(R3=R1+2R2)A = \begin{pmatrix} 0 & 2 & -1 & 3 \\ 1 & 3 & 0 & -1 \\ 2 & 8 & -1 & 1 \end{pmatrix} \qquad (R_3 = R_1 + 2R_2)

Il primo elemento è 00: con R1↔R2R_1 \leftrightarrow R_2 si mette in alto l'11, e la nuova seconda riga inizia già con 00. Poi R3→R3−2R1R_3 \to R_3 - 2R_1, cioè (2−2, 8−6, −1−0, 1+2)=(0,2,−1,3)(2 - 2, \ 8 - 6, \ -1 - 0, \ 1 + 2) = (0, 2, -1, 3), e infine R3→R3−R2R_3 \to R_3 - R_2, che dà la riga nulla:

(130−102−1328−11)→(130−102−1302−13)→R3→R3−R2(130−102−130000)\begin{pmatrix} 1 & 3 & 0 & -1 \\ 0 & 2 & -1 & 3 \\ 2 & 8 & -1 & 1 \end{pmatrix} \to \begin{pmatrix} 1 & 3 & 0 & -1 \\ 0 & 2 & -1 & 3 \\ 0 & 2 & -1 & 3 \end{pmatrix} \xrightarrow{R_3 \to R_3 - R_2} \begin{pmatrix} 1 & 3 & 0 & -1 \\ 0 & 2 & -1 & 3 \\ 0 & 0 & 0 & 0 \end{pmatrix}

rango⁡(A)=2\operatorname{rango}(A) = 2. L'algoritmo ha "eliminato" proprio la riga che era combinazione delle altre: ecco da dove viene il nome.

Righe o colonne? Per calcolare solo il rango si possono usare anche le operazioni sulle colonne (o mescolarle), perché rango per righe e rango per colonne coincidono: per esempio lo stesso risultato si ottiene riducendo la trasposta ATA^T.

Risolvere un sistema con Gauss

Per risolvere AX=BAX = B si riduce a scala direttamente la matrice completa (A ∣ B)(A \,|\, B): le prime nn colonne ridotte sono la forma a scala di AA, quindi con un solo calcolo si ottengono rango⁡(A)\operatorname{rango}(A), rango⁡(A ∣ B)\operatorname{rango}(A \,|\, B) e un sistema equivalente facile da risolvere.

Attenzione: per risolvere un sistema si usano SOLO operazioni sulle righe.

Il motivo: le righe sono equazioni, e sommarle o scambiarle produce un sistema equivalente. Le colonne invece corrispondono a incognite diverse: sommare la colonna di x1x_1 a quella di x2x_2 significherebbe sommare "2x12x_1" e "−4x2-4x_2" ottenendo "−2-2 di che cosa?", che non ha senso. (Uno scambio di colonne si potrebbe fare, ma scambia anche il nome delle incognite: meglio evitarlo.)

Come si conclude. Dalla forma a scala:

  1. se compare una riga (0 ⋯ 0 ∣ c)(0 \ \cdots \ 0 \,|\, c) con c≠0c \ne 0 il sistema è impossibile (0=c0 = c);
  2. altrimenti le incognite che corrispondono alle colonne con un pivot si dicono dipendenti, le altre libere (sono i n−rn - r parametri);
  3. si risolve con la sostituzione all'indietro: dall'ultima equazione non nulla si ricava l'ultima incognita dipendente, la si sostituisce nella penultima, e così via risalendo fino alla prima.

Esempio 3: sistema con due parametri liberi

{x1+2x2−x3+x4=12x1+4x2+x3+5x4=5−x1−2x2+4x3+2x4=2\begin{cases} x_1 + 2x_2 - x_3 + x_4 = 1 \\ 2x_1 + 4x_2 + x_3 + 5x_4 = 5 \\ -x_1 - 2x_2 + 4x_3 + 2x_4 = 2 \end{cases}

(12−11124155−1−2422)→R3→R3+R1R2→R2−2R1(12−1110033300333)→R3→R3−R2(12−1110033300000)\left(\begin{array}{cccc|c} 1 & 2 & -1 & 1 & 1 \\ 2 & 4 & 1 & 5 & 5 \\ -1 & -2 & 4 & 2 & 2 \end{array}\right) \xrightarrow[R_3 \to R_3 + R_1]{R_2 \to R_2 - 2R_1} \left(\begin{array}{cccc|c} 1 & 2 & -1 & 1 & 1 \\ 0 & 0 & 3 & 3 & 3 \\ 0 & 0 & 3 & 3 & 3 \end{array}\right) \xrightarrow{R_3 \to R_3 - R_2} \left(\begin{array}{cccc|c} 1 & 2 & -1 & 1 & 1 \\ 0 & 0 & 3 & 3 & 3 \\ 0 & 0 & 0 & 0 & 0 \end{array}\right)

I conti: R2−2R1=(2−2, 4−4, 1+2, 5−2 ∣ 5−2)=(0,0,3,3 ∣ 3)R_2 - 2R_1 = (2 - 2, \ 4 - 4, \ 1 + 2, \ 5 - 2 \,|\, 5 - 2) = (0, 0, 3, 3 \,|\, 3) e R3+R1=(−1+1, −2+2, 4−1, 2+1 ∣ 2+1)=(0,0,3,3 ∣ 3)R_3 + R_1 = (-1 + 1, \ -2 + 2, \ 4 - 1, \ 2 + 1 \,|\, 2 + 1) = (0, 0, 3, 3 \,|\, 3). Notare che creando lo zero in prima colonna si è annullata anche la seconda colonna (la colonna di x2x_2 è il doppio di quella di x1x_1): il secondo pivot è nella terza colonna.

  • rango⁡(A)=rango⁡(A ∣ B)=2\operatorname{rango}(A) = \operatorname{rango}(A \,|\, B) = 2: il sistema è risolubile, con n−r=4−2=2n - r = 4 - 2 = 2 parametri.
  • I pivot sono nelle colonne 11 e 33: x1,x3x_1, x_3 dipendenti, x2,x4x_2, x_4 libere.
  • Sostituzione all'indietro: dalla seconda riga 3x3+3x4=3⇒x3=1−x43x_3 + 3x_4 = 3 \Rightarrow x_3 = 1 - x_4. Dalla prima x1=1−2x2+x3−x4=1−2x2+(1−x4)−x4=2−2x2−2x4x_1 = 1 - 2x_2 + x_3 - x_4 = 1 - 2x_2 + (1 - x_4) - x_4 = 2 - 2x_2 - 2x_4.

X=(2−2x2−2x4x21−x4x4)=(2010)⏟particolare+x2(−2100)+x4(−20−11)X = \begin{pmatrix} 2 - 2x_2 - 2x_4 \\ x_2 \\ 1 - x_4 \\ x_4 \end{pmatrix} = \underbrace{\begin{pmatrix} 2 \\ 0 \\ 1 \\ 0 \end{pmatrix}}_{\text{particolare}} + x_2 \begin{pmatrix} -2 \\ 1 \\ 0 \\ 0 \end{pmatrix} + x_4 \begin{pmatrix} -2 \\ 0 \\ -1 \\ 1 \end{pmatrix}

come previsto dalla struttura "soluzione particolare più nucleoUn sistema lineare si scrive AX = B; ha soluzioni se e solo se B sta nell'immagine di A, cioè se rango(A) = rango(A|B) (Rouché-Capelli); le soluzioni sono una soluzione particolare più il nucleo e dipendono da n − r parametri.Sistemi lineari e teorema di Rouché-Capelli →" (la soluzione particolare si ottiene ponendo i parametri x2=x4=0x_2 = x_4 = 0; i due vettori moltiplicati per x2x_2 e x4x_4 sono una base del nucleo). Verifica di (2,0,1,0)(2, 0, 1, 0) nelle tre equazioni: 2−1=12 - 1 = 1 ✓, 4+1=54 + 1 = 5 ✓, −2+4=2-2 + 4 = 2 ✓. Verifica che i due vettori stanno nel nucleo (termini noti nulli): (−2,1,0,0)(-2, 1, 0, 0) dà −2+2=0-2 + 2 = 0, −4+4=0-4 + 4 = 0, 2−2=02 - 2 = 0 ✓; (−2,0,−1,1)(-2, 0, -1, 1) dà −2+1+1=0-2 + 1 + 1 = 0, −4−1+5=0-4 - 1 + 5 = 0, 2−4+2=02 - 4 + 2 = 0 ✓.

Matrici con un parametro

Se alcuni elementi dipendono da un parametro tt, conviene spostarli il più in basso a destra possibile prima di cominciare (scambiando righe e, se si calcola solo il rango, anche colonne): così quasi tutti i passaggi si fanno con numeri e il parametro entra in gioco solo all'ultimo gradino, dove si discutono i casi.

Esempio (lezione 18, in piccolo). At=(1t1213122)A_t = \begin{pmatrix} 1 & t & 1 \\ 2 & 1 & 3 \\ 1 & 2 & 2 \end{pmatrix}. Si scambiano le colonne 22 e 33 (lecito: interessa solo il rango), così tt va nell'ultima colonna:

(11t231122)→R3→R3−R1R2→R2−2R1(11t011−2t012−t)→R3→R3−R2(11t011−2t001+t)\begin{pmatrix} 1 & 1 & t \\ 2 & 3 & 1 \\ 1 & 2 & 2 \end{pmatrix} \xrightarrow[R_3 \to R_3 - R_1]{R_2 \to R_2 - 2R_1} \begin{pmatrix} 1 & 1 & t \\ 0 & 1 & 1 - 2t \\ 0 & 1 & 2 - t \end{pmatrix} \xrightarrow{R_3 \to R_3 - R_2} \begin{pmatrix} 1 & 1 & t \\ 0 & 1 & 1 - 2t \\ 0 & 0 & 1 + t \end{pmatrix}

I conti: R2−2R1=(2−2, 3−2, 1−2t)=(0,1,1−2t)R_2 - 2R_1 = (2 - 2, \ 3 - 2, \ 1 - 2t) = (0, 1, 1 - 2t), R3−R1=(0, 2−1, 2−t)=(0,1,2−t)R_3 - R_1 = (0, \ 2 - 1, \ 2 - t) = (0, 1, 2 - t), e (0,1,2−t)−(0,1,1−2t)=(0,0,2−t−1+2t)=(0,0,1+t)(0, 1, 2 - t) - (0, 1, 1 - 2t) = (0, 0, 2 - t - 1 + 2t) = (0, 0, 1 + t). Il parametro non è mai finito al denominatore e i primi due pivot sono 11 e 11, numeri fissi.

Le prime due righe sono non nulle per ogni tt. La terza è nulla solo se 1+t=01 + t = 0. Quindi rango⁡(At)=2\operatorname{rango}(A_t) = 2 se t=−1t = -1, e rango⁡(At)=3\operatorname{rango}(A_t) = 3 se t≠−1t \ne -1. Controllo con t=−1t = -1: A−1=(1−11213122)A_{-1} = \begin{pmatrix} 1 & -1 & 1 \\ 2 & 1 & 3 \\ 1 & 2 & 2 \end{pmatrix} e infatti R2=R1+R3R_2 = R_1 + R_3 ((1+1, −1+2, 1+2)=(2,1,3)(1 + 1, \ -1 + 2, \ 1 + 2) = (2, 1, 3)).

Attenzione a non dividere per espressioni che contengono il parametro (per esempio R3→11+tR3R_3 \to \frac{1}{1+t} R_3) senza aver prima escluso il valore che le annulla.

Le operazioni elementari come prodotti di matrici (lezione 17)

Ogni operazione elementare sulle righe di AA si ottiene moltiplicando AA a sinistra per una matrice opportuna, costruita modificando la matrice identità ImI_m:

Operazione sulle righe Matrice Come si costruisce da ImI_m
Ri↔RjR_i \leftrightarrow R_j PijP_{ij} si scambiano le righe ii e jj dell'identità
Ri→λRiR_i \to \lambda R_i (λ≠0\lambda \ne 0) Mi(λ)M_i(\lambda) al posto dell'11 in posizione (i,i)(i,i) si mette λ\lambda
Ri→Ri+αRjR_i \to R_i + \alpha R_j (i≠ji \ne j) Sij(α)S_{ij}(\alpha) al posto dello 00 in posizione (i,j)(i,j) si mette α\alpha

Esempio. In M3(K)M_3(K):

S13(α)(abcdefghi)=(10α010001)(abcdefghi)=(a+αgb+αhc+αidefghi)S_{13}(\alpha) \begin{pmatrix} a & b & c \\ d & e & f \\ g & h & i \end{pmatrix} = \begin{pmatrix} 1 & 0 & \alpha \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} a & b & c \\ d & e & f \\ g & h & i \end{pmatrix} = \begin{pmatrix} a + \alpha g & b + \alpha h & c + \alpha i \\ d & e & f \\ g & h & i \end{pmatrix}

La prima riga del prodotto è (1,0,α)(1, 0, \alpha) per le colonne: 1⋅a+0⋅d+αg1 \cdot a + 0 \cdot d + \alpha g, ecc. Il risultato è proprio R1+αR3R_1 + \alpha R_3, mentre le altre righe dell'identità ricopiano le righe di AA.

Moltiplicando a destra (APijA P_{ij}, AMi(λ)A M_i(\lambda), ASij(α)A S_{ij}(\alpha)) si ottengono le operazioni corrispondenti sulle colonne.

Tutte queste matrici sono invertibili: l'operazione inversa è ancora elementare (PijP_{ij} si annulla rifacendo lo stesso scambio, Mi(λ)M_i(\lambda) con Mi(1λ)M_i(\frac1\lambda), Sij(α)S_{ij}(\alpha) con Sij(−α)S_{ij}(-\alpha)).

La matrice BB con BA=A′BA = A' (lezione 18)

Se per ridurre AA a scala A′A' si fanno le operazioni corrispondenti alle matrici B1,B2,…,BkB_1, B_2, \dots, B_k (in quest'ordine), allora

A′=Bk⋯B2B1A=BA,B=Bk⋯B2B1.A' = B_k \cdots B_2 B_1 A = BA, \qquad B = B_k \cdots B_2 B_1.

BB "ricorda" tutte le operazioni fatte, ed è invertibile (prodotto di invertibili). Per calcolarla senza scrivere tutte le BiB_i:

Trucco. Si scrive l'identità accanto ad AA, cioè (A ∣ Im)(A \,|\, I_m), e si riduce AA a scala con sole operazioni sulle righe, facendo le stesse operazioni anche sulla parte destra. Alla fine si ottiene (A′ ∣ B)(A' \,|\, B).

Perché funziona. Fare le operazioni sulle righe di (A ∣ Im)(A \,|\, I_m) equivale a moltiplicare a sinistra per BB: B(A ∣ Im)=(BA ∣ BIm)=(A′ ∣ B)B (A \,|\, I_m) = (BA \,|\, B I_m) = (A' \,|\, B).

A cosa serve: le relazioni di dipendenza lineare

Se si mettono in riga dei vettori v1,…,vmv_1, \dots, v_m, ogni riga nulla di A′A' dà una relazione di dipendenza lineare: se la riga ii di A′A' è nulla, la riga ii di BB, cioè (β1,…,βm)(\beta_1, \dots, \beta_m), soddisfa

β1v1+β2v2+⋯+βmvm=0⃗,\beta_1 v_1 + \beta_2 v_2 + \dots + \beta_m v_m = \vec 0,

perché la riga ii di BABA è proprio questa combinazione delle righe di AA. I coefficienti si trovano senza scrivere né risolvere alcun sistema.

Esempio. v1=(2,1,3,−1)v_1 = (2, 1, 3, -1), v2=(1,0,2,1)v_2 = (1, 0, 2, 1), v3=(4,3,5,−5)v_3 = (4, 3, 5, -5).

(213−11001021010435−5001)→R1↔R2(1021010213−1100435−5001)\left(\begin{array}{cccc|ccc} 2 & 1 & 3 & -1 & 1 & 0 & 0 \\ 1 & 0 & 2 & 1 & 0 & 1 & 0 \\ 4 & 3 & 5 & -5 & 0 & 0 & 1 \end{array}\right) \xrightarrow{R_1 \leftrightarrow R_2} \left(\begin{array}{cccc|ccc} 1 & 0 & 2 & 1 & 0 & 1 & 0 \\ 2 & 1 & 3 & -1 & 1 & 0 & 0 \\ 4 & 3 & 5 & -5 & 0 & 0 & 1 \end{array}\right)

→R3→R3−4R1R2→R2−2R1(102101001−1−31−2003−3−90−41)→R3→R3−3R2(102101001−1−31−200000−321)\xrightarrow[R_3 \to R_3 - 4R_1]{R_2 \to R_2 - 2R_1} \left(\begin{array}{cccc|ccc} 1 & 0 & 2 & 1 & 0 & 1 & 0 \\ 0 & 1 & -1 & -3 & 1 & -2 & 0 \\ 0 & 3 & -3 & -9 & 0 & -4 & 1 \end{array}\right) \xrightarrow{R_3 \to R_3 - 3R_2} \left(\begin{array}{cccc|ccc} 1 & 0 & 2 & 1 & 0 & 1 & 0 \\ 0 & 1 & -1 & -3 & 1 & -2 & 0 \\ 0 & 0 & 0 & 0 & -3 & 2 & 1 \end{array}\right)

I conti, a sinistra e a destra della barra con la stessa operazione: R2−2R1=(2−2, 1−0, 3−4, −1−2 ∣ 1, 0−2, 0)=(0,1,−1,−3 ∣ 1,−2,0)R_2 - 2R_1 = (2 - 2, \ 1 - 0, \ 3 - 4, \ -1 - 2 \,|\, 1, \ 0 - 2, \ 0) = (0, 1, -1, -3 \,|\, 1, -2, 0); R3−4R1=(0, 3, 5−8, −5−4 ∣ 0, −4, 1)=(0,3,−3,−9 ∣ 0,−4,1)R_3 - 4R_1 = (0, \ 3, \ 5 - 8, \ -5 - 4 \,|\, 0, \ -4, \ 1) = (0, 3, -3, -9 \,|\, 0, -4, 1); R3−3R2=(0, 3−3, −3+3, −9+9 ∣ 0−3, −4+6, 1−0)=(0,0,0,0 ∣ −3,2,1)R_3 - 3R_2 = (0, \ 3 - 3, \ -3 + 3, \ -9 + 9 \,|\, 0 - 3, \ -4 + 6, \ 1 - 0) = (0, 0, 0, 0 \,|\, -3, 2, 1).

  • Il rango è 22: i tre vettori generano un sottospazio di dimensione 22.
  • La terza riga di A′A' è nulla, e la terza riga di BB è (−3,2,1)(-3, 2, 1): quindi −3v1+2v2+v3=0⃗-3v_1 + 2v_2 + v_3 = \vec 0, cioè v3=3v1−2v2v_3 = 3v_1 - 2v_2. Verifica: 3(2,1,3,−1)−2(1,0,2,1)=(4,3,5,−5)3(2, 1, 3, -1) - 2(1, 0, 2, 1) = (4, 3, 5, -5) ✓.

Intersezione di due sottospazi senza risolvere sistemi

Siano U=⟨u1,u2⟩U = \langle u_1, u_2 \rangle e W=⟨w1,w2,w3⟩W = \langle w_1, w_2, w_3 \rangle in R4\mathbb{R}^4, con u1=(1,0,1,0)u_1 = (1, 0, 1, 0), u2=(0,1,0,1)u_2 = (0, 1, 0, 1), w1=(1,1,0,0)w_1 = (1, 1, 0, 0), w2=(0,0,1,1)w_2 = (0, 0, 1, 1), w3=(1,0,0,1)w_3 = (1, 0, 0, 1). Un vettore v∈U∩Wv \in U \cap W si scrive v=α1u1+α2u2=β1w1+β2w2+β3w3v = \alpha_1 u_1 + \alpha_2 u_2 = \beta_1 w_1 + \beta_2 w_2 + \beta_3 w_3, cioè

α1u1+α2u2−β1w1−β2w2−β3w3=0⃗,\alpha_1 u_1 + \alpha_2 u_2 - \beta_1 w_1 - \beta_2 w_2 - \beta_3 w_3 = \vec 0,

che è una relazione di dipendenza tra i cinque vettori: la si legge nella matrice BB. Si mettono i cinque vettori in riga (nell'ordine u1,u2,w1,w2,w3u_1, u_2, w_1, w_2, w_3) e si riduce (A ∣ I5)(A \,|\, I_5):

  • R3→R3−R1R_3 \to R_3 - R_1 e R5→R5−R1R_5 \to R_5 - R_1 (zeri in prima colonna; la seconda e la quarta riga iniziano già con 00): R3=(1−1,1,0−1,0)=(0,1,−1,0)R_3 = (1 - 1, 1, 0 - 1, 0) = (0, 1, -1, 0), cioè w1−u1w_1 - u_1, e R5=(0,0,−1,1)R_5 = (0, 0, -1, 1), cioè w3−u1w_3 - u_1;
  • R3→R3−R2R_3 \to R_3 - R_2 (zero in seconda colonna; la quarta e la quinta hanno già 00 lì): ora R3=(0,1−1,−1,0−1)=(0,0,−1,−1)R_3 = (0, 1 - 1, -1, 0 - 1) = (0, 0, -1, -1), ottenuta come w1−u1−u2w_1 - u_1 - u_2;
  • R4→R4+R3R_4 \to R_4 + R_3 e R5→R5−R3R_5 \to R_5 - R_3 (zeri in terza colonna): R4=(0,0,1−1,1−1)=(0,0,0,0)R_4 = (0, 0, 1 - 1, 1 - 1) = (0, 0, 0, 0), ottenuta come w2+(w1−u1−u2)w_2 + (w_1 - u_1 - u_2), e R5=(0,0,−1+1,1+1)=(0,0,0,2)R_5 = (0, 0, -1 + 1, 1 + 1) = (0, 0, 0, 2), ottenuta come (w3−u1)−(w1−u1−u2)=u2−w1+w3(w_3 - u_1) - (w_1 - u_1 - u_2) = u_2 - w_1 + w_3.

La matrice finale, con a destra la parte BB (le colonne di BB corrispondono nell'ordine a u1,u2,w1,w2,w3u_1, u_2, w_1, w_2, w_3): (10101000001010100000−1−1−1−11000000−1−1110000201−101)\left(\begin{array}{cccc|ccccc} 1 & 0 & 1 & 0 & 1 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 1 & 0 & 1 & 0 & 0 & 0 \\ 0 & 0 & -1 & -1 & -1 & -1 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 & -1 & -1 & 1 & 1 & 0 \\ 0 & 0 & 0 & 2 & 0 & 1 & -1 & 0 & 1 \end{array}\right) Non è ancora a scala nell'ordine delle righe (la riga nulla dovrebbe andare in fondo, con lo scambio R4↔R5R_4 \leftrightarrow R_5), ma per leggere rango e relazioni non serve.

La riga nulla dice che −u1−u2+w1+w2=0⃗-u_1 - u_2 + w_1 + w_2 = \vec 0: la riga corrispondente di BB è (−1,−1,1,1,0)(-1, -1, 1, 1, 0). Le righe non nulle sono 44, quindi dim⁡(U+W)=4\dim(U + W) = 4 (le righe di AA generano U+WU + W, vedi Intersezione, somma e sottospazio generatoL'intersezione di due sottospazi è un sottospazio, l'unione in generale no. Al suo posto si usa la somma U + W = {u + w}, il più piccolo sottospazio che contiene entrambi. Il sottospazio generato da un insieme S è l'insieme di tutte le combinazioni lineari di vettori di S.Intersezione, somma e sottospazio generato →) e, per la formula di GrassmannFormula di Grassmann: dim(U + W) = dim U + dim W − dim(U ∩ W), come contare gli elementi di un'unione senza contare due volte quelli comuni. Se U ∩ W = {0} la somma è diretta, U ⊕ W, e ogni vettore si scrive in modo unico come u + w.Formula di Grassmann e somma diretta →, dim⁡(U∩W)=dim⁡U+dim⁡W−dim⁡(U+W)=2+3−4=1\dim(U \cap W) = \dim U + \dim W - \dim(U + W) = 2 + 3 - 4 = 1 (qui dim⁡U=2\dim U = 2 perché u1,u2u_1, u_2 non sono proporzionali, e dim⁡W=3\dim W = 3 perché w1,w2,w3w_1, w_2, w_3 sono indipendenti: ridotti a scala da soli danno tre righe non nulle). Confrontando la relazione con α1u1+α2u2−β1w1−β2w2−β3w3=0⃗\alpha_1 u_1 + \alpha_2 u_2 - \beta_1 w_1 - \beta_2 w_2 - \beta_3 w_3 = \vec 0 (cambiata di segno) si legge α1=α2=1\alpha_1 = \alpha_2 = 1, β1=β2=1\beta_1 = \beta_2 = 1, β3=0\beta_3 = 0. Una base di U∩WU \cap W è quindi

v=u1+u2=w1+w2=(1,1,1,1).v = u_1 + u_2 = w_1 + w_2 = (1, 1, 1, 1).

Verifica: u1+u2=(1,0,1,0)+(0,1,0,1)=(1,1,1,1)u_1 + u_2 = (1, 0, 1, 0) + (0, 1, 0, 1) = (1, 1, 1, 1) e w1+w2=(1,1,0,0)+(0,0,1,1)=(1,1,1,1)w_1 + w_2 = (1, 1, 0, 0) + (0, 0, 1, 1) = (1, 1, 1, 1) ✓.

Costo del metodo

Per ridurre a scala una matrice n×nn \times n si devono creare al più (n−1)+(n−2)+⋯+1=n(n−1)2(n - 1) + (n - 2) + \dots + 1 = \frac{n(n-1)}{2} zeri, ciascuno con un'operazione elementare: l'ordine di grandezza è n2n^2 operazioni sulle righe. Ogni operazione sulle righe richiede a sua volta circa nn moltiplicazioni e somme (una per elemento della riga), quindi in tutto servono circa n3n^3 operazioni aritmetiche: in termini di complessità computazionaleCosto di un algoritmo in funzione della dimensione dell'input; caso peggiore, migliore e medio; notazione O-grande e classi di crescita; come contare i passi di cicli e ricorsioni; costo delle operazioni Python.Complessità computazionale → l'algoritmo è O(n3)O(n^3). Con il vecchio metodo (risolvere un sistema, togliere un vettore, risolvere di nuovo…) i conti crescono molto più in fretta. Per questo l'eliminazione di Gauss è lo strumento usato in pratica (anche nei programmi) per ranghi, sistemi, inverseL'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 → e determinantiIl determinante è lineare in ogni riga, cambia segno scambiando due righe, non cambia sommando a una riga un multiplo di un'altra: così si calcola con Gauss riducendo a triangolare. Binet: det(AB) = det A · det B. Laplace: sviluppo lungo una riga o colonna con i complementi algebrici.Proprietà del determinante, Binet e Laplace →.

Errori comuni

  • Usare operazioni sulle colonne mentre si risolve un sistema. Per il solo rango si può, per un sistema no.
  • Moltiplicare una riga per 00 (o per un'espressione con un parametro che può annullarsi): la riga sparisce e il rango cambia.
  • Credere che i pivot debbano stare sulla diagonale. Un gradino può saltare più colonne.
  • Fermarsi troppo presto: se due righe hanno il primo elemento non nullo nella stessa colonna, la matrice non è ancora a scala.
  • Riutilizzare righe già sistemate per creare zeri più a destra: si distruggono zeri fatti prima.
  • Dimenticare di applicare le operazioni anche alla colonna dei termini noti (o alla parte destra di (A ∣ I)(A \,|\, I)).

Versione ripasso

Il metodo di eliminazione di Gauss trasforma una matrice in forma a scala, conservandone il rango e facilitando la risoluzione di sistemi lineariUn sistema lineare si scrive AX = B; ha soluzioni se e solo se B sta nell'immagine di A, cioè se rango(A) = rango(A|B) (Rouché-Capelli); le soluzioni sono una soluzione particolare più il nucleo e dipendono da n − r parametri.Sistemi lineari e teorema di Rouché-Capelli →.

Le tre operazioni elementari

Le operazioni sulle righe che conservano il rango sono:

  1. Scambio: Ri↔RjR_i \leftrightarrow R_j.
  2. Moltiplicazione per scalare: Ri→λRiR_i \to \lambda R_i (λ≠0\lambda \ne 0).
  3. Somma di un multiplo: Ri→Ri+αRjR_i \to R_i + \alpha R_j (j≠ij \ne i).

Perché funzionano: il sottospazio generatoL'intersezione di due sottospazi è un sottospazio, l'unione in generale no. Al suo posto si usa la somma U + W = {u + w}, il più piccolo sottospazio che contiene entrambi. Il sottospazio generato da un insieme S è l'insieme di tutte le combinazioni lineari di vettori di S.Intersezione, somma e sottospazio generato → dalle righe non cambia (RiR_i si riottiene da λRi\lambda R_i e da Ri+αRjR_i + \alpha R_j), quindi la dimensione (rango) resta invariata. Su una matrice completa sono le mosse sulle equazioni di un sistema (sistema equivalente). Valgono anche per le colonne, ma per risolvere un sistema si usano solo righe: le colonne sono incognite diverse.

Forma a scala

Una matrice è a scala se il primo elemento non nullo di ogni riga (pivot) sta strettamente a destra del pivot della riga precedente.

Teorema: Il rango di una matrice a scala è pari al numero di righe non nulle (numero di pivot). I pivot non stanno per forza sulla diagonale.

(Le righe non nulle sono indipendenti: in ∑ciRi=0\sum c_i R_i = 0 la colonna del primo pivot dà c1=0c_1 = 0, poi la seconda dà c2=0c_2 = 0, e così via.)

Algoritmo:

  1. Scambiare righe per portare un elemento non nullo in alto.
  2. Usare la riga del pivot per creare zeri sotto di esso: Ri→Ri−ai1a11R1R_i \to R_i - \frac{a_{i1}}{a_{11}} R_1.
  3. Procedere ricorsivamente sulla sottomatrice.

Consiglio: usare sempre il pivot corrente per azzerare la colonna sottostante senza "sporcare" le colonne già sistemate; scegliere un pivot ±1\pm 1 per evitare frazioni.

Esempio (rango). A=(2−1314−2301)A = \begin{pmatrix} 2 & -1 & 3 \\ 1 & 4 & -2 \\ 3 & 0 & 1 \end{pmatrix}: R1↔R2R_1 \leftrightarrow R_2; R2−2R1=(0,−9,7)R_2 - 2R_1 = (0,-9,7), R3−3R1=(0,−12,7)R_3 - 3R_1 = (0,-12,7); R3−43R2=(0,0,−73)R_3 - \frac43 R_2 = (0,0,-\frac73). Tre righe non nulle: rango⁡(A)=3\operatorname{rango}(A) = 3. Con R3=R1+2R2R_3 = R_1 + 2R_2 l'ultima riga si annulla e il rango scende.

Risoluzione di sistemi

Per risolvere AX=BAX = B, ridurre a scala la matrice completa (A ∣ B)(A \,|\, B).

Attenzione: Usare SOLO operazioni sulle righe.

  1. Impossibile: Se compare una riga (0…0 ∣ c)(0 \dots 0 \,|\, c) con c≠0c \ne 0.
  2. Risolubile: Incognite con pivot (dipendenti) e incognite senza pivot (n−rn-r parametri liberi).
  3. Soluzione: Si ottiene per sostituzione all'indietro (dall'ultima riga non nulla alla prima).

Esempio. (12−11124155−1−2422)→(12−1110033300000)\left(\begin{array}{cccc|c} 1 & 2 & -1 & 1 & 1 \\ 2 & 4 & 1 & 5 & 5 \\ -1 & -2 & 4 & 2 & 2 \end{array}\right) \to \left(\begin{array}{cccc|c} 1 & 2 & -1 & 1 & 1 \\ 0 & 0 & 3 & 3 & 3 \\ 0 & 0 & 0 & 0 & 0 \end{array}\right): ranghi 22, pivot nelle colonne 11 e 33, libere x2,x4x_2, x_4. Si ha x3=1−x4x_3 = 1 - x_4, x1=2−2x2−2x4x_1 = 2 - 2x_2 - 2x_4, cioè X=(2,0,1,0)+x2(−2,1,0,0)+x4(−2,0,−1,1)X = (2,0,1,0) + x_2(-2,1,0,0) + x_4(-2,0,-1,1): soluzione particolare più nucleo.

Parametri e matrici di trasformazione

Errori tipici

  • Applicare operazioni sulle colonne per risolvere sistemi (invalida la soluzione).
  • Moltiplicare una riga per un'espressione col parametro che può annullarsi.
  • Usare righe "vecchie" per creare zeri: si distruggono i risultati precedenti.
  • Non applicare le operazioni anche alla colonna dei termini noti BB o alla matrice identità.

Esercizi su questo argomento

Teoria collegata