Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli Lezione 4 Vettori e Matrici Parte II Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli Matrici: introduzione matematica Cenni di Algebra Matriciale Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli 3 Definizione di Matrice Tutte le variabili numeriche in MATLAB vengono trattate come matrici, ossia come tabelle bidimensionali di numeri, organizzate in righe e colonne: A è una matrice di ordine (n x m) in quanto è formata da n righe ed m colonne Ogni elemento ai,j della matrice A è contraddistinto da un indice di riga (i) e di colonna (j) che ne individua la posizione all’interno della matrice stessa. Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli 4 Vettori Vengono chiamate vettori quelle matrici che hanno o numero di righe o di colonne unitario: v1,1 v2,1 Vettore v Colonna v n ,1 n1 v v1,1 v1, 2 v1,n 1n Vettore Riga Gli scalari altro non sono che matrici formate da una solo riga ed una sola colonna Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli 5 Prodotto Matrice Scalare Data una matrice A di ordine (n complesso, il prodotto: x m) ed un numero c, reale o B = cA è una matrice di ordine (n x m) i cui elementi sono i corrispondenti elementi di A moltiplicati per lo scalare c bi,j = c · ai,j a1,1 a1, 2 a1,m c a1,1 c a1, 2 c a1,m a2,1 a2, 2 a2,m c a2,1 c a2, 2 c a2,m B cA c a a a c a c a c a n , 1 n , 2 n , m n , 1 n , 2 n , m n x m n x m Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli 6 Esempi: c=5 c=5 2 9 a 4 11 4 x 1 3 5 A 6 2 1 4 3x2 10 45 ca 20 55 4 x 1 15 25 c A 30 10 5 20 3x2 Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli 7 Somma Algebrica di Matrici Date due matrici A e B di uguale ordine (n x m), resta definita la matrice C, di ordine (n x m), ottenuta dalla somma algebrica delle matrici date: C = B ± A e i cui elementi sono dati dalla somma algebrica elemento a elemento degli elementi corrispondenti delle matrici A e B. ci,j = bi,j ± ai,j Due Matrici A e B possono essere sommate o sottratte solo se hanno lo stesso ordine. Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli 8 Esempi: b1,1 a1,1 b1, 2 a1, 2 b1,m a1,m b2,1 a2,1 b2, 2 a2, 2 b2,m a2,m CBA b a b a b a n , 1 n , 1 n , 2 n , 2 n , m n , m n x m Somma Vettori riga Somma Matrici 3 5 15 25 18 30 6 2 30 10 36 12 1 4 5 20 6 24 3x2 3x2 3x2 2 9 11 7 5 2 19 1 x 4 9 4 1 x 4 14 13 23 1 x 4 Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli 9 Trasposizione di Matrici Data la matrice A la sua trasposta A' si ottiene scambiando le righe con le colonne: 3 6 1 A 5 2 4 2 x3 3 5 A 6 2 1 4 3x2 A ai, j ai , j a j ,i a 2 ,1 6 a1, 2 Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli 10 Prodotto di Matrici Il prodotto di una matrice A, di ordine (n s), per la matrice B di ordine (s m), è la matrice C, di ordine (n m): C(nm) = A(ns) B(sm) il cui elemento generico ci,j è dato dalla somma dei prodotti degli elementi della riga i-esima della matrice A per i corrispondenti elementi della j-esima colonna della matrice B. S ci , j ai ,k bk , j ai ,1b1, j ai ,2b2, j k 1 ai , S bS , j Due Matrici A e B possono essere moltiplicate fra loro solo se il numero di colonne di A è uguale al numero di righe di B. Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli 11 Prodotto di Matrici Il prodotto di matrici così definito viene anche detto: prodotto righe per colonne Dimensioni esterne C(nm) = A(ns) B(sm) Dimensioni interne Le dimensioni interne devono essere uguali La matrice risultato C ha le dimensioni esterne Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli 12 c1,2 a1,k bk ,2 Esempi a1,1b1,1 a1, 2 b2,1 a1,S bS ,1 a 2,1b1,1 a 2, 2 b2,1 a 2,S bS ,1 AB a b a b a b n , 2 2 ,1 n , S S ,1 n ,1 1,1 3 5 a1 6 2 a 2 1 4 32 ! S k 1 a1,1b1, 2 a1, 2 b2, 2 a1,S bS , 2 a1,1b1,m a1, 2 b2,m a1,S bS ,m a 2,1b1, 2 a 2, 2 b2, 2 a 2,S bS , 2 a 2,1b1,m a 2, 2 b2,m a 2,S bS ,m a n ,1b1, 2 a n , 2 b2, 2 a n ,S bS , 2 a n ,1b1,m a n , 2 b2,m a n ,S bS ,m n x m b1 b2 22 3a1 5a2 6a1 2a2 a 4a 2 1 Anche se esiste C = A B non è detto che sia definito il prodotto: BA 3b1 5b2 6b1 2b2 b1 4b2 3x2 a1 a2 3 5 b1 6 2 b2 22 1 4 32 Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli 14 Prodotti righe per colonne Prodotto matrice vettore Prodotto vettore riga vettore colonna Prodotto vettore colonna vettore riga ns 1s s1 1 p n1 sx1 c sx1 s p Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli 15 Matrice identità E Si definisce matrice identità E la matrice quadrata che ha elementi tutti nulli eccetto quelli sulla diagonale principale che sono uguali ad 1. 1 0 0 1 E (ei , j ) 0 0 0 0 1 Proprietà della matrice identità Il prodotto della matrice identità E per una qualsiasi matrice quadrata A restituisce la matrice A stessa a1,11 a1,2 0 a2,11 a2,2 0 AE an ,11 an ,2 0 a1,n 0 AE E A A a1,1 0 a1,21 a1, n 0 a1,1 0 a1,2 0 a2, n 0 a2,1 0 a2,21 a2, n 0 a2,1b1, m a2,2b2, m an ,n 0 an ,1 0 an ,21 an,n 0 an,1b1,m an ,2b2,m a1, n1 a2, n1 an,n1n x n Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli Matrice Inversa 16 -1 A Data una matrice quadrata A viene definita matrice inversa di A e denotata con il simbolo A-1 la matrice che soddisfa la seguente relazione: AA-1 = A-1A = E ossia quella matrice che moltiplicata per la matrice A restituisce la matrice identità (Si noti che in questo caso il prodotto è commutativo). La matrice inversa resta definita solo per matrici quadrate Non tutte le matrici quadrate sono dotate di inversa Si dimostra che le matrici quadrate dotate di inversa sono quelle a determinante non nullo e sono dette non singolari Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli 17 Divisione Date due Matrici A=(ai,j) e B=(bi,j) viene definita l’operazione di divisione della matrice A per B come il prodotto della matrice A per l’inversa della matrice B: A / B = A B-1 dove B-1 è la matrice inversa della matrice B e resta definita solo per matrici quadrate, non singolari, ossia a determinante non nullo. Per cui matrici rettangolari e vettori non possono essere i divisori in un operazione di divisione fra matrici dividendo A/B divisore Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli Operazioni Prodotto cA 18 Requisiti Modalità -- Operazione elemento a elemento ___________________________________________________________________________________________________________________________________________________________ A± B Uguali dimensioni: stesso numero di righe e di colonne Operazione elemento a elemento A B Numero di colonne di A uguale al numero di righe di B Prodotto righe per colonne Divisione A/B B matrice non singolare, ossia dotata di inversa B-1 BB-1 = B-1B = E A / B = A B-1 Elevamento a potenza An Solo per matrici quadrate AA …(n volte)…A Somma Algebrica Prodotto Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli Vettori e Matrici in Matlab Operazioni con Scalari Operazioni fra Vettori e Matrici Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli >> y = 10; >> r_x = 1 : 4 r_x = 20 Operazioni con Scalari N.B.: Si ricordi che in algebra matriciale solo il prodotto scalare per matrice è in realtà definito somma sottraz. >> y - r_x ans = prodot. 2 >> r_x + y ans = >> r_x * y ans = divisione Tutte le operazioni di somma (+), sottrazione (-), prodotto (*), divisione (/) di una matrice o vettore per uno scalare sono definite, in Matlab come operazioni elemento ad elemento: il risultato è una matrice o un vettore i cui elementi sono ottenuti sommando, sottraendo, moltiplicando, dividendo i singoli elementi della matrice o del vettore per lo scalare. 1 11 9 10 12 8 7 20 3 4 13 14 6 30 40 0.3 0.4 >> r_x / y ans = 0.1 0.2 Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli 21 Operazioni con Scalari Tutte le operazioni fra matrici e scalari in matlab sono commutative eccetto la divisione somma divisione >> m_x = [1 2; 3 4]; y = 10 >> m_x = [1 2; 3 4]; y = 10 >> m_x + y >> m_x / y ans = ans = 11 12 0.1000 0.2000 13 14 0.3000 0.4000 >> y + m_x >> y / m_x ans = 11 12 ?? Error using ==> / 13 14 Matrix dimensions must agree. N.B.: E’ possibile dividere un vettore o una matrice per uno scalare, ma non uno scalare per un vettore o una matrice Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli 22 Operazioni fra Vettori e Matrici Matlab permette di effettuare facilmente operazioni fra vettori e matrici rispettando le regole dell’algebra matriciale, ma implementa anche degli operatori che permettono di effettuare operazioni di tipo diverso: Operatori che seguono le regole dell’algebra matriciale L’ Operatore punto ‘.’ forza le operazioni ad essere effettuate elemento ad elemento • • • • (+) Somma (-) Sottrazione (*) Prodotto Righe per Colonne (/) Divisione: matrici non singolari • (.*) Prodotto elemento a elemento • (./) Divisione elemento a elemento • (.^) Elevamento a Potenza elemento a elemento Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli Operazioni fra Vettori e Matrici Operatori che seguono le regole dell’algebra matriciale Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli 24 Somma (+) e Sottrazione (-) La somma e la sottrazione di vettori o matrici sono definite come in algebra matriciale operazioni elemento a elemento: » r_x = 1:4 r_x = 1 2 3 4 • i vettori (o matrici) operandi devono quindi avere uguali dimensioni » r_y = 10:10:40 r_y = 10 20 30 40 • il vettore (o matrice) risultante è dato dalla somma o sottrazione elemento a elemento dei vettori (o matrici) addendi » r_z = r_x + r_y r_z = 11 22 33 44 Matlab restituisce un messaggio di errore se si cerca di sommare o sottrarre vettori con dimensioni non corrette » r_x = 1:3; r_y = 10:10:40; » r_z = r_x + r_y ??? Error using ==> + Matrix dimensions must agree. Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli 25 (*) Prodotto righe per colonne Il prodotto fra vettori segue le regole dell’algebra matriciale due vettori possono essere moltiplicati con l’operatore * solo se: • il numero di colonne del primo vettore è uguale al numero di righe del secondo, • il prodotto è effettuato righe per colonne. Possono essere moltiplicati fra loro con *: Vettore Riga * Vettore Colonna Scalare Vettore Colonna * Vettore Riga Matrice » r_x = 1:4; r_x = 1 2 3 4 » c_y = [10;20;30; 40] c_y = 10 20 30 40 » z = r_x * c_y z = 300 » m_z = c_y * r_x m_z = 10 20 30 40 20 40 60 80 30 60 90 120 40 80 120 160 Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli 26 (*) Prodotto Righe per Colonne Se si cerca di moltiplicare due matrici di dimensioni non corrette: allora Matlab restituisce un messaggio di errore r_y(14) * r_x(14) » r_x = 1:4; r_x = 1 2 3 4 » r_y = [10 20 30 40] r_y = 10 20 30 40 » r_y * r_x ??? Error using ==> * Inner matrix dimensions must agree. ??? Errore usando ==> * Le dimensioni interne delle matrici devono essere uguali Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli Operazioni fra Vettori e Matrici Operatori elemento a elemento Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli 28 (.*) Prodotto Elemento a Elemento In Matlab è definita anche l’operazione Prodotto elemento a elemento che segue quindi le stesse regole della somma e della sottrazione: » r_x = 1:4 r_x = 1 2 3 4 • i vettori operandi devono avere uguali dimensioni » r_y = 10:10:40 r_y = 10 20 30 40 • il vettore risultante è dato dal prodotto elemento a elemento dei vettori operandi » r_z = r_x .* r_y r_z = 10 40 90 160 In Matlab l’operatore punto “.” forza un’operazione matriciale di moltiplicazione (.*), divisione (./) e elevamento a potenza (.^) ad essere effettuata in modalità elemento a elemento. Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli 29 (./) Divisione Elemento a Elemento Anche la Divisione fra due vettori, in Matlab, può essere effettuata elemento a elemento utilizzando l’operatore (./): • i vettori operandi devono avere uguali dimensioni • il vettore risultante è dato dalla divisione elemento a elemento dei vettori operandi Utilizzando l’operatore ./ è anche possibile effettuare la divisione di uno scalare per un vettore dividendo lo scalare per i singoli elementi del vettore divisore » r_x = 1:4 r_x = 1 2 3 4 » r_y = 10:10:40 r_y = 10 20 30 40 » r_z = r_x ./ r_y r_z = 0.1 0.1 0.1 0.1 » r_x = 1:4; » r_y = 1./r_x r_y = 1.0000 0.5000 0.3333 0.2500 Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli 30 (.^) Elevamento a Potenza Elemento a Elemento L’elevamento a potenza elemento a elemento (.^) permette di calcolare: » r_x = 1:4 r_x = 1 2 3 4 1 l’elevamento a potenza di tutti gli elementi di un vettore ad uno stesso esponente scalare; » r_y = r_x .^2 r_y = 1 4 9 16 2 l’elevamento a potenza di uno scalare a tutti i valori di un vettore, presi come esponenti; » r_z = 2.^ r_x r_z = 2 4 8 16 3 l’elevamento a potenza degli elementi di un vettore agli elementi si un altro vettore presi come esponenti, » r_q = r_x.^[1 2 3 2] r_q = 1 4 27 16 Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli 31 Operazioni Elemento a Elemento Nelle Operazioni elemento a elemento le matrici o i vettori operandi devono avere uguali dimensioni, ossia devono essere uguali sia il numero delle righe che delle colonne. r_y(14) .* c_x(41) » r_x = 1:4; r_x = 1 2 3 4 » c_y = [10; 20; 30; 40] c_y = 10 20 30 40 » r_y .* c_x ??? Error using ==> .* Matrix dimensions must agree. ??? Errore usando ==> * Le dimensioni delle matrici devono essere uguali Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli 32 Verifica • Si creino due matrici rettangolari con il comando rand e si verifichino le regole di addizione sottrazione prodotto. • Si creino due matrice quadrate con il comando rand e si verifichi la regola di divisione Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli Riepilogo Operazioni in Matlab fra variabili numeriche Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli 34 Operazioni Matlab: Scalare-Matrice Operazioni Modalità Commuta Somma s+m_A elemento a elemento SI Differenza s-m_A elemento a elemento SI Prodotto s*m_A elemento a elemento SI Divisione m_A/s elemento a elemento NO Elevamento a potenza m_A^s elemento a elemento NO Un operatore binario commuta se il risultato non cambia invertendo l’ordine degli operandi Requisiti solo matrici quadrate s + m_A = m_A + s Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli 35 Operazioni Matlab: Matrice-Matrice Operazioni Commuta Requisiti m_A+m_B elemento a elemento SI matrici di uguali dimensioni Differenza m_A-m_B elemento a elemento SI matrici di uguali dimensioni Somma Modalità Prodotto m_A*m_B righe per colonne NO N. colonne di m_A = N. righe di m_B Divisione m_A/m_B m_A*inv(m_B) NO m_A e m_B quadrate m_B dotata di inversa Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli 36 Operazioni Matlab aggiuntive Operazioni matrice scalare Divisione s./m_A Operazioni matrice-matrice Modalità Commuta elemento a elemento NO Modalità Commuta Requisiti Requisiti Prodotto m_A.*m_B elemento a elemento SI matrici di uguali dimensioni Divisione m_A./m_B elemento a elemento NO matrici di uguali dimensioni Elevamento m_A.^m_B a potenza elemento a elemento NO matrici di uguali dimensioni