Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Nel capitolo precedente abbiamo visto come per risolvere problemi legati allo studio degli spazi
vettoriali lo strumento tecnico fondamentale sia la risoluzione di sistemi di equazioni lineari.
In questo capitolo ci occuperemo di studiare come si risolve un sistema lineare. Nel presente
paragrafo introdurremo alcune definizioni e descriveremo un algoritmo che permette di risolvere tali
sistemi, noto come algoritmo di Gauss.
...
am1 x1 + am2 x2 + . . . + amn xn = bm
o (in forma abbreviata):
n
aij xj = bi [i = 1, . . . , m],
j=1
dove gli elementi aij , bi ∈ K sono detti rispettivamente coefficienti e termini noti delle equazioni del
SL. Si chiama soluzione di tale SL ogni n-pla z = (z1, z2, . . . , zn) ∈ K tale che:
n
n
aij zj = bi [i = 1, . . . , m]
j=1
[cioè che trasformi le m equazioni del sistema in m uguaglianze in K]. Un SL privo di soluzioni è
detto incompatibile; altrimenti è detto compatibile o risolubile.
Un SL(m, n, K) è detto omogeneo [abbreviato SLO(m, n, K)] se i suoi termini noti sono tutti
nulli. Ovviamente un SLO è sempre compatibile: infatti ammette come soluzione la n-pla nulla
0 = (0, 0, . . . , 0), detta soluzione banale. Le altre sue (eventuali) soluzioni sono dette autosoluzioni.
Infine, assegnato un SL(m, n, K), sostituendo i termini noti con 0, si ottiene un SLO(m, n, K),
detto sistema lineare omogeneo associato al SL dato.
Osservazione 1. Con il prodotto righe per colonne è possibile ottenere una scrittura ”matriciale”
dei sistemi di equazioni lineari. Assegnato infatti il SL(m, n, K):
n
aij xj = bi [i = 1, . . . , m],
j=1
x1 b1
M
indichiamo con X la colonna ... delle indeterminate, con b = ... ∈ m,1(K) la colonna
M
xn bm
dei termini noti e con A = (aij ) ∈ m,n(K) la matrice dei coefficienti del SL. Eseguendo il prodotto
righe per colonne delle matrici A ed X, si ha:
a11 x1 + · · · + a1n xn b1
a21 x1 + · · · + a2n xn b2
AX = .. = . = b.
. ..
am1 x1 + · · · + amn xn bm
Pertanto il SL assegnato può essere scritto nella forma:
AX = b.
66 G. CAMPANELLA APPUNTI DI ALGEBRA PER INFORMATICA
M
La matrice A b ∈ m,n+1(K) è detta matrice completa (o matrice orlata) del SL AX = b e
M
lo individua completamente. Esiste un’ovvia corrispondenza biunivoca tra m,n+1(K) e l’insieme dei
SL(m, n, K). Quanto alle incognite, è chiaro che il loro nome è arbitrario e può essere modificato;
quel che conta è il numero delle incognite ed il loro ordine.
n
È evidente che le eventuali soluzioni z = z1 , ... ,zn ∈ K del SL(m, n, K) AX = b corrispon-
z1
.
M
dono biunivocamente alle matrici colonna z = .. ∈ n,1(K) tali che Az = b. [Per tale motivo
M
zn
n
è opportuno identificare z con z, cioè identificare K con (K)].
n,1
Si osservi infine che ogni soluzione z = z1, ... , zn del SL AX = b esprime la colonna b come
combinazione lineare delle colonne di A. Infatti risulta:
z1
. n
b = Az = A(1) ... A(n) .. = A(i) zi .
i=1
zn
Due esempi. (1) È assegnato il SL(1, 3, R ) { x1 = 1 . Tale sistema ha tre incognite (di cui x1
è ragionevolmente la prima). In forma matriciale si scrive
x1
( 1 0 0 ) x2 = ( 1 ).
x3
Tale SL è compatibile e le sue soluzioni sono le terne (1, b, c) ∈ R , ∀ b, c ∈ R .
3
1 0 1
(2) È assegnato un SL con matrice completa . Si tratta del SL(2, 2, R )
1 0 2
x1 = 1 1 0 x1 1
[ovvero, scritto in in forma matriciale, = ].
x1 = 2, 1 0 x2 2
Tale sistema è manifestamente incompatibile (in quanto implica 1 = 2).
x1 = 0
Il SLO(2, 2, R ) ad esso associato è Le soluzioni di tale SLO formano il sottoinsieme
x1 = 0.
Σ0 = {(0, t), ∀ t ∈ R } di R . Si tratta del sottospazio vettoriale (0, 1) di R . Che l’insieme delle
2 2
soluzioni di tale SLO sia uno spazio vettoriale non è un fatto casuale, come ora vedremo.
Sia AX = b un SL compatibile e non omogeneo. In tal caso l’insieme Σ delle sue soluzioni non
può mai essere un sottospazio vettoriale di K [infatti 0 ∈ Σ]. Tuttavia, come ora vedremo, Σ è
n
in corrispondenza biunivoca con il sottospazio vettoriale Σ0 delle soluzioni del suo SLO associato.
Dim. (⊆). Sia z ∈ Σ [cioè Az = b]. Poiché, per ipotesi, Az0 = b, allora:
A z − z0 = Az − Az0 = b − b = 0
CAP. 3.1 GENERALITà E ALGORITMO DI GAUSS 67
Poiché Σ non è uno spazio vettoriale, ”non ha diritto” ad una dimensione; tuttavia possiamo
in qualche modo attribuirgli la dimensione di Σ0. Precisamente, se dim(Σ0) = t, diremo che il
SL AX = b (se compatibile) ha ∞ soluzioni. Questa terminologia proviene dal fatto che, come
t
Vogliamo ora risolvere un SL, cioè determinarne le soluzioni. Cominciamo dai SL più semplici:
i sistemi di equazioni lineari a scala (o a gradini). Premettiamo una definizione.
soluzioni. Con la convenzione fatta sopra (cioè ∞ = 1) abbiamo quindi ottenuto il seguente risultato.
0
t
2 , 1 − 2 , t, t , ∀ t ∈ R .
t
Utilizzando la Prop. 2, possiamo ottenere subito le soluzioni del SLO associato. Infatti, una
soluzione del SL dato è z 0 = (0, 1, 0, 0) (ottenuta ponendo t = 0). Pertanto
Σ0 = Σ − z 0 = 2t , − 2t , t, t , ∀ t ∈ R = ( 12 , − 12 , 1, 1 = (1, −1, 2, 2 .
Tali operazioni [che del resto abbiamo già eseguito nella risoluzione ”empirica” dei SL incontrati
nel capitolo precedente] evidentemente non cambiano le soluzioni del sistema, e dunque trasformano
il SL in un altro ad esso equivalente.
Se al sistema assegnato AX = b si sostituisce la sua matrice completa M = A b , le tre ope-
razioni elementari (sulle equazioni) si trasformano nelle corrispondenti operazioni elementari di riga,
che indicheremo schematicamente come segue:
(i) (j)
I[M ↔ M ];
(i) (i)
II[M → cM ], con c = 0;
(i) (i) (j)
III[M → M + cM ], con i = j e c ∈ K.
(i) (i) (j)
Ad esempio, l’operazione III sopra considerata sostituisce alla riga M la riga M +cM [ovvero
sostituisce alla i–esima equazione la somma della i–esima con la j–esima moltiplicata per c].
Per abbreviare le notazioni, converremo di denotare tale operazione con III[(ia) → (ia) + c(j a)] ed
usare analoghe notazioni per le altre due operazioni.
Oltre alle tre operazioni elementari di riga, nell’algoritmo di Gauss può talvolta essere necessario
eseguire uno acambio di colonne della matrice A. Ciò evidentemente corrisponde ad uno scambio delle
variabili del SL. In tal caso sarà poi necessario, al termine dell’algoritmo, procedere allo scambio di
variabili opposto.
1◦ passo. Si elimina ogni eventuale riga nulla di M [corrispondente all’equazione banale 0 = 0].
2◦ passo. Si fa in modo che risulti M(1) = 0 (cioè A(1) = 0). Ciò può essere ottenuto scambiando
ad esempio la colonna nulla A(1) con una successiva colonna A(i) non nulla [ed è meglio scegliere
l’ultima colonna non nulla di A, per evitare di dover ripetere tale operazione].
3◦ passo. Si fa in modo che risulti a11 = 1. A tale scopo, se a11 = 0 e ad esempio ai1 = 0, si ese-
(1) (i)
gue l’operazione I[M ↔M ] e si ottiene quindi una nuova matrice con a11 = 0; successivamente,
(1) (1)
se a11 = 1, si esegue l’operazione II[M → 1
a11 M ] e si ottiene a11 = 1.
4◦ passo. Si fa in modo che risulti: a21 = a31 = · · · = am1 = 0. A tale scopo, basta eseguire (per
(i) (i) (1)
i = 2, . . . , m) le operazioni III[M →M − ai1 M ].
A questo punto la matrice completa M del SL assegnato si è trasformata in una matrice del tipo
CAP. 3.1 GENERALITà E ALGORITMO DI GAUSS 69
[ma si noti che in tale matrice gli elementi a12 , ... della seconda e delle successive colonne non sono
ovviamente gli stessi della matrice A; abbiamo mantenuto le stesse lettere soltanto per semplificare
le notazioni]:
1 a12 . . . . . .
0 a22 . . . . . .
0 . . . . . . . . . ,
0 am 2 . . . . . .
con m ≤ m (e m < m a seguito di cancellazione di righe nulle).
Si ripete ora il blocco dei quattro passi sopra descritto, a partire dall’elemento che si trova sulla
seconda riga e seconda colonna di tale matrice. Si eliminano quindi eventuali righe nulle e si fa in
modo (operando relativamente alla seconda colonna) che la matrice completa del SL diventi del tipo:
1 a12 ... ...
0 1 ... ...
0 0 a . . .
33
... ... ... ...
0 0 am 3 . . . . . .
(con m ≤ m ). Si ripete quindi il blocco dei quattro passi a partire dalla terza riga e terza colonna,
dalla quarta ... e cosı̀ via.
Se nel corso del procedimento si ottiene una riga della forma 0 0 . . . 0 b , con b = 0, il SL è
incompatibile [ed il procedimento di Gauss ovviamente si interrompe]. In caso contrario il SL si
riduce ad un SL a scala, come richiesto. Si osservi infine che, se nel procedimento sono stati necessari
scambi di variabili, sarà necessario ripristinare le variabili iniziali, procedendo agli scambi opposti.
Illustreremo l’algoritmo con un paio di esempi.
x1 + 2x2 + 2x4 = 1
x3 + x4 = 0.
La matrice completa del SL è
1 2 3 4 1
0 0 −1 4 0
.
1 2 0 2 1
0 0 1 1 0
Per completare il primo blocco dell’algoritmo è sufficiente procedere con III[(3a) → (3a) − (1a)]. Si
ottiene:
1 2 3 4 1
0 0 −1 4 0
.
0 0 −3 −2 0
0 0 1 1 0
Iniziamo il secondo blocco dell’algoritmo. Poiché la seconda colonna è nulla [a partire dall’elemento
di posto (2, 2)], si procede (ad esempio) allo scambio di variabili x2 ↔ x4. Si pone quindi:
y1 = x1, y2 = x4, y3 = x3, y4 = x2
e si ottiene un SL avente matrice completa:
1 4 3 2 1
0 4 −1 0 0
.
0 −2 −3 0 0
0 1 1 0 0
Con II[(2a) → 14 (2a)] si ottiene:
1 4 3 2 1
0 1 − 14 0 0
.
0 −2 −3 0 0
0 1 1 0 0
70 G. CAMPANELLA APPUNTI DI ALGEBRA PER INFORMATICA
Poi, con III[(3a) → (3a) + 2(2a)] e con III[(4a) → (4a) − (2a)] si ottiene:
1 4 3 2 1
0 1 −1 0 0
4
0 0 − 7 0 0 .
2
5
0 0 4 0 0
Iniziamo ora il terzo blocco dell’algoritmo. Con II[(3a) → − 27 (3a)] si ottiene:
1 4 3 2 1
0 1 −4 0 0
1
.
0 0 1 0 0
5
0 0 4 0 0
Infine, con III[(4a) → (4a) − 54 (3a)], si ottiene:
1 4 3 2 1
0 1 − 14 0 0
.
0 0 1 0 0
0 0 0 0 0
Veniamo ora al quarto ed ultimo blocco dell’algoritmo: basta eliminare la quarta riga (che è nulla)
ed otteniamo una matrice a gradini. Si è cosı̀ ottenuto il SL(3, 4, R ):
y1 + 4y2 + 3y3 + 2y4 = 1
y2 − 1
y3 = 0
4
y3 = 0.
Posto y4 = t, si ha: y3 = 0, y2 = 0, y1 = 1 − 2t. Ripristiniamo le variabili di partenza:
x1 = y1 = 1 − 2t, x2 = y4 = t, x3 = y3 = 0, x4 = y2 = 0.
Pertanto l’insieme Σ delle soluzioni del SL assegnato è:
Σ = 1 − 2t, t, 0, 0 , ∀ t ∈ R .
[si osservi che è inutile considerare la matrice completa del SLO, in quanto la colonna dei termini
noti è nulla e non viene alterata nel corso dell’algoritmo].
Ripetiamo i passi dell’algoritmo appena eseguito. Con III[(2a) → (2a) + (1a)] otteniamo
1 2 0 3
0 3 1 1.
0 3 1 1
Con II[(2a) → 1
3 (2a)] otteniamo
1 2 0 3
0 1 1 1
3 3
0 3 1 1
e con III[(3 ) → (3 ) − 3(2 )] otteniamo
a a a
1 2 0 3
0 1 1 1 .
3 3
0 0 0 0
Eliminiamo la terza riga (nulla) ed otteniamo il SLO(2, 4, R ) a scala
x1 + 2x2 + 3x4 = 0
1 1
x2 + 3 x3 + 3 x4 = 0.
Poniamo x3 = t, x4 = s ed otteniamo
x2 = − 13 (t + s), x1 = 2
3 t− 7
3 s.
Ne segue che l’insieme delle soluzioni di tale SLO è
Σ0 = 23 t − 73 s, − 13 (t + s), t, s , ∀ t, s ∈ R
ovvero
2
Σ0 = 3, − 13 , 1, 0 , − 73 , − 13 , 0, 1 .
Risolvere un SL con l’algoritmo di Gauss può essere molto vantaggioso se si è dotati della velocità
di un computer o se si dispone di molta pazienza (e molta carta!). Quando poi il SL non ha
coefficienti tutti numerici, ma alcuni di essi dipendono da parametri, l’algoritmo di Gauss si complica
notevolmente, in quanto si deve tener conto del possibile annullamento delle espressioni dipendenti da
parametri, che vengono via via a determinarsi tramite le operazioni fondamentali di riga.
Per questo è utile saper risolvere un SL anche con mezzi più teorici, cioè utilizzando i classici
teoremi di Cramer e di Rouché-Capelli. Quest’ultimo teorema poi è centrale nell’Algebra Lineare,
in quanto ci permette di rappresentare, usando sistemi di equazioni lineari, i sottospazi di uno spazio
vettoriale.
Gli strumenti tecnici che ci serviranno per descrivere tali risultati e pervenire quindi ad un altro
metodo per la risoluzione di un SL sono due: il determinante di una matrice quadrata ed il rango
di una matrice. Di essi ci occuperemo nei due paragrafi successivi.
ESERCIZI PROPOSTI