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