Definizioni preliminari Sommario - Caratteristiche Principali – Assegnazione di variabili - Scrittura e manipolazione di matrici e vettori - Funzioni predefinite in Matlab - Operazioni elementari con scalari e matrici - Risoluzione equazioni lineari - Funzioni vettorizzate ed operatori - Miscellanea Parte 1 Elementi di Matlab
Matlab è l’acronimo di Matrix Laboratory E’ un programma che lavora prevalentemente con matrici: qualunque oggetto introdotto è manipolato come se fosse una matrice E’ ideale per: –Sistemi lineari –Ha delle eccellenti capacità grafiche –E’ relativamente facile da usare –Ha una varietà di comandi aggiuntivi in grado di eseguire le operazioni più complesse (I Toolbox) –Lento rispetto ad altri software scientifici E’ un software numerico, non simbolico Elementi di Matlab - 11
L’unità fondamentale è il vettore e/o matrice Come si fa ad introdurre una variabile: In Matlab non è necessario definire il tipo delle variabili Per vedere quali sono le variabili presenti nella nostra sessione di lavoro è possibile usare i comandi who e whos Elementi di Matlab - 11 Il comando “=“ è utilizzato per assegnare ad una variabile (nel nostro caso “a”) un valore (in questo caso “2”) prompt dei comandi
Una volta assegnato un valore ad una variabile esso rimane in memoria, sino a quando l’utente non interviene –Assegnando un altro valore alla stessa variabile –Cancellando il valore della variabile con il comando clear –Per cancellare tutte le variabili presenti nella sessione si può usare il comando clear all Elementi di Matlab - 11 Il “;” alla fine del comando evita la stampa su video del risultato dell’operazione
Per Matlab lo scalare è un caso particolare di matrice di dimensioni (1x1) Analogamente il vettore è una matrice di una sola riga (o colonna) Esempio: Crea un vettore riga di 4 elementi (0,1,2,3) In modo equivalente è possibile creare un vettore colonna. Esempio: Elementi di Matlab - 11
Riassumendo: –Le righe sono separate dal carattere punto e virgola “;” –Gli elementi di una riga sono separati dalla virgola (o, equivalentemente, dallo spazio) Esempio: E’ chiaro che le matrici introdotte devono essere sintatticamente corrette. Elementi di Matlab - 11
Manipolazioni di matrici Gli oggetti matriciali possono essere maneggiati in modo abbastanza semplice. È possibile estrarre elementi da una matrice e/o un vettore. >> A = [4,6,3]; >> A(2) ans = 6 Elementi di Matlab - 11
Manipolazioni di matrici È possibile anche creare unioni di matrici e vettori Da notare che l’uso del separatore “;” al posto di “,” porta alla scrittura di un altro oggetto >> C =[4,5,6]; >> [A,C] ans = >> [A;C] ans = Elementi di Matlab - 11
Manipolazioni di matrici Riassumendo, il separatore “,” aggiunge delle colonne a sinistra delle preesistenti, il separatore “;” aggiunge delle righe al di sotto. Ovviamente, le espressioni devono essere sintatticamente corrette. Elementi di Matlab - 11
Matlab è in grado di riconoscere le espressioni basilari matematiche –>> pi (pi greco) –>> i (unità immaginaria, può anche essere usato j) –>> e=exp(1)(numero di Nepero) Un numero complesso può essere facilmente rappresentato: Elementi di Matlab - 11
Matlab è in grado di gestire una infinità di funzioni predefinite. Alcuni esempi: –>> sqrt(2) –>> log(2) –>> sin(pi) –>> cos(pi) –etc. etc. Elementi di Matlab - 11 Come mai non è esattamente uguale a 0 ?
Per ogni dubbio ed ignoranza, Matlab è dotato di un aiuto in linea molto utile per qualunque perplessità e consente di imparare il software in modo interattivo e veloce. help comando –Visualizza la sintassi e lo scopo del comando richiamato lookfor oggetto –Ricerca, in tutti i comandi predefiniti di Matlab, quelli in cui compare l’oggetto richiamato Elementi di Matlab - 11
Esempio: Nota: i comandi di Matlab nella guida in linea sono sempre scritti in maiuscolo, ma si usano sempre in minuscolo Matlab è case-sensitive Elementi di Matlab - 11
Analogamente per lookfor: lookfor consente la ricerca di tutti i comandi in cui è coinvolto l’oggetto che cerchiamo Le istruzioni lookfor ed help permettono un’ottima conoscenza del software in modo autodidattico Elementi di Matlab - 11 >> lookfor pi DATATIPINFO Produce a short description of a variable. MEX Compile MEX-function. PI EXPINT Exponential integral function. PINV Pseudoinverse. MKPP Make piecewise polynomial. PCHIP Piecewise Cubic Hermite Interpolating Polynomial. PPVAL Evaluate piecewise polynomial. UNMKPP Supply details about piecewise polynomial.
Operazioni elementari Matlab consente le operazioni elementari su scalari in modo semplice Elementi di Matlab - 11
Operazioni elementari con Matrici Le operazioni possono essere estese in modo immediato ai vettori. Esercizio: Si creino tre matrici: Verificare quali delle seguenti operazioni sono corrette e quali no: A+B, A+C, A*C, C*A Il prodotto applicato alle matrici è il prodotto riga per colonna. Elementi di Matlab - 11
Operazioni elementari con Matrici Oltre alle operazioni introdotte Matlab è provvisto anche di operazioni sui singoli elementi di matrici e o vettori. Questo tipo di operazioni si ottiene agiungendo un “.” prima del segno di operazione desiderato. Esempio: per moltiplicare tra di essi i singoli elementi di due vettori delle stesse dimensioni: >> A = [1,2,3]; >> B = [1,2,3]; Siamo interessati al vettore C prodotto dell’i- esimo elemento di A con l’i-esimo elemento di B Elementi di Matlab - 11
Operazioni elementari con le matrici La sintassi corretta è: Analogamente: Elementi di Matlab - 11 Da notare il punto prima del simbolo di operazione
Risoluzione equazioni lineari È possibile risolvere sistemi di equazioni lineari in modo semplice con l’introduzione di un nuovo operatore divisione: “\” Esempio: Si consideri il sistema di equazioni lineari: Può essere scritto in forma matriciale: Elementi di Matlab - 11
Risoluzione equazioni lineari Dove: Per determinare i valori di x, si effettua l’operazione: Elementi di Matlab - 11 >> A=[1,1,1;1,2,4;1,3,pi]; >> b=[0;-1;2]; >> Da notare che il vettore b è un vettore colonna Nota: l’operazione x=A\b è ben diversa dall’operazione x=inv(A)*b I risultati sono gli stessi, ma la procedura è differente
Risoluzione equazioni lineari È possibile calcolare il residuo: Elementi di Matlab - 11 Il residuo è una misura della distanza del valore calcolato dal valore vero
Funzioni vettorizzate e operatori Matlab ha molti comandi interni per creare matrici speciali. La seguente istruzione crea un vettore riga le cui componenti aumentano aritmeticamente: Le componenti possono anche cambiare con passi non unitari. Elementi di Matlab - 11
Funzioni vettorizzate e operatori Sono permessi anche passi negativi Altro comando per creare vettori con termini equispaziati: –linspace Per creare vettori che siano equispaziati in scala logaritmica: –logspace Elementi di Matlab - 11
Funzioni vettorizzate e operatori La costruzione di questi vettori è abbastanza utile per fare grafici di funzione Le funzioni in Matlab devono essere vettorizzate Ovvero, il diagramma della funzione f(x) è effettuato rappresentando graficamente i vettori (x,f(x)), in cui il vettore f(x) è ottenuto applicando la funzione f al vettore x Esempio: >> x=[0:0.1:2*pi]; >> y=sin(x); >> plot(x,y) Elementi di Matlab - 11
Funzioni vettorizzate e operatori Per creare valori di funzioni non predefinite in Matlab, è possibile usare le operazioni aritmetiche tradizionali, ma con la accortezza che gli operatori siano preceduti dal punto “.” Esempio: >> x = [-5:.1:5]; >> y = x./(1+x.^2); >> plot(x,y) Da notare il punto prima degli operatori Elementi di Matlab - 11
Miscellanea L’apice “ ‘ ” crea la trasposta di un oggetto Nel caso che la matrice sia immaginaria, l’operazione restituisce la trasposta coniugata Nel caso si fosse interessati alla trasposta semplice, l’operatore da usare è: “.’ ” Elementi di Matlab - 11
Miscellanea – Creazione matrici particolari zeros(m,n) crea una matrice mxn di zeri ones(m,n) crea una matrice mxn di valori unitari eye(n) crea una matrice identità di dimensioni nxn diag(v) (dove è un vettore di dimensioni n) crea una matrice diagonale di dimensione (nxn) i cui elementi sulla diagonale sono le componenti del vettore v Elementi di Matlab - 11
Miscellanea – Funzioni utili max(x) restituisce il valore massimo di x, se x è un vettore, restituisce il vettore riga che contiene l’elemento più grande di ogni colonna, se x è una matrice min(x) restituisce il valore minimo di x, se x è un vettore, restituisce il vettore riga che contiene l’elemento più piccolo di ogni colonna, se x è una matrice abs(x) restituisce un vettore, delle stesse dimensioni di x, i cui termini sono i moduli delle singole componenti di x size(A) fornisce le dimensioni di A Elementi di Matlab - 11
Miscellanea – Istruzioni utili save fname salva tutte le variabili nel file chiamato fname.mat (file binario) save fname y salva la variabile y (possono anche essere più di una) nel file chiamato fname.mat (file binario) load fname carica tutte le variabili dal file chiamato fname.mat Elementi di Matlab - 11
Miscellanea – Istruzioni utili save fname.txt varname –ascii –double -tabs salva i dati contenuti nella variabile varname nel file chiamato fname.txt (file ascii) load fname.txt carica i dati dal file chiamato fname.txt creando una variabile chiamata fname exit (o quit) esce dal programma Elementi di Matlab - 11
Esercizio - 1 Creare un vettore riga, a, ed un vettore colonna, b, di otto e sette elementi, rispettivamente Creare una matrice C dal prodotto dei due vettori Salvare la matrice C in un file ascii Estrarre dalla matrice C l’elemento massimo e minimo Elementi di Matlab - 11
Esercizio - 2 Risolvere il seguente sistema lineare: Elementi di Matlab - 11