ml - Introduzione interattiva di MATLAB       Vai all'indice del corso

Sistemi di equazioni lineari
Versione 0.6

Indice del modulo

2sel.10 - Soluzione di sistemi di equazioni lineari
2sel.11 - Soluzione di sistema di tre equazioni lineari
2sel.12 - Sistemi multipli di equazioni lineari (con matrici di termini noti ed incognite)
2sel.13 - Sistema multiplo di equazioni lineari
2sel.14 - Matrici di numeri interi con inversa formata da interi
2sel.15 - Matrice di interi con inversa formata da razionali non interi
2sel.30 - Function trace
2sel.31 - Function norm
2sel.32 - Function rank
2sel.40 - Autovalori ed autovettori
2sel.41 - Calcolo di autovalori di matrice 3 x 3
2sel.42 - Calcolo di autovettori ed autovalori

torna all'indice del modulo - del corso

2sel.10 - Soluzione di sistemi di equazioni lineari

Un semplice sistema di equazioni lineari e` il seguente:

a1,1 x1 + a1,2 x2 = v1
a2,1 x1 + a2,2 x2 = v2

In forma matriciale esso si puo` presentare concisamente nella forma   A * x = v

Geometricamente esso si puo` considerare equivalente ad una coppia di equazioni esprimenti due rette del piano, oppure ad una trasformazione lineare che porta un vettore incognito x del piano Oxy in un vettore noto v appartenente allo stesso piano.

Risolvere il sistema di equazioni dato equivale quindi ad individuare il punto di intersezione delle due rette, ovvero ad individuare la trasformazione inversa di quella data, A-1 ed applicarla al vettore noto per ottenere quello incognito.

MATLAB consente di risolvere un tale problema senza passare per la determinazione esplicita della matrice A-1 mediante l'operazione di divisione a sinistra per A rappresentata dalla giustapposizione a sinistra di `` A \ `` ai due membri della equazione   A * x = v   in modo da ottenere:

A * x = v   ==>   x = (A \ A) * x = A \ (A * x) = A \ v

Considerazioni analoghe, ottenibili dalle precedenti passado alle matrici trasposte, portano a:

x * A = v   ==>   x = x * (A / A) = (x * A) / A = v / A

relazione nella quale x e v sono vettori riga e `` / `` rappresenta l'operatore di divisione a destra per una matrice

Le considerazioni precedenti si possono ripetere per matrici di termini noti di aspetto n x n e per vettori (riga o colonna) dei termini noti e delle ingognite di n dimensioni

Osserviamo anche che le considerazioni precedenti hanno bellamente supposta la possibilita` di trovare una soluzione unica del sistema, ovvero di poter intersecare le due rette, ovvero di poter invertire la matrice A. Questa possibilita`, notoriamente, richiede che siano soddisfatte determinate condizioni.

torna all'indice del modulo - del corso

2sel.11 - Soluzione di sistema di tre equazioni lineari

Risolvere il sistema di tre equazioni lineari in tre incognite determinato dalla seguente matrice quadrata A dei coefficienti e dal seguente vettore colonna dei termini noti v:

>> A = pascal(3)
A =
     1     1     1
     1     2     3
     1     3     6
>> v = [3;1;4]
v =
     3
     1
     4
>> x = A \ v
x =
    10
   -12
     5

Si verifica la bontà del risultato moltiplicando la matrice dei coefficienti per il vettore colonna dei valori trovati per le incognite

>> A * x
ans =
     3
     1
     4

torna all'indice del modulo - del corso

2sel.12 - Sistemi multipli di equazioni lineari (con matrici di termini noti ed incognite)

Piu` estesamente possiamo considerare sistemi di nr equazioni con matrici di aspetto nr x nc per i termini noti e matrici di incognite ancora di aspetto nr x nc. Questi sistemi si possono considerare ottenuti affiancando nc sistemi lineari di nr equazioni in nr incognite aventi la stessa matrice dei coefficienti del tipo nr x nr.

Estendendo le considerazioni precedenti si ottiene:

A * X = V   ==>   X = (A \ A) * X = A \ (A * X) = A \ V

Considerazioni analoghe, ottenibili dalle precedenti passado alle matrici trasposte, portano a:

X * A = V   ==>   X = X * (A / A) = (X * A) / A = V / A

torna all'indice del modulo - del corso

2sel.13 - Sistema di equazioni lineari multiplo

Consideriamo il sistema di equazioni A X = B, con la A precedente e la matrice di termini noti 3 x3 data dalla function magic; risolviamo tale sistema e verifichiamo la bonta` del risultato.

>> B = magic(3)
B =
     8     1     6
     3     5     7
     4     9     2
>> X = A\B
X =
    19    -3    -1
   -17     4    13
     6     0    -6
>> A*X
ans =
     8     1     6
     3     5     7
     4     9     2

torna all'indice del modulo - del corso

2sel.14 - Matrici di numeri interi con inversa formata da interi

Si osserva che i sistemi precedenti riguardano coefficienti e termini noti interi e portano a soluzioni costituite anch'esse da interi. Questa non e` una situazione generale, ma dipende dalla particolare matrice dei coefficienti adottata: essa presenta determinante uguale ad 1:

>> A = pascal(3)
A =
     1     1     1
     1     2     3
     1     3     6
>> d = det(A)
d =
     1

In effetti tutte le matrici di interi con determinante uguale ad 1 (come le matrici fornite dalla function pascal), oltre ad essere invertibili, possiedono una matrice inversa con componenti tutti interi:

>> InvA = inv(A)
InvA =
     3    -3     1
    -3     5    -2
     1    -2     1

torna all'indice del modulo - del corso

2sel.15 - Matrice di interi con inversa formata da razionali non interi

La seconda matrice 3 x 3 considerata in precedenza, la B, presenta invece determinante diverso da 1 e matrice inversa con componenti razionali non tutti interi:

>> B = magic(3)
B =
     8     1     6
     3     5     7
     4     9     2
>> dB = det(B)
dB =
  -360
>> InvB = inv(B)
InvB =
    0.1472   -0.1444    0.0639
   -0.0611    0.0222    0.1056
   -0.0194    0.1889   -0.1028

Piu` precisamente gli componenti della InvB devono essere razionali multipli interi di 360, il determinante della B; questo lo si verifica battendo la direttiva format rat:

>> format rat
>> inv(B)
ans =
    53/360      -13/90        23/360
   -11/180        1/45        19/180
    -7/360       17/90       -37/360

torna all'indice del modulo - del corso

2sel.30 - Function trace

La function trace fornisce la traccia di una matrice, somma delle sue componenti appartenenti alla sua diagonale principale.

t = trace(A) equivale a t = sum(diag(A))

torna all'indice del modulo - del corso

2sel.31 - Function norm

La function norm fornisce la norma di un vettore o di una matrice, cioe` una grandezza che valuta la grandezza delle componenti dell'argomento.

torna all'indice del modulo - del corso

2sel.32 - Function rank

La function rank fornisce una stima del numero di righe o di colonne indipendenti di una matrice.

k = rank(A) fornisce il numero di valori singolari di A piu` grandi della tolleranza per default max(size(A)) * norm(A) * eps .

k = rank(A,tol) fornisce il numero di valori singolari di A piu` grandi della tolleranza scelta dall'utente tol.

torna all'indice del modulo - del corso

2sel.40 - Autovalori ed autovettori

Matrici quadrate piuttosto semplici sono le matrici reali che presentano componenti diversi da 0 solo sulla diagonale principale. Esse corrispondono a trasformazioni lineari che si ottengono con dilatazioni nelle direzioni degli assi di riferimento proporzionali ai corrispondenti valori sulla diagonale principale. Ad es. si può controllare facilmente che la matrice

>> H = [2 0 0 ; 0 3 0 ; 0 0 -1]
H =
      2            0            0
      0            3            0
      0            0           -1

esprime una dilatazione per il fattore 2 per la dimensione x, una dilatazione per il fattore 3 per la dimensione y ed una dilatazione per il fattore -1 (riflessione) per la dimensione z. Queste matrici si possono esprimere come somme di proiettori sugli assi di riferimento.

Matrici più generali esprimono trasformazioni corrispondenti a dilatazioni in direzioni mutuamente ortogonali ma diverse da quelle degli assi. I vettori che danno queste direzioni sono detti autovettori della matrice, o della trasformazione lineare; i fattori di dilatazione sono detti autovalori della matrice. Queste matrici si possono ricondurre alla forma diagonale con un cambiamento del sistema di riferimento che assume come versori della base vettori proporzionali agli autovettori. Non tutte le matrici però hanno autovalori reali e diversi da 0 e quindi non tutte le matrici corrispondono a trasformazioni lineari aventi la precedente interpretazione geometrica. La determinazione degli autovettori e degli autovalori di una matrice in MATLAB si ottiene con la function eig.

torna all'indice del modulo - del corso

2sel.41 - Calcolo di autovalori di matrice 3 x 3

Ricavare gli autovalori della matrice seguente inserita componente per componente:

>> M = [0 -6 -1 ; 6 2 -16 ; -5 20 -10]
M =
      0           -6           -1
      6            2          -16
     -5           20          -10
>> format short
>> lam = eig(M)
lam =
  -3.0710
  -2.4645 +17.6008i
  -2.4645 -17.6008i

torna all'indice del modulo - del corso

2sel.42 - Calcolo di autovettori ed autovalori

La funzione eig è in grado di fornire anche gli autovettori della matrice

>> [V,D] = eig(M)
V =
   0.8326            -0.2440 - 0.0016i  -0.2440 + 0.0016i
   0.3553            -0.1993 + 0.6484i  -0.1993 - 0.6484i
   0.4248             0.5662 + 0.3996i   0.5662 - 0.3996i
D =
  -3.0710                  0                  0
        0            -2.4645 +17.6008i        0
        0                  0            -2.4645 -17.6008i

torna all'indice del modulo - del corso