Introduzione a MATLAB Stefano Vigogna Dipartimento di Matematica [email protected] http://www.dima.unige.it/~vigogna/ Lezione 1 • • • • Cos’è MATLAB Primo utilizzo Vettori e matrici Esercizi Cos’è MATLAB MATLAB sta per Matrix Laboratory. È un ambiente informatico che integra diverse funzionalità: • • • • • Calcolo Sviluppo Grafica Analisi dati Simulazione Alcune potenzialità di MATLAB • Calcoli matriciali e operazioni su matrici • Risoluzione di sistemi lineari • Calcolo di autovalori e autovettori • Grafici 2D e 3D • Programmazione Primo utilizzo command window workspace current directory history Diary e commenti >> diary lezione1 crea nella directory corrente un file di testo lezione1 che registra l’intera sessione. Per inserire titoli o commenti: >> % <commento> Ad esempio: >> % lezione 1 Alla fine della lezione, >> diary off Per riaprire il diary: >> diary on Calcolatrice In MATLAB sono definite le operazioni elementari: + - * / ^. Il risultato viene salvato nella variabile ans. È possibile definire e ridefinire una variabile. Ad esempio, >> x = 0 >> x = x + 1 Alcuni utili comandi >> clear x cancella la variabile x. >> clear cancella tutte le variabili. >> clc ripulisce la finestra dei comandi. Con le frecce è possibile richiamare comandi precedenti della storia. Premere Esc per cancellare la riga. Formati numerici (1) Es: >> 123.45678 >> format short virgola fissa 5 cifre. Es: 123.4568 >> format short e virgola mobile 5 cifre. Es: 1.2346e+02 >> format short g MATLAB sceglie la rappresentazione migliore a 5 cifre. Es: 123.46 Formati numerici (2) >> format long virgola fissa 15 cifre. Es: 1.234567800000000e+02 >> format long e virgola mobile 15 cifre. Es: 1.234567800000000e+02 >> format long g Rappresentazione migliore a 15 cifre. Es: 123.45678 Formati numerici (3) >> format bank fissa dollari e centesimi. Es: 123.46 >> format rat notazione frazionaria (rapporto fra interi eventualmente approssimante). Es: 10000/81 NB: format determina solo la modalità di stampa, non la precisione di calcolo. Costanti pi : pi greca i, j : unità immaginaria eps : precisione di macchina realmax, realmin : massimo e minimo numero rappresentabile (realmax * 2 = inf) • inf : numero maggiore di realmax • NaN (Not a Number): forma indeterminata (0/0, inf/inf, 0*inf, …) • • • • Funzioni In MATLAB sono definite (quasi) tutte le funzioni matematiche: sqrt, exp, log, sin, cos … Per una lista di tutte le funzioni elementari, ordinate per categoria: >> help elfun Per ciascuna funzione, >> help <funzione> Help Il comando help è molto utile per ottenere informazioni su funzioni, operatori, caratteri, sintassi, comandi… >> help <comando> Es: >> help format … compreso se stesso: >> help help Vettori e matrici In MATLAB tutte le variabili sono trattate come matrici: • scalari : matrici 1 x 1 • vettori riga : matrici 1 x n • vettori colonna : matrici n x 1 • matrici : matrici m x n Vettori • vettore riga: >> v = [1 2 3 4 5] oppure >> v = [1,2,3,4,5] • vettore colonna: >> v = [1; 2; 3; 4; 5] oppure >> v = [1 2 3 4 5]’ ; cambia riga, ’ traspone. Alcune funzioni sui vettori >> max(v) restituisce la >> min(v) restituisce la >> sum(v) restituisce la >> lenght(v) restituisce la massima entrata di v. minima entrata di v. somma delle entrate di v. lunghezza di v. Vettori progressivi Vettore progressione aritmetica di valore iniziale a, valore finale b e passo p (anche negativo): >> x = a:p:b Se il passo è 1, si può omettere. Es: >> x = 1:10 x = 1 2 3 4 5 6 7 8 9 10 NB: L’operatore : è molto importante. Matrici Per definire una matrice, ad esempio 3 0 3 A 1 2 0 >> A = [ 3 0 3 ; 1 2 0 ] >> A = [ 3 0 3 1 0 2] oppure Alcune funzioni sulle matrici Le funzioni max e min operano anche sulle matrici con lo stesso significato. >> sum(A) restituisce un vettore riga le cui entrate sono le somme delle entrate di ciascuna colonna di A. >> size(A) restituisce un bivettore con le dimensioni di A. >> length(A) Restituisce la dimensione massima di A. Esercizio 1 Costruire un vettore v composto da 40 elementi in modo che: • i primi 20 elementi siano 1,2,…,20 • gli ultimi 20,19,…,1 Note >> <comando> ; Matlab esegue il comando senza stampare il risultato. Per spezzare un comando su più righe: >> <inizio comando> … <fine comando> Per terminare forzatamente un comando in esecuzione, digitare ctrl c. Entrate delle matrici >> v(i) seleziona l’i-esima entrata del vettore v. >> v(end) seleziona l’ultima entrata di v. >> A(i,j) seleziona l’entrata (i,j) della matrice A. >> A(i,j) = <valore> ridefinisce il valore dell’entrata. Entrate inesistenti (1) Se si cerca di usare un’entrata inesistente, i.e. di riga o colonna troppo grande, Matlab stampa un messaggio di errore. Es: >> A = [1 2 ; 3 4] ; >> A(1,3) errore Entrate inesistenti (2) È però possibile definire entrate inesistenti: Matlab definirà automaticamente le entrate mancanti, ponendole uguali a 0. Es: >> A(1,3) = 5 >> A = 1 2 5 3 4 0 Concatenazione di matrici >> A = [v w] crea la matrice le cui colonne sono i vettori colonna v e w, nell’ordine. >> A = [v ; w] crea la matrice le cui righe sono i vettori riga v e w. >> A = [B C ; D E] crea la matrice di blocchi B C D E, nella posizione indicata. NB: attenzione alla consistenza delle dimensioni! Altrimenti errore… Estrazione di matrici (1) >>> A(i,:) estrae l’i-esima riga della matrice A. > A(:,j) estrae la j-esima colonna di A. >> A([p,q,<…>],[r,s,<…>]) estrae la sottomatrice di A costituita dalle righe p,q,… e dalle colonne r,s,… Estrazione di matrici (2) >> diag(A) estrae la diagonale di A in un vettore colonna. >> diag(v) crea la matrice diagonale con diagonale il vettore v. >> triu(A) e >> tril(A) estraggono rispettivamente la matrice triangolare superiore (up) e inferiore (low). Matrici notevoli • identità n x n : >> eye(n) (in inglese, la lettera “I” e la parola “eye” si pronunciano entrambe/aɪ/) • matrice nulla m x n : >> zeros(m,n) • matrice m x n tutti 1 : >> ones(m,n) • quadrato magico n x n : >> magic(n) Per un elenco di tutte le matrici elementari: >> help elmat Esercizio 2 Verificare che nella matrice magic(4) ciascuna riga e colonna, nonché la diagonale, ha somma uguale. Esercizio 3 a) Costruire una matrice A 3 x 7 tale che: – prima riga = 7,6,…,1 – seconda riga = 1,1,…,1 – terza riga = 0,0,…,0 b) Estrarre due sottomatrici di A: – una costituita dalle ultime 3 colonne – una costituita dagli elementi della riga 1 e 3, colonna 2 e 4. Fine Ricordo: >> diary off per chiudere il diary. La tastiera è spesso preferibile al mouse. Per terminare il programma: >> quit