Francesca Mazzia
Dipartimento Interuniversitario di Matematica Universit`a di Bari
MATLAB: Elementi di Algebra Lineare II
Sistemi lineari.
Sia A∈ Rm×n, x∈ Rn
Ax = b `e un vettore di m componenti.
a1,1x1+ a1,2x2+ . . . + a1,nxn= b1 a2,1x1+ a2,2x2+ . . . + a2,nxn= b2
. . . . . .
am,1x1+ am,2x2+ . . . + am,nxn = bm
Numero di operazioni per calcolare b:
m∗ n moltiplicazioni m∗ (n − 1) addizioni.
Le matrici trasformano un vettore x di dimensione n in un vettore di dimen- sione m, cio`e rappresentano delle trasformazioni tra due spazi.
Possiamo rappresentare una matrice utilizzando le sue colonne:
A = (a1, a2, . . . , an) Il prodotto Ax = b pu`o anche scriversi:
x1a1+ x2a2+ . . . + xnan = b
cio`e il vettore b si ottiene come combinazione lineare dei vettori colonna della matrice A.
>> A = [ 2 6 10; 6 10 14; 10 14 6]
A =
2 6 10
6 10 14
10 14 6
>> x = [ 1;2;3]
x = 1 2
3
>> b=A*x b =
44 68 56
>> b-A*x ans =
0 0 0
>> y=x(1)*A(:,1)+x(2)*A(:,2)+x(3)*A(:,3) y =
44 68 56
>> y-b ans =
0 0 0
Non `e sempre vero che fissato un vettore b di dimensione m, si possa sempre trovare un vettore x per cui Ax = b sia soddisfatta.
E questo il problema della soluzione di sistemi lineari.`
Se b `e il vettore nullo, il sistema si dice omogeneo.
Partizionamento
Il partizionamento `e una decomposizione della matrice in sottomatrici.
Esempio:
possiamo scrivere la matrice
a11 a12 a13 a14 a15 a16 a17
a21 a22 a23 a24 a25 a26 a27 a31 a32 a33 a34 a35 a36 a37
a41 a42 a43 a44 a45 a46 a47 a51 a52 a53 a54 a55 a56 a57
nel seguente modo
A = A11 A12 A13 A21 A22 A23
!
con
A11 = a11 a12 a21 a22
!
A12 = a13 a14 a15 a23 a24 a25
!
>> A = [ 1 2 3 4 5 6 7 2 3 4 5 6 7 8
3 4 5 6 7 8 9 4 5 6 7 8 9 10 5 6 7 8 9 10 11]
A =
1 2 3 4 5 6 7
2 3 4 5 6 7 8
3 4 5 6 7 8 9
4 5 6 7 8 9 10
5 6 7 8 9 10 11
>> A11 = A(1:2,1:2)
A11 =
1 2
2 3
>> A12 = A(1:2,3:5) A12 =
3 4 5
4 5 6
>> A13 = A(1:2,6:7) A13 =
6 7
7 8
>> A21 = A(3:5,1:2) A21 =
3 4
4 5
5 6
>> A22=A(3:5,3:5) A22 =
5 6 7
6 7 8
7 8 9
>> A23=A(3:5,6:7) A23 =
8 9
9 10
10 11
>>
Se le partizioni sono compatibili possiamo trattare le sottomatrici come scalari nell’eseguire le operazioni tra matrici.
Per esempio:
A11 A12 A21 A22
!
+ B11 B12 B21 B22
!
= A11+ B11 A12+ B12 A21+ B21 A22+ B22
!
A11 A12 A21 A22
! B11 B12 B21 B22
!
= A11B11+ A12B21 A11B12+ A12B22 A21B11+ A22B21 A21B12+ A22B22
!
Vettori Ortogonali
Siano x e y ∈ Rn, se xTy = 0 i due vettori si dicono ortogonali.
Esempio:
>> x=[1;3;1]
x = 1 3
1
>> y=[2;0;-2]
y = 2 0 -2
>> x’*y ans =
0
xTx =Pni=1x2i, quindi xTx > 0.
Esempio:
>> x=[1;3;1]
x = 1 3 1
>> x’*x ans =
11
Se xTx = 1, il vettore x si dice unitario.
Esempio:
>> x=[1/2;sqrt(1/2);1/2]
x =
0.5000 0.7071 0.5000
>> x’*x ans =
1
Dipendenza lineare di vettori
Dati r vettori x1, x2, . . . , xr, diversi dal vettore nullo, se α1x1+ α2x2+ . . . + αrxr= 0
con gli αi 6= 0, i vettori si dicono linearmente dipendenti. Se α1x1+ α2x2+ . . . + αrxr= 0
solo se αi = 0 per i = 1, 2, . . . , r allora i vettori xi, i = 1, 2, . . . , r sono linearmente indipendenti.
Se vi `e un αi 6= 0, ve ne deve essere almeno un altro, e alcuni dei vettori xi
possono esprimersi come combinazione lineare degli altri.
Infatti se x1, x2, . . . , xr sono l.d. con αr 6= 0 si ha:
xr =−α1
αrx1− α2
αrx2− . . . − αr−1 αr xr−1.
Se i vettori xi sono l.i., un qualunque sottoinsieme di essi `e ancora l.i..
Un insieme di vettori tra loro ortogonali sono l.i..
Una base `e l’insieme minimo di vettori l.i.. che generano un insieme dato.
La base canonica di Rm `e costituita dai vettori e1, e2,· · · , em
con elementi (ei)j = 0 per i6= j e (ei)i = 1.
Dato un insieme di vettori
{x1, x2, . . . , xn}, xi ∈ Rm
si dice rango dell’insieme il numero massimo di vettori linearmente indipen- denti che `e possibile estrarre dall’insieme.
Poich`e il massimo numero di vettori l.i. in tutto Rm `e m, il rango di un insieme di vettori di Rm non pu`o superare m.
Data una matrice A, si dice rango della matrice, e si indica con rank(A), il rango dell’insieme dei suoi vettori colonna.
Esempio:
>> A=rand(3) A =
0.9501 0.4860 0.4565 0.2311 0.8913 0.0185 0.6068 0.7621 0.8214
>> rank(A) ans =
3
>> det(A) ans =
0.4289
>> A=[3 0 0; 0 4 0;0 0 0]
A =
3 0 0
0 4 0
0 0 0
>> det(A) ans =
0
>> rank(A) ans =
2
Se a∈ Rm e b∈ Rn, si ha:
W = abT =
a1b1 a1b2 . . . a1bn a2b1 a2b2 . . . a2bn
... ... . .. ... amb1 amb2 . . . ambn
.
La matrice W `e una matrice di rango 1, cio`e le sue colonne generano uno spazio di dimensione 1. Ogni matrice di rango 1 pu`o essere espressa nella forma abT. Le matrici di rango uno non vengono mai memorizzate esplicita- mente, ma si utilizza sempre la loro rappresentazione con i vettori a e b.
Esempio:
>> a=[4;2;7]
a = 4 2 7
>> b=[2;4;1;3]
b = 2 4 1 3
>> W=a*b’
W =
8 16 4 12
4 8 2 6
14 28 7 21
>> rank(W) ans =
1
Come eseguiamo il prodotto W x ? c = W x = (abT)x = a(bTx) = (bTx)a bTx `e uno scalare quindi calcoliamo prima
µ = bTx e poi
c = µa Numero di operazioni:
2n moltiplicazioni n− 1 addizioni.
Infatti:
>> x=[2;4;6;8]
x = 2 4 6 8
>> c=W*x c =
200 100 350
>> (b’*x)*a ans =
200 100 350
Consideriamo le due matrici A ed
A =ˆ
a1,1 a1,2 . . . a1,n b1 a2,1 a2,2 . . . a2,n b2 ... ... . .. ... ... am,1 am,2 . . . am,n bm
= (A, b)
detta matrice ampliata, avente in comune con A le prime n colonne, mentre l’ultima colonna `e il vettore b.
Si ha il seguente Teorema, noto come teorema di Rouch´e-Capelli:
Condizione necessaria e sufficiente affinch`e il sistema Ax = b ammetta solu- zioni `e che il rango di A e quello di ˆA coincidano.
Se A `e una matrice quadrata di ordine n allora le seguenti proposizioni sono equivalenti:
1. Per ogni vettore b∈ Rn, il sistema Ax = b ammette soluzione 2. Se una soluzione del sistema esiste essa `e unica
3. Per ogni x∈ Rn, Ax = 0 implica x = 0
4. Le colonne (righe) di A sono linearmente indipendenti 5. La matrice A `e invertibile
6. det(A)6= 0
det(A) =
n
X
j=1
(−1)i+jai,jdet(Ai,j),
L’ultima relazione pu`o essere fuorviante, perch`e il determinante cambia sca- lando la matrice. Infatti
det(σA) = σndet(A) Se n = 30 e det(A) = 1 allora
det(0.1A) = 10−30
Non `e facile verificare al calcolatore quando questa quantit`a `e veramente 0.
Il calcolo del determinante con la regola di Laplace richiede pi`u di n! molti- plicazioni,
n = 16
se il nostro computer esegue una moltiplicazione ogni 10−10 secondi tempo di calcolo : 16!*1e-10/60 ≈ 35 minuti.
Esempio:
>> A=rand(30);
>> det(A) ans =
1.0957
>> det(0.1*A)
ans =
1.0957e-30
>> A=rand(100);
>> det(A) ans =
6.5597e+25
>> B=0.1*A;
>> det(B) ans =
6.5597e-75
>> (0.1^100)*det(A) ans =
6.5597e-75
>> B=0.01*A;
>> det(B) ans =
6.5597e-175
Propriet` a del Determinante
1) Se A `e una matrice triangolare (superiore od inferiore), allora det(A) `e uguale al prodotto degli elementi sulla diagonale.
>> L=[1 0;3 4]
L =
1 0
3 4
>> det(L) ans =
4
2) Se A e B sono due matrici dell’insieme, allora:
det(AB) = det(A)det(B).
>> A=[1 2;3 4]
A =
1 2
3 4
>> B=[5 6;7 8]
B =
5 6
7 8
>> det(A*B) ans =
4
>> det(A)*det(B) ans =
4
Autovalori e autovettori.
Data una matrice quadrata A ∈ Rn×n, un numero complesso λ si dice au- tovalore di A se esiste un vettore u 6= 0 a componenti reali o complessi tale che:
Au = λu, o
(A− λI)u = 0,
u si dice autovettore di A ed `e soluzione non nulla di un sistema lineare omogeneo.
- Costruzione di un vettore contenente gli autovalori di una matrice casuale B:
>> B=rand(3) B =
0.3795 0.7095 0.1897 0.8318 0.4289 0.1934 0.5028 0.3046 0.6822
>> v = eig(B) v =
1.3891 -0.3661 0.4676
- Costruzione di una matrice diagonale V contenente gli autovalori di B e di una matrice T contenente i corrispondenti autovettori:
>> [T,V]=eig(B) T =
-0.5246 -0.7008 -0.2298 -0.5800 0.7010 -0.2779 -0.6232 0.1324 0.9327
V =
1.3891 0 0
0 -0.3661 0
0 0 0.4676
>> B*T(:,1) ans =
-0.7289 -0.8057 -0.8656
>> B*T(:,1)-V(1,1)*T(:,1)
ans =
1.0e-15 * 0.7772 0.1110 0.4441
>> B*T(:,2)-V(2,2)*T(:,2) ans =
1.0e-15 * 0.1110
0 0.1249
Gli autovalori verificano l’equazione det(A − λI) = 0. Si dimostra che det(A − λI) = p(λ) `e un polinomio di grado n in λ che ha n radici nel campo complesso. p(λ) si chiama polinomio caratteristico.
Si dice raggio spettrale della matrice A, e lo si indica con ρ(A), il massimo modulo degli autovalori di A.
Se u `e un autovettore di A, anche αu, con α6= 0 `e autovettore di A.
Gli autovettori unitari o normalizzati sono tali che uTu = 1.
Esempio:
Data la seguente matrice:
>> A=[1 2;2 1]
A =
1 2
2 1
determiniamone gli autovalori
>> eig(A) ans =
-1 3
calcoliamo la matrice degli autovettori V
>> [V,D]=eig(A) V =
-0.7071 0.7071 0.7071 0.7071
D =
-1 0
0 3
e calcoliamo V0V
>> V’*V ans =
1.0000 0
0 1.0000
Matrici simmetriche.
1) Gli autovalori sono reali
2) Gli autovettori corrispondenti ad autovalori distinti sono ortogonali:
3) Esistono n autovettori unitari ortogonali tra loro.
Siano u1, u2, . . . , un autovettori unitari e sia U = (u1, u2,· · · un)
UTU =
uT1u1 uT1u2 . . . uT1un uT2u1 uT2u2 . . . uT2un
... ... . . . ... uTnu1 uTnu2 . . . uTnun
= I = U UT,
infatti:
uTi uj =
( 0 per i6= j 1 per i = j . La matrice U si dice ortogonale.
Se λ1, λ2, . . . , λngli autovalori si A associati a u1, u2, . . . , une Λ = diag(λ1, λ2, . . . , λn), si ha:
AU = U Λ da cui:
UTAU = Λ
Vediamo un’istruzione MATLAB che ci permette di costruire matrici ortogonali:
ORTH Orthogonalization.
Q = ORTH(A) is an orthonormal basis for the range of A.
That is, Q’*Q = I, the columns of Q span the same space as the columns of A, and the number of columns of Q is the rank of A.
See also SVD, RANK, NULL.
>> A=rand(3) A =
0.8981 0.7135 0.6952 0.8966 0.1679 0.4507 0.2469 0.3731 0.0594
>> Q=orth(A) Q =
-0.7872 0.3997 -0.4697 -0.5744 -0.7524 0.3224 -0.2246 0.5236 0.8218
>> Q’*Q ans =
1.0000 -0.0000 -0.0000 -0.0000 1.0000 0.0000 -0.0000 0.0000 1.0000
>> A=[1 0 0;0 5 0;0 0 0]
A =
1 0 0
0 5 0
0 0 0
>> rank(A) ans =
2
>> Q=orth(A) Q =
0 1
1 0
0 0
>> Q’*Q ans =
1 0
0 1
Esempio:
>> A=[1 2 3;4 5 6;7 8 3;]
A =
1 2 3
4 5 6
7 8 3
>> A=A+A’
A =
2 6 10
6 10 14
10 14 6
>> [T,V]=eig(A) T =
0.4955 0.7664 0.4088 0.4202 -0.6234 0.6594 -0.7602 0.1550 0.6309
V =
-8.2552 0 0
0 -0.8578 0
0 0 27.1130
>> T’*T ans =
1.0000 -0.0000 0.0000 -0.0000 1.0000 -0.0000 0.0000 -0.0000 1.0000
>>
Si dice forma quadratica di una matrice simmetrica l’espressione xTAx con x∈ Rn.
Una matrice simmetrica A si dice:
definita positiva se xTAx > 0 per x6= 0, semidefinita positiva xTAx ≥ 0 per x 6= 0
Una matrice simmetrica A `e definita positiva se e solo se gli autovalori sono tutti positivi.
Se A `e una matrice ad elementi complessi, A `e la matrice con elementi i complessi coniugati degli elementi di A.
La matrice A si dice hermitiana se AT = A.
Trasposta coniugata : AT = AH
Le matrici U per cui UHU = U UH = I si dicono matrici unitarie.
Esempio:
> A=rand(3) A =
0.5075 0.1050 0.0442 0.4366 0.7099 0.4675 0.0516 0.3509 0.9411
>> Q=orth(A) Q =
-0.1982 0.6490 0.7345 -0.6842 0.4450 -0.5778 -0.7018 -0.6171 0.3558
>> Q’*Q ans =
1.0000 -0.0000 -0.0000 -0.0000 1.0000 -0.0000 -0.0000 -0.0000 1.0000
>> Q*Q’
ans =
1.0000 0.0000 0.0000 0.0000 1.0000 -0.0000 0.0000 -0.0000 1.0000
Se λ `e un autovalore di A, λ2 `e un autovalore di A2 ed in genere λr `e un autovalore di Ar per r > 0.
Esempio:
>> A=rand(3) A =
0.0030 0.6674 0.8103 0.2235 0.4112 0.3655 0.7066 0.4878 0.1923
>> eig(A).^5 ans =
3.1290 -0.1199 0.0000
>> eig(A^5) ans =
3.1290 -0.1199 0.0000
Norme vettoriali.
Sia x ∈ Rn, si chiama norma di x, e si indica con kxk, un numero non negativo che soddisfa le seguenti condizioni:
N1) se x `e il vettore nullo, kxk = 0 e viceversa;
N2) se λ `e uno scalare, kλxk = |λ|kxk;
N3) se x ed y sono due vettori, kx + yk ≤ kxk + kyk (disuguaglianza triangolare)
Dalla N3) segue che:
kx − yk ≥ | kxk − kyk | Disuguaglianza di Cauchy-Schwartz:
(xTy)2 ≤ (xTx)(yTy) Sia x = (x1, x2, . . . , xn)T
Norma ∞
kxk∞= max
1≤i≤n|xi|.
Vediamo l’istruzione Matlab per calcolare la Norma ∞ di un vettore:
>> x=[1 2 3 4]
x =
1 2 3 4
>> norm(x,inf) ans =
4
>> max(abs(x))
ans = 4
Norma 1.
kxk1 =
n
X
i=1
|xi|
>> x=[1 2 3 4]
x =
1 2 3 4
>> norm(x,1) ans =
10
La funzione Matlab sum accetta come dato di input un vettore e da come risultato la somma degli elementi del vettore.
>> sum(abs(x)) ans =
10
Norma 2.
kxk2 = (xTx)1/2 .
>> x=[1 2 3 4]
x =
1 2 3 4
>> norm(x,2) ans =
5.4772
>> sqrt(sum(x.^2)) ans =
5.4772
Norme matriciali.
Sia A ∈ Rm×n, si chiama norma di A, e si indica con kAk, un numero non negativo che soddisfa le seguenti condizioni:
M1) kAk = 0 se e solo se A `e la matrice nulla;
M2) Se λ `e uno scalare allora kλAk = |λ|kAk;
M3) Se B `e una matrice avente le stesse dimensioni di A allora:
kA + Bk ≤ kAk + kBk;
M4) Se B `e una matrice il cui numero di righe `e uguale al numero di colonne di A, allora:
kABk ≤ kAkkBk.
Norma matriciale indotta da una norma vettoriale
kAk = max
kxk=1kAxk
Una norma matriciale `e compatibile con una norma su vettori se dato y∈ Rn, kAyk ≤ kAkkyk.
Le norme matriciali indotte sono compatibili con le norme vettoriali.
Norma ∞
kAk∞ = max
1≤i≤n n
X
j=1
|ai,j|.
>> A=rand(4)
A =
0.9501 0.8913 0.8214 0.9218
0.2311 0.7621 0.4447 0.7382
0.6068 0.4565 0.6154 0.1763
0.4860 0.0185 0.7919 0.4057
>> norm(A,’inf’) ans =
3.5846
La funzione Matlab sum accetta anche come dato di input una matrice e da come risultato un vettore contenente la somma degli elementi sulle colonne della matrice.
>> max(sum(abs(A’))) ans =
3.5846
Norma 1
kAk1 = max
1≤j≤n m
X
i=1
|ai,j|.
>> norm(A,1) ans =
2.6735
>> max(sum(abs(A))) ans =
2.6735
Norma 2
kAk2 =qρ(ATA)
>> norm(A,2) ans =
2.4479