Vai al contenuto
Geometria e Algebra

Sistemi lineari e metodo di eliminazione di Gauss

Forma matriciale, significato geometrico, operazioni elementari, riduzione a scala, sistemi impossibili e indeterminati, Gauss-Jordan e il costo dell'algoritmo.

Risolvere un sistema di equazioni lineari è il problema più frequente della matematica applicata: le correnti di una rete elettrica, le forze in una struttura reticolare, l’interpolazione di dati, la simulazione di un circuito in SPICE si riducono tutti lì. In questa lezione vediamo come si scrive un sistema in forma matriciale, che cosa significa geometricamente e come lo si risolve con il metodo di eliminazione di Gauss, che è anche l’algoritmo usato dai computer.

Sistemi lineari e forma matriciale

Un sistema di m equazioni lineari in n incognite si scrive

    \[ \begin{cases} a_{11}x_1 + a_{12}x_2 + \dots + a_{1n}x_n = b_1\\ \quad\vdots\\ a_{m1}x_1 + a_{m2}x_2 + \dots + a_{mn}x_n = b_m \end{cases} \qquad\Longleftrightarrow\qquad A\,\mathbf x = \mathbf b \]

dove A è la matrice dei coefficienti (m righe, n colonne), \mathbf x il vettore delle incognite e \mathbf b quello dei termini noti. Affiancando \mathbf b ad A si ottiene la matrice completa (A\,|\,\mathbf b). Se \mathbf b = \mathbf 0 il sistema è omogeneo e ha sempre almeno la soluzione nulla.

Il significato geometrico

Con due incognite ogni equazione è una retta nel piano, e risolvere il sistema vuol dire trovare i punti comuni. Ci sono solo tre possibilità.

Le tre possibilità per un sistema di due equazioni in due incognite
Due rette nel piano: si incontrano in un punto (una sola soluzione), sono parallele e distinte (nessuna soluzione), coincidono (infinite soluzioni, dipendenti da un parametro).

Lo stesso vale in generale: un sistema lineare ha una soluzione, nessuna o infinite. Non può averne esattamente due, perché se \mathbf x_1 e \mathbf x_2 sono soluzioni lo è anche ogni punto della retta che li unisce, \mathbf x_1 + t(\mathbf x_2 - \mathbf x_1): infatti A\big(\mathbf x_1 + t(\mathbf x_2 - \mathbf x_1)\big) = \mathbf b + t(\mathbf b - \mathbf b) = \mathbf b. Con tre incognite ogni equazione è un piano, e le soluzioni sono un punto, una retta, un piano o niente.

Le operazioni elementari

Le soluzioni di un sistema non cambiano se si applicano alle sue equazioni (cioè alle righe della matrice completa) queste operazioni elementari:

  1. scambiare due righe;
  2. moltiplicare una riga per un numero diverso da zero;
  3. sommare a una riga un multiplo di un’altra riga.

Ogni operazione è invertibile (si annulla con un’operazione dello stesso tipo), quindi ogni soluzione del sistema nuovo è soluzione del vecchio e viceversa.

Il metodo di Gauss

L’idea è usare le operazioni elementari per portare la matrice completa in forma a scala: ogni riga comincia con più zeri della precedente. Il primo elemento non nullo di ogni riga si chiama pivot. A quel punto il sistema si risolve dal basso verso l’alto, per sostituzione all’indietro.

Esempio.

    \[ \begin{cases} x + 2y + z = 4\\ 2x + 5y + 3z = 11\\ -x + y + 4z = 9 \end{cases} \]

    \[ \left(\begin{array}{ccc|c} 1 & 2 & 1 & 4\\ 2 & 5 & 3 & 11\\ -1 & 1 & 4 & 9 \end{array}\right) \xrightarrow[R_3 + R_1]{R_2 - 2R_1} \left(\begin{array}{ccc|c} 1 & 2 & 1 & 4\\ 0 & 1 & 1 & 3\\ 0 & 3 & 5 & 13 \end{array}\right) \xrightarrow{R_3 - 3R_2} \left(\begin{array}{ccc|c} 1 & 2 & 1 & 4\\ 0 & 1 & 1 & 3\\ 0 & 0 & 2 & 4 \end{array}\right) \]

Dall’ultima riga 2z = 4, quindi z = 2. Dalla seconda y = 3 - z = 1. Dalla prima x = 4 - 2y - z = 0. Soluzione: (0, 1, 2). Conviene sempre verificarla nella terza equazione originale: 0 + 1 + 8 = 9. Corretto.

Sistemi impossibili e indeterminati

La forma a scala dice subito come stanno le cose.

  • Se compare una riga (0\ 0\ \dots\ 0\,|\,c) con c \ne 0, cioè l’equazione 0 = c, il sistema è impossibile.
  • Altrimenti è risolubile. Le incognite che corrispondono ai pivot si ricavano; le altre sono parametri liberi. Con n incognite e r pivot le soluzioni dipendono da n - r parametri: si dice che sono \infty^{n-r}.

Esempio. x + y - z = 1, 2x + 3y + z = 5, 3x + 4y = 6. Con R_2 - 2R_1 e R_3 - 3R_1 si ottengono le righe (0\ 1\ 3\,|\,3) e (0\ 1\ 3\,|\,3); con R_3 - R_2 l’ultima diventa tutta zero. Restano due pivot e tre incognite: z = t libero, y = 3 - 3t, x = 1 - y + z = -2 + 4t. Le soluzioni sono la retta (x, y, z) = (-2, 3, 0) + t\,(4, -3, 1).

Se l’ultima riga fosse stata (0\ 0\ 0\,|\,1) (per esempio con termine noto 7 al posto di 6 nella terza equazione), il sistema sarebbe stato impossibile: i tre piani non avrebbero un punto comune.

Il metodo di Gauss-Jordan

Proseguendo l’eliminazione anche verso l’alto e dividendo ogni riga per il suo pivot si arriva alla forma a scala ridotta: pivot uguali a 1 e zeri sopra e sotto ogni pivot. Le soluzioni si leggono direttamente, senza sostituzione. Lo stesso procedimento, applicato alla matrice (A\,|\,I), calcola la matrice inversa (lo vedremo nella lezione sulle matrici).

Quanto costa

Per un sistema n\times n l’eliminazione richiede circa \tfrac23 n^3 operazioni. Con n = 1000 sono poco meno di un miliardo, una frazione di secondo per un computer. Le librerie numeriche (LAPACK, usata da MATLAB e NumPy) usano proprio Gauss, in una versione detta fattorizzazione LU, con lo scambio parziale delle righe: a ogni passo si sceglie come pivot l’elemento più grande in valore assoluto della colonna, per non dividere per numeri piccolissimi e limitare gli errori di arrotondamento.

Una nota per gli elettronici

Con il metodo dei nodi, ogni nodo di un circuito lineare dà un’equazione lineare nelle tensioni di nodo (legge di Kirchhoff delle correnti). Un circuito con 500 nodi è un sistema 500\times 500, e un simulatore come SPICE, a ogni passo temporale, non fa altro che costruirlo e risolverlo con l’eliminazione di Gauss, sfruttando il fatto che la matrice è quasi tutta fatta di zeri.

Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
0
Would love your thoughts, please comment.x
()
x