Matrici: Definizioni e Proprietà 1 Alcune figure di questi appunti riportano nei commenti esempi in linguaggio MATLAB. In tali esempi i caratteri di peso normale sono prodotti dal computer mentre i caratteri in grassetto sono battuti dall’operatore. I caratteri “>>” sono il prompt del sistema, ossia indicano che MATLAB è in attesa di istruzioni. Ad esempio la sequenza seguente: >> whos significa che MATLAB attendeva ordini e che l’operatore ha battuto il comando “whos”. __________________________________________________________________________________ MATLAB (MATrix LABoratory) è un sistema interattivo basato sul calcolo matriciale per uso scientifico e tecnico. Oltre al trattamento di matrici è in grado di trattare polinomiali, equazioni differenziali e altre applicazioni. Funzionalità aggiuntive sono rese possibili mediante l’installazione di toolbox addizionali. La Homepage di MATLAB è http://www.mathworks.com/ Un sistema simile a MATLAB, di tipo Open Source (ossia gratuito), è Scilab (http://www.scilab.org/). La sintassi di Scilab è molto simile a quella di MATLAB. In particolare, negli esempi che seguono i comandi da dare sono identici, tranne dove esplicitamente dichiarato. L’ output di Scilab è leggermente diverso. Il prompt di Sscilab è “-->”. Matrice: Definizione e Simbologia Matrice di dimensioni m n (matrice m×n): insieme di mn elementi scalari (numeri), ordinati secondo un doppio ordinamento. Doppio ordinamento significa che la posizione di ogni elemento è individuata da due indici. 1° indice: riga (1≤ i ≤ m); 2° indice: colonna (1 ≤ k ≤ n), rappresentiamo la matrice con una tabella: A = a 11 . a 12 . . a ik . . a 1n . am1 am 2 . . a mn i = 1,..., m k = 1,..., n 2 In MATLAB una matrice può essere costruita indicando tutti i suoi elementi, riga per riga, come nell’esempio seguente: >> B=[1 2 1 -4; 0 3 -2 -1; 5 -1 0 -3] B= 1 2 1 -4 0 3 -2 -1 5 -1 0 -3 >> Si noti che gli elementi all’interno di una riga sono separati da spazi, mentre una riga è separata dalla successiva dal carattere “;”. Elementi di Calcolo Matriciale Paaina 2 Come si indica una Matrice Lettera Maiuscola: Matrice B= 1 2 1 0 3 5 −1 −2 0 −4 −1 −3 “B è una matrice 3× 3×4” Lettera minuscola: elemento generico b12=2 b34= -3 b43= NON ESISTE! b21=0 3 In MATLAB il nome di una matrice può essere indifferentemente maiuscolo o minuscolo. Esempio: b, alfa, B, Alfa, b1, cc sono altrettanti nomi validi e individuano matrici distinte fra loro. Un elemento è indicato usando lo stesso nome della matrice con gli indici di riga e colonna fra parentesi, come negli esempi seguenti: Se b = 1 3 -2 -1 7 5 0 4 -6 risulta: b(1,1)=1, b(1,3)=-2, b(3,1)=0,… Data la matrice B della figura, gli elementi dell’esempio sono ottenuti coi comandi: >> B(2,1) ans = 0 >> >> B(3,4) ans = -3 >> >> B(4,3) ??? Index exceeds matrix dimensions. >> Elementi di Calcolo Matriciale Paaina 3 Matrice trasposta B= 1 2 1 0 3 5 −1 −2 0 −4 −1 −3 1 0 5 2 3 −1 B = 1 −2 0 − 4 −1 −3 BT, trasposta di B, si ottiene scambiando le righe con le colonne. La trasposta di una matrice m× ×n è una matrice T ×3) n× ×m (B è 3× ×4, B è 4× Trasposta della trasposta = matrice originale: (AT)T = A 4 In MATLAB la trasposta di a è indicata con a’. Esempi: >> B' ans = 1 0 5 2 3 -1 1 -2 0 -4 -1 -3 >> (B')' ans = 1 2 1 -4 0 3 -2 -1 5 -1 0 -3 >> Elementi di Calcolo Matriciale Paaina 4 Matrice partizionata in sottomatrici (blocchi) 1 3 2 4 A = 11 − 9 1 6 0 0 5 6 8 7 0 1 3 5 2 4 6 P11= 11 − 9 P21= −1 −2 3 2 2 4 −3 0 3 4 P12= 8 1 6 7 0 0 0 P22= 0 0 6 4 6 7 0 8 4 6 = P11 P12 P21 P22 −1 −2 3 2 0 7 0 0 2 4 6 8 −3 3 0 4 4 4 6 6 5 In MATLAB è possibile costruire una matrice utilizzando dei blocchi invece che singoli elementi. Ad esempio la matrice della figura può essere ottenuta con la seguente sequenza di comandi: >> P11=[1 3 5;2 4 6;11 -9 8]; >> P12=[-1 -2 0 7;3 2 0 0;2 4 6 8]; >> P21=[1 6 7;0 0 0]; >> P22=[-3 0 4 4;3 4 6 6]; >> A=[P11 P12;P21 P22] A= 1 3 5 -1 -2 0 7 2 4 6 3 2 0 0 11 -9 8 2 4 6 8 1 6 7 -3 0 4 4 0 0 0 3 4 6 6 >> Mentre una sottomatrice è ottenuta col comando matrice(riga iniziale:riga finale, colonna iniziale:colonna finale). Esempio: >> P12=A(1:2,4:7) P12 = -1 -2 0 7 3 2 0 0 2 4 6 8 >> Elementi di Calcolo Matriciale Paaina 5 Matrici quadrate “Se m = n (tante righe quante colonne) la matrice si dice quadrata di ordine n” 6 Matrici quadrate Diagonale principale 3 −2 A = −1 7 5 0 4 −6 1 A è una matrice 3× ×3, quindi è quadrata di ordine 3. Diagonale principale a11 = 1 a22 = 7 a33 = -6 La diagonale principale è un vettore formato dagli elementi diagonali, ossia elementi del tipo: aii (indice riga = indice colonna) 7 In MATLAB il comando diag(X), se X è una matrice quadrata, genera come risposta un vettore colonna formato dagli elementi diagonali di X. Esempio: X= 1 3 -2 -1 7 5 0 4 -6 >> diag(X) ans = 1 7 -6 Elementi di Calcolo Matriciale Paaina 7 Matrici quadrate Matrice triangolare B= −1 0 3 0 0 0 0 −6 −2 5 0 4 −2 3 0 −3 B è quadrata di ordine 4 Tutti gli elementi sotto la diagonale sono = 0 Bè TRIANGOLARE SUPERIORE “Se per ogni i>k (i,k=1,..,n) bik=0, la matrice è triangolare superiore” 8 Se pensiamo di annerire tutte le posizioni che possono contenere un valore diverso da zero e lasciamo bianche quelle che di certo contengono zero, disegniamo un triangolo che sta sopra la diagonale principale. In MATLAB il comando triu(X), se X è una matrice quadrata, estrae da essa la triangolare superiore. Esempio: X= -1 3 0 -6 3 4 -2 5 5 0 -2 3 12 -3 9 3 >> B=triu(X) B= -1 3 0 -6 0 4 -2 5 0 0 -2 3 0 0 0 3 >> Elementi di Calcolo Matriciale Paaina 8 Matrici quadrate Matrice triangolare inferiore C= −1 3 0 0 0 4 0 0 5 0 0 12 −3 −2 9 3 Tutti gli elementi sopra la diagonale sono = 0 Cè TRIANGOLARE INFERIORE “Se per ogni i<k (i,k=1,..,n) cik=0, la matrice è triangolare inferiore” 9 In MATLAB il comando tril(X), se X è una matrice quadrata, estrae da essa la triangolare superiore. Esempio: X= -1 3 0 -6 3 4 -2 5 5 0 -2 3 12 -3 9 3 >> C=tril(X) C= -1 0 0 0 3 4 0 0 5 0 -2 0 12 -3 9 3 >> Elementi di Calcolo Matriciale Paaina 9 Matrici quadrate Matrice simmetrica −1 3 0 12 3 4 0 −3 0 0 −2 9 12 −3 9 3 Tutti gli elementi in posizione “speculare” rispetto alla diagonale sono a due a due uguali La matrice è SIMMETRICA “Se per ogni i,k (i,k=1,..,n) aik= aki, la matrice è simmetrica” 10 Se scambiamo l’indice di riga con quello di colonna, ci portiamo da un elemento a quello in posizione simmetrica rispetto alla diagonale principale. Nell’esempio, se prendiamo l’elemento a21 (che contiene il valore 3) e scambiamo gli indici ci portiamo sull’elemento a12 (che contiene ancora 3, dato che la matrice è simmetrica). I due elementi sono equidistanti dalla diagonale principale. Similmente per le coppie a31 e a13 (contengono 0); a32 e a23 (contengono 0); a41 e a14 (contengono 12) eccetera. Elementi di Calcolo Matriciale Paaina 10 Matrici quadrate Matrice diagonale −1 0 0 0 0 4 0 0 0 0 0 0 0 −2 0 3 Tutti gli elementi fuori dalla diagonale sono = 0 La matrice è detta DIAGONALE La matrice diagonale è triangolare superiore... … e triangolare inferiore “Se per ogni i≠k (i,k=1,..,n) aik= 0, la matrice è diagonale” 11 In MATLAB il comando diag(v), se v è un vettore (vettore riga oppure vettore colonna), genera come risposta una matrice diagonale. Esempio: >> v=[1 -4 -2 3]; >> diag(v) ans = 1 0 0 0 0 -4 0 0 0 0 -2 0 0 0 0 3 >> Elementi di Calcolo Matriciale Paaina 11 Matrici quadrate Matrice nulla 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Se per ogni i,k (i,k=1,..,n) aik= 0 abbiamo la matrice nulla 12 In MATLAB il comando zeros(n) genera la matrice nulla di ordine n. Esempio: >> zeros(4) ans = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 >> === Scilab ====================== in Scilab occorre indicare entrambe le dimensioni della matrice, quindi: -->zeros(4,4) ans = ! 0. 0. 0. 0. ! ! 0. 0. 0. 0. ! ! 0. 0. 0. 0. ! ! 0. 0. 0. 0. ! --> Elementi di Calcolo Matriciale Paaina 12 Matrici quadrate Matrice unitaria 1 0 0 I= 0 1 0 0 0 1 La matrice è diagonale, tutti gli elementi sono =1 La matrice si dice UNITARIA o IDENTICA e si indica con I Se aik=0 per i≠k e aik=1 per i=k, A = I 13 In MATLAB il comando eye(n) genera la matrice identica di ordine n. Esempio: >> I=eye(3) I= 1 0 0 0 1 0 0 0 1 >> === Scilab ====================== in Scilab occorre indicare entrambe le dimensioni della matrice, quindi: -->eye(3,3) ans = ! 1. 0. 0. 0. ! ! 0. 1. 0. 0. ! ! 0. 0. 1. 0. ! --> Elementi di Calcolo Matriciale Paaina 13 Operazioni sulle Matrici Addizione e Sottrazione 14 Addizione Date due matrici A(m× ×n), B(m× ×n) si definisce addizione delle due matrici l' operazione che genera la matrice somma S(m× ×n) S=A+B, di elementi: sij= aij+bij i=1,..,m; j=1,…,n L'addizione è possibile solo fra matrici simili (delle stesse dimensioni) Valgono le proprietà dell'addizione fra numeri reali: commutativa: A+B=B+A, associativa: A+(B+C) = (A+B)+C, l'elemento neutro è la matrice nulla. 15 Elemento neutro di un’operazione (fra due elementi di un insieme) è quell’elemento che “non produce effetti”, ossia dà come risultato lo stesso elemento a cui viene applicato. Ad esempio: nell’operazione prodotto fra due numeri l’elemento neutro è il numero 1, dato che risulta a⋅1 = a, dove a è un numero qualsiasi. In MATLAB la matrice somma si indica con l’usuale notazione usata per i numeri: >>A+B; >>A+(B+C); >> . . . Elementi di Calcolo Matriciale Paaina 15 Sottrazione Date due matrici A(m× ×n), B(m× ×n) si definisce sottrazione delle due matrici l' operazione che genera la matrice differenza D(m× ×n) S=A-B, di elementi: sij= aij-bij i=1,..,m; j=1,…,n La sottrazione è possibile solo fra matrici simili (delle stesse dimensioni) 16 Elementi di Calcolo Matriciale Paaina 16 Esempio - somma di due matrici 3×4 Date: 1 A= 0 5 −4 −1 −3 2 1 3 −2 −1 0 7 B= −4 0 3 −2 8 0 6 1 5 0 0 determinare la matrice somma A+B A+B = 8 5 1 2 -4 5 1 7 -1 0 4 -3 17 In MATLAB: >> A=[1 2 1 -4;0 3 -2 -1;5 -1 0 -3]; >> B=[7 3 0 6;-4 -2 1 5;0 8 0 0]; >> A+B ans = 8 5 1 2 -4 1 -1 4 5 7 0 -3 >> Elementi di Calcolo Matriciale Paaina 17 Moltiplicazione 18 Prodotto di un numero per una matrice Dato uno scalare (numero) c e una matrice A(m× ×n), si definisce prodotto cA la matrice A’(m× ×n), di elementi: a’ik=caik i=1,..,m; k=1,…,n Il prodotto del numero –1 per una matrice è la matrice opposta. La differenza fra due matrici A, B è la somma di A con l’opposta di B: A – B = A + (-1)B 19 In MATLAB il prodotto di un numero per una matrice si indica col simbolo “*”: Esempio: A= 1 2 1 -4 0 3 -2 -1 5 -1 0 -3 >> >> -3*A ans = -3 -6 -3 12 0 -9 6 3 3 0 9 -15 >> Elementi di Calcolo Matriciale Paaina 19 Prodotto di matrici Date due matrici A(m× ×n), B(n× ×p) si definisce moltiplicazione delle due matrici l' operazione che genera la matrice prodotto P(m× ×p) P=A B (oppure P=AB), di elementi: • i=1,..,m; j=1,…,n pik = ri•bk ri è il vettore formato dall’"i-esima riga" di A bk è il vettore "k-esima colonna" di B (prodotto scalare "righe per colonne") Dimensioni delle matrici: P =A B • (m× ×p) (m× ×n) (n× ×p) DIMENSIONI INTERNE DIMENSIONI ESTERNE 20 Le dimensioni interne delle due matrici da moltiplicare devono essere uguali. Le dimensioni esterne determinano le dimensioni della matrice prodotto. Elementi di Calcolo Matriciale Paaina 20 Proprietà della Moltiplicazione A⋅B La riga di A e la colonna di B devono avere lo stesso numero n di elementi (matrici compatibili). Il prodotto di matrici quadrate dello stesso ordine è definito ed è una matrice quadrata dello stesso ordine Non vale la proprietà commutativa, quindi (anche se BA esiste): AB ≠ BA Vale la proprietà associativa: (AB)C = A(BC) Si può scrivere quindi: ABC 21 In MATLAB il prodotto di più matrici si può scrivere come segue: >> A*B*C; Elementi di Calcolo Matriciale Paaina 21 Esempio - Prodotto di due matrici 1 A= 0 2 3 −1 0 P = AB = 1 B= 3 0 7 -2 -3 -5 0 5 −4 P = AB A(2× ×3) B(3× ×2) P (2× ×2) p11 = 1, 2, 3 • 1, 3, 0 = 7 22 In MATLAB: >> A=[1 2 3;0 -1 0];B=[1 0;3 5;0 -4]; >> P=A*B P= 7 -2 -3 -5 >> P(1,1) ans = 7 >> Elementi di Calcolo Matriciale Paaina 22 Prodotto matrice - vettore A= 1 0 −4 2 AB = B= 2 4 2 6 A(2× ×2) B è detta B(2× ×1) vettore colonna AB (2× ×1) p11 = 1, 0 • 2, 6 = 2 p21 = -4, 2 • 2, 6 =4 Il prodotto della matrice quadrata per il vettore colonna è ancora un vettore colonna 23 Elementi di Calcolo Matriciale Paaina 23 Prodotto vettore - matrice 1 A= 0 −4 2 B = [2 BA = 2 4 6] A(2× ×2) B(1× ×2) BA (1× ×2) B è detta vettore riga p11 = 2, 6 • 1, 0 = 2 p12 = 2, 6 • -4, 2 =4 Il prodotto del vettore riga per la matrice quadrata è ancora un vettore riga 24 Elementi di Calcolo Matriciale Paaina 24 Vettori riga e vettori colonna Inserendo gli elementi di un vettore in una matrice di una sola riga/colonna si possono applicare le regole del prodotto di matrici Il vettore riga premoltiplica una matrice quadrata e viene trasformato in un altro vettore riga Il vettore colonna postmoltiplica una matrice quadrata e viene trasformato in un altro vettore colonna Il vettore riga subisce la stessa trasformazione del corrispondente vettore colonna se le due matrici sono una trasposta dell’altra D’ora in avanti: “un vettore sarà sempre un vettore colonna” 25 Elementi di Calcolo Matriciale Paaina 25 Matrice ortogonale Una matrice quadrata A si dice ortogonale se AT A = I 0 −1 0 A= 1 0 0 0 0 1 Esempio: è ortogonale 1 0 0 −1 0 1 0 0 AT A = − 1 0 0 1 0 0 = 0 1 0 0 0 1 0 0 1 0 0 1 0 Infatti: 26 In MATLAB: >> A=[0 –1 0;1 0 0;0 0 1]; >> A'*A ans = 1 0 0 0 1 0 0 0 1 >> Elementi di Calcolo Matriciale Paaina 26 Matrici quadrate Determinanti Un determinante è un’espressione algebrica che si ricava in modo univoco - seguendo regole ben precise - da una matrice quadrata Se det A = 0 la matrice A si dice SINGOLARE 27 Il determinante è la somma di tanti prodotti. I fattori di ogni prodotto sono elementi della matrice moltiplicati fra loro; ogni fattore non deve appartenere né alla stessa riga né alla stessa colonna degli altri fattori di quel prodotto. Si ricava che ogni prodotto è costituito da n fattori, se n è la dimensione della matrice. Uno dei prodotti che soddisfano senz’altro alla condizione vista sopra ha come fattori gli elementi della diagonale principale. Prendendo tutti i possibili prodotti che soddisfano alla condizione vista sopra, cambiando di segno ad alcuni di essi (secondo certe regole), si ottiene l’espressione del determinante. Matrici quadrate Determinante di una matrice 2x2 A= a 11 a 12 a 21 a 22 “Prodotto degli elementi della diagonale principale meno prodotto elementi della diagonale secondaria” Esempio: det 2 1 1 3 = 2 ⋅ 3 − 1⋅1 = 5 28 Dato che in questo caso n=2, i prodotti sono costituiti da due fattori. Si vede facilmente che gli unici due prodotti possibili sono quelli costituiti dagli elementi della diagonale principale e da quelli della diagonale secondaria. A quest’ultimo prodotto si cambia segno. In MATLAB il determinante è calcolato dal comando “det”: >> det([2 1;1 3]) ans = 5 >> Elementi di Calcolo Matriciale Paaina 28 Matrici quadrate Determinante di una matrice 3x3 Regola di Sarrus: a 11 a 12 a 13 a 11 a 12 A = a 21 a 31 a 22 a 23 a 21 a 22 a 32 a 33 a 31 a 32 detA= a11a22a33 + a12a23a31 + a13a21a32 + - a13a22a31 - a11a23a32- a12a21a33 29 Nel caso n=3 ogni prodotto è costituito da tre fattori. Sono possibili sei prodotti, ottenibili con la regola di Sarrus: •Si prende la diagonale principale, partendo dall’elemento in alto a sinistra (elemento a11) e moltiplicandolo per i successivi; •Si prende la prima colonna e la si ricopia a destra della matrice (si ottiene una matrice provvisoria 3×4). Quindi si ripete l’operazione precedente, partendo da una posizione più a destra (ossia dall’elemento a12) e -muovendosi parallelamente alla diagonale principale- si moltiplicano i tre elementi che si trovano allineati. •Si prende la seconda colonna e la si ricopia a destra della matrice precedentemente ampliata. Quindi si ripete l’operazione precedente, partendo da una posizione più a destra (elemento a13). •A questo punto si sono ottenuti tre prodotti, ai quali non va cambiato il segno. Ripartendo ora dall’elemento a13 e muovendosi parallelamente alla diagonale secondaria si ottengono altri tre prodotti, cui si cambia segno. Elementi di Calcolo Matriciale Paaina 29 Matrici quadrate Determinante di matrice 3×3 - Esempio 1 0 1 È data la matrice: A = 2 − 1 0 0 1 3 Regola di Sarrus: 1 0 1 1 0 2 −1 0 2 −1 0 1 3 0 1 detA = 1•(-1)• 3 + 0•0•0 + 1• 2• 1-1•(-1)•0 - 1•0•1 - 0•2•3 = -1 30 Con MATLAB: >> det([1 0 1; 2 –1 0; 0 1 3]) ans = -1 >> Elementi di Calcolo Matriciale Paaina 30 Matrici quadrate Alcune proprietà del determinante •Scambiando due righe (o due colonne) fra loro il determinante cambia segno •Se due righe (o due colonne) sono uguali il determinante è nullo •detAT = detA il determinante della matrice trasposta è uguale al determinante della matrice •il determinante della matrice nulla vale 0 31 Elementi di Calcolo Matriciale Paaina 31 Altre proprietà dei determinanti det(A⋅⋅B) = detA ⋅ detB "il determinante del prodotto è il prodotto dei determinanti" Se A è triangolare detA = a11• a22 •...• ann "il determinante è il prodotto degli elementi diagonali" Quindi det I = 1 32 Elementi di Calcolo Matriciale Paaina 32 Determinante di una matrice ortogonale det(A⋅⋅B) = detA ⋅ detB det(AT⋅A) = detAT ⋅ detA = (detA)2 Se A è ortogonale: •det(AT⋅A) = detI = 1 •(detA)2 = 1 •detA = ±1 Quindi il determinante di una matrice ortogonale è ±1 33 Elementi di Calcolo Matriciale Paaina 33 Matrici quadrate Determinante di una matrice generica A= a11 a12 . a1n a 21 a 22 . . . . . . an 1 . . a nn detA= a11det a 22 . a2 n a 32 . . a 21 a 22 SVILUPPO DEL DETERMINANTE SECONDO LA PRIMA RIGA . a 24 . a2 n . . . a2 n -a12det a 31 a 33 . . a nn +a13det a 31 a 32 a 34 . . a 21 a 23 . . . a nn a 21 . a 2 n − 1 ±a1ndet a 31 . . a nn . . . a nn − 1 34 L’algoritmo illustrato permette di esprimere il determinante mediante gli elementi di una riga e i determinanti di matrici di dimensione inferiore. Applicandolo ricorsivamente si arriva a matrici di dimensione 1, in cui il determinante coincide con l’unico elemento. Questo algoritmo prende il nome di regola di Laplace e può essere generalizzato a qualsiasi riga (vale cioè anche se si sviluppa non secondo la prima riga ma secondo una riga qualsiasi). Elementi di Calcolo Matriciale Paaina 34 Matrice 3×3 – sviluppo secondo la 1a riga a11 a12 a13 A = a21 a22 a23 a31 a32 a33 detA= a11det +a13det a a a22 a23 -a12det 21 23 a32 a33 a31 a33 a21 a22 a31 a32 detA=a11(a22a33-a23a32)-a12(a21a33-a23a31) +a13(a21a32-a22a31) 35 Applicando la regola di Laplace a una matrice 3×3 si verifica che si ottiene la stessa espressione ottenuta con la regola di Sarrus. Elementi di Calcolo Matriciale Paaina 35 Matrice 3×3 → prodotto vettore i j k a × b = det ax ay az bx by bz SVILUPPANDO SECONDO LA PRIMA RIGA: a × b = i(aybz-azby) - j(axbz-azbx) + k(axby-aybx) a × b = i(aybz-azby) + j(azbx-axbz) + k(axby-aybx) 36 Elementi di Calcolo Matriciale Paaina 36 Matrice 3×3 → doppio prodotto misto ax ay az a × b • c = det bx cx by cy bz cz SVILUPPANDO SECONDO LA PRIMA RIGA: a×b•c = ax(bycz-bzcy) - ay(bxcz-bzcx) + az(bxcy-bycx) 37 Elementi di Calcolo Matriciale Paaina 37