Lab03(operazioni su matrici)
Lab03(operazioni su matrici)
Operazioni su Matrici
Somma e sottrazione
Operazioni di algebra lineare:
–
–
Addizione/sottrazione di matrici
Per matrici di identiche dimensioni la somma
è definita termine a termine:
–
Moltiplicazioe
Divisione
F(r,c) = A(r,c) + B(r,c)
Operazioni elemento-per-elemento
Funzioni di base per matrici
Matrici di numeri casuali
1
il comando F = A + B significa
–
Per ogni coppia riga colonna r,c
Addizione “elemento
per elemento”
2
Lab03(operazioni su matrici)
Lab03(operazioni su matrici)
Moltiplicazione di matrici
(Algebra Lineare)
Per esempio:
In algebra lineare, l’espressione F = A * B significa
F(r, c) = ∑ A(r, k) * B(k, c)
k
–
3
Note:
– I vettori devono essere di dimensioni identiche!
– Un addendo può essere scalare (viene ripetuto)
– La sottrazione è identica.
Ogni elemento è il prodotto scalare di una riga
della prima matrice per una colonna della
seconda
=
4
*
Lab03(operazioni su matrici)
Lab03(operazioni su matrici)
Nota bene:
–
–
Questa operzione solitamente non è
commutativa :
A*B ≠ B*A
Il numero di colonne della 1a deve coincidere
con il numero di righe della 2a
=
n xm
Per esempio: qui la moltiplicazione funziona in
entrambe le direzioni ma non è commutativa:
*
n x k
k xm
5
Ben diverso!
6
Lab03(operazioni su matrici)
Lab03(operazioni su matrici)
E qua non funziona per niente:
Applicazioni della moltiplicazione
Sistema di n equazioni in m incognite (le x)
a11 x1
a21 x1
+ a12 x2 K + a1m xm = b1
+ a22 x2 K + a11 xm = b2
M
an1 x1
7
8
O
+ an 2 x1
+ anm xm
M
= bn
Lab03(operazioni su matrici)
2 x1
4 x1
Per esempio:
6 x1
+ 3 x2
+ 2 x2
− 7 x2
In forma matriciale:
con
+ 3 x3
+ 9 x3
+ 2 x3
Lab03(operazioni su matrici)
=7
=5
=1
= b1
a21 x1
+ a22 x2 K
= b2
an1 x1
 x1 
x =  x2 
 x3 
+ a12 x2 K + a1m xm
M
A*x=b
 2 3 3
A = 4 2 9 
6 − 7 2
a11 x1
7 
b = 5
1 
9
In generale:
–
–
–
+ a11 xm
O
+ an 2 x1
M
+ anm xm
= bn
A*x=b
Vettori colonna
(minuscola)
A è una n per m
x è una m per 1
b è una n per 1
10
Lab03(operazioni su matrici)
Lab03(operazioni su matrici)
Utilizzi:
–
Tensioni in statica
Flussi in idraulica
Flussi di calore
–
es.
–
–
–
–
–
Corrente nei circuiti
Flussi di traffico
Economia
Divisione di matrici
Ricordiamo il comando eye(n)
R1
v
i1
i2
R2
 R1 + R2
 R
2

11
–
Questa è la matrice identità
–
per la moltiplicazione, I
Per ogni matrice A
A*I=I*A=A
R3
− R2   i1  v 
*
=
− (R2 + R3 ) i2  0
Opportunamente
dimensionate!
12
Lab03(operazioni su matrici)
Lab03(operazioni su matrici)
Poniamo di avere per le matrici quadrate A e B:
Per esempio:
A*B=B*A=I
quindi definiamo l’inversa
A = B–1
A ^ -1
B = A–1
In Matlab:
o inv(A)
Quando esiste A–1 ?
– A è quadrata
– A il determinante non nullo (det(A))
13
14
Lab03(operazioni su matrici)
Lab03(operazioni su matrici)
Per risolvere A * x = b
– Assumiamo che A sia quadrata e det(A) ≠ 0
–
Per esempio:
Verifichiamo:
Moltiplichiamo entrambi i membri per A–1 a
sinistra
A–1 *A * x = A–1* b
=I
=x
quindi
–
15
x = A–1* b
In Matlab, x = A \ b o x = inv(A)*b
Barra inversa
(backslash)
16
Lab03(operazioni su matrici)
Lab03(operazioni su matrici)
Operazioni elemento-per-elemento
Le operazioni elementari (oltre alla somma e differenza)
possono essere svolte elmento per elemento usando la
notazione puntata (N.B. A e B devono essere della stessa
dimensione!)
– moltiplicazione
F = A .* B F(r,c) = A(r,c) * B(r,c)
– divisione
F = A ./ B F(r,c) = A(r,c) / B(r,c)
– potenza:
F = A .^ B F(r,c) = A(r,c) ^ B(r,c)
Il punto!
17
Per esempio:
18
Lab03(operazioni su matrici)
Uno può essere scalare: a = [ 1 2 3 ]
Lab03(operazioni su matrici)
b=2
Le funzioni predefinite funzionano anche per
vettori (elemento per elemento):
–
–
–
–
19
20
log , exp
Trigonometriche
round, ceil, abs
etc.
Lab03(operazioni su matrici)
Lab03(operazioni su matrici)
Funzioni per i vettori
Altre funzioni per un vettore A:
–
Alcune funzioni predefinite analizzano un vettore
e danno come risultato un valore. Per esempio:
–
–
–
–
–
–
Somma degli elementi: sum(A)
Prodotto degli elementi: prod(A)
Minimo: min(A)
Massimo: max(A)
Mediana: median(A)
Media: mean(A)
Deviazione Standard: std(A)
Somma degli
elementi
21
22
Lab03(operazioni su matrici)
Lab03(operazioni su matrici)
Applichiandole ad una matrice, queste funzioni
lavorano per colonne!
Possiamo però farle lavorare per righe!
questo 2 significa:
“usa la 2a
dimensione” cioè
lavora per righe!
23
24
Lab03(operazioni su matrici)
Lab03(operazioni su matrici)
Per saperne di più c’è sempre l’help!!!
25
Alcune funzioni
producono due
valori:
–
min e max possono
restituire sia il valore
che la sua posizione
–
Di default viene
restituito solo il primo
risultato
26
Lab03(operazioni su matrici)
Lab03(operazioni su matrici)
Alcune funzioni danno in uscita un vettore
–
Sort (ordinamento)
Oppure
vettori
multipli:
Valori ordinati
Posizioni
originarie
27
28
Lab03(operazioni su matrici)
Lab03(operazioni su matrici)
Attenzione!!! La funzione
sort, se applicata ad una
matrice, ordina le
colonne
indipendentemente!
Per ordinare
mantenendo intatte le
righe, si usa la sortrows!
Questa funzione prende
in ingresso la matrice ed
il numero di colonna
secondo cui ordinarla.
Possono tornare utili anche
questi comandi:
29
flipud(a) : gira la matrice
sotto-sopra
fliplr(a) : gira la matrice
destra-sinistra
30
Lab03(operazioni su matrici)
Lab03(operazioni su matrici)
Con randn
generiamo numeri
casuali con
distribuzione normale
(media µ=0, varianza σ2=1)
Vettori casuali
Il comando rand è utile per generare vettori di
numeri casuali
pseudo-random
σ*randn(r,c) + µ Gaussiana(µ, σ2)
4
4
Uniforme in [0,1]
x 10
3.5
3
2.5
2
1.5
(b-a)*rand(r,c) + a uniforme in [ a, b ]
ceil(rand(10,5)*90) numeri del lotto
31
1
0.5
32
0
-5
-4
-3
-2
-1
0
1
2
3
4
5