Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it Corso di MATLAB Realizzato da Alberto Jurij Plazzi email: alberto.plazzi@tin.it
Programma del corso Introduzione alla programmazione Struttura di MATLAB Algebra matriciale e linguaggio matriciale in MATLAB Funzioni matematico - statistiche Importazione ed esportazione di dati
Programma del corso M- files: creazione delle funzioni Loop Espressioni if e relazioni logiche Grafici e funzioni plot Funzioni di ottimizzazione di MATLAB
Introduzione alla programmazione
Ambito di applicazione Nell’analisi dei fenomeni economici e finanziari è indispensabile conoscere e saper programmare software econometrico – statistici, che siano in grado di risolvere problematiche di carattere matematico e statistico più o meno complesse, altrimenti impossibili da trattare per la loro difficoltà computazionale.
La programmazione Programmare significa scrivere in un particolare linguaggio un testo in grado di essere “letto” dal software, che contenga delle istruzioni che il software dovrà eseguire al fine di produrre un risultato numerico. Per questo motivo la fase di programmazione potrebbe in linea di principio essere eseguita su un qualsiasi editor di testo (es. Word, txt,..), per poi essere letta con il programma prescelto.
Principali software econometrico - statistici Eviews Gauss MATLAB Matematica Stata MAPLE C++ …..
Importanza dell’algebra matriciale I fenomeni finanziari ed economici vengono analizzati soprattutto mediante lo studio di dati , che possono riguardare: una stessa variabile osservata in momenti diversi => campione in time series (serie storica); es. la serie storica giornaliera dei prezzi del petrolio diverse variabili osservate in uno stesso momento => campione in cross section; es. il valore di più indici azionari osservati in un momento.
Importanza dell’algebra matriciale Indipendentemente dal tipo di dati con cui stiamo lavorando, questi sono raccolti in matrici, sulle quali noi lavoriamo per esaminare il fenomeno in oggetto Per questo motivo è indispensabile conoscere sia l’algebra matriciale sia il linguaggio matriciale che è alla base dei principali software di programmazione.
Concentriamo l’attenzione su Gauss e MATLAB Gauss: interfaccia molto semplice, grande facilità di programmazione e ottime capacità computazionali; limiti nell’assenza di debug e nella interazione con Windows. MATLAB: interfaccia più vicina a Windows, capacità di lavorare congiuntamente con Excel, grande facilità di programmazione e buone capacità computazionali trade off tra duttilità del software e precisione computazionale
Struttura di MATLAB
Struttura di MATLAB Matlab può venir utilizzato per: Applicazioni matematiche e calcoli numerici Procedure Simulazioni Analisi di dati Grafici …..
Struttura di MATLAB All’apertura di MATLAB ci troviamo sulla finestra del command: questo significa che sulla riga in cui lampeggia l’indicatore di testo possiamo digitare le operazioni, che verranno immediatamente recepite dal programma ed eseguite premendo INVIO. Quanto scritto nel command durante tutta la sessione di lavoro può essere ripreso durante la stessa ponendosi su una linea e premendo la freccia in alto; premendo tale tasto in continuazione viene visualizzato quanto digitato precedentemente. Quando la finestra di command su cui sono state eseguite le operazioni risulta troppo piena e si vuole cancellarla, si digita clc e si preme invio. La cancellazione non preclude l’utilizzo della funzione precedente (freccia in su).
Struttura di MATLAB Le operazioni immesse nel command vengono immediatamente eseguite da MATLAB, che fornisce il risultato premendo il tasto INVIO al termine della operazione da eseguire: es. >> 7/5 (INVIO) ans= 1.400000 Oppure, nella stragrande maggioranza dei casi, abbiamo bisogno di definire delle variabili che rimarranno in memoria in MATLAB per tutta la sessione di lavoro poiché vengono da questo immagazzinate in una memoria temporanea: es. >> A=7.5 Da questo momento in poi ad A sarà associato il valore 7.5. Quindi se digitiamo >> A*2 ans= 15
Struttura di MATLAB Qualora digitassimo: >> A=6 ans= 6.000000 d’ora in poi ad A sarà associato il valore 6 e verrà riscritto sul valore precedente. ATTENZIONE: MATLAB distingue tra lettere maiuscole e lettere minuscole, per cui se avessimo per sbaglio digitato prima >> a*2 ??? Undefined function or variable ‘a’ Non si può nominare una variabile come pi, cui è associato il numero 3.1416
Struttura di MATLAB Qualora nel command si voglia effettuare una operazione senza che MATLAB ne stampi a video il risultato bisogna porre alla fine della riga un punto e virgola “;”. Ovviamente questo ha senso solo se sto lavorando con variabili definite, altrimenti rende inutile l’operazione. Es. se digito: >> 1+2; >> MATLAB ha calcolato 1+2 ma siccome non è coinvolta nessuna variabile non abbiamo visto il risultato dell’operazione e non è successo nulla, non possiamo usare il risultato in quanto ad esso non è associata alcuna variabile utilizzabile nelle righe successive. Se invece digito: >>r=3+4; >>r*2 ans= 14 e qui ho utilizzato (ma non stampato a video) il risultato di 3+4.
Struttura di MATLAB Qualora il testo da inserire risultasse troppo lungo per essere visualizzato su una riga, è possibile scrivere un testo su più righe utilizzando uno spazio e i tre punti “…” sulla riga su cui poi si va a capo. Quindi scrivere: >> r=3+4/2-7+9 r= 7 è lo stesso di scrivere >> r=3+4/2 … -7+9 r= 7 Volendo che MATLAB stampi a video una stringa di lettere (delle parole) e non numeri, ad es. la parola “ciao”, basta racchiudere la stessa tra apostrofi ‘. Es: >> ‘ciao’ ans= ciao
Struttura di MATLAB Volendo introdurre un testo che non sia invece considerato dal programma lo si deve racchiudere tra %. Es. >> 4+2 %ciao% ans= 6 e il programma lo ignora. (Questa funzione risulterà molto utile nell’edit.)
Command & Edit Quando scriviamo operazioni sul command abbiamo tuttavia diversi inconvenienti: principalmente la difficoltà di gestire una serie piuttosto lunga di operazioni da far eseguire al computer in successione logica. La sconvenienza del command deriva dal fatto che essendo le operazioni eseguite subito, possono comparire messaggi di errore, etc. Inoltre, il testo della finestra del command non può essere salvato in un file a parte, se non selezionando il testo, facendo copia e incolla su un edit tipo Word, ma vengono compresi anche i messaggi di errore o i risultati. È opportuno invece che il testo contenente le operazioni da far eseguire in successione sia scritto in una finestra di edit di testo, e dopo tale file venga letto dal command, che fornisca il risultato delle operazioni contenute nel file di testo, che contiene tutte e sole le operazioni.
Edit L’opportunità di lavorare sull’edit risiede nella possibilità di salvare quanto scritto su un file di estensione “.m”, che poi in qualsiasi altro momento può essere recuperato e modificato. Tali files vengono pertanto definiti M-files. Quindi: Per codici che coinvolgono un breve numero di operazioni si può agire direttamente sul command; Per codici che vogliono essere salvati per poi essere riutilizzati o per codici che consistono in parecchie operazioni dobbiamo lavorare sull’edit
Edit Per quanto detto, 3 sono le operazioni possibili all’apertura di MATLAB: Lavorare direttamente sulla finestra aperta (il command); Aprire un nuovo file di edit digitando File > New > M-file che apre una nuova finestra di edit su cui possiamo lavorare Aprire un file di edit precedentemente creato digitando File > Open > … che va nella cartella work, la cartella destinata ad accogliere tutti i personali m-files.
Edit Una volta aperto il file di edit, possiamo su di esso digitare tutte le operazioni che vedremo in seguito (manipolazione di matrici, loop,…). Se vogliamo vedere il risultato delle operazioni, dobbiamo far “correre”, girare il programma premendo nell’edit, dopo aver salvato il file: Debug (o Tools) > Run o più semplicemente premendo il tasto F5. In questo modo otterremo nel command i risultati delle operazioni della finestra di edit, che non verrà così “toccata” dai risultati. Possiamo durante la sessione passare sempre da edit a command e viceversa: sull’edit abbiamo il testo delle operazioni, sul command il risultato.
Edit Una volta scritto nell’edit un codice completo e volendo salvarlo per averlo a disposizione in futuro, possiamo digitare nell’edit: File > Save as… che va a salvare il file con estensione .m nella cartella work, dove sarà possibile riaprirlo in futuro digitando come detto File > Open >…
Edit Il percorso o path nel quale MATLAB legge e salva i files può essere visto digitando nel command il comando path. Tale percorso può essere modificato inserendo o eliminando le cartelle nelle quali MATLAB cerca le funzioni e i files digitando File > Set Path…
Cosa sono le librerie o toolbox MATLAB consiste di una serie di funzioni di base, es. creazione di matrici, funzioni matematiche, … attraverso le quali è possibile svolgere un’infinità di funzioni. Tuttavia sono state create delle librerie apposite, ovvero delle raccolte di funzioni, specifiche per argomento. Es. librerie di ottimizzazione, finanza, simulazione, derivati …. Si tratta quindi di raccolte di funzioni che l’utilizzatore ha a disposizione immediatamente, essendo già state create. Le librerie sono immediatamente utilizzabili nell’edit e nel command, e inoltre andando nella directory di MATLAB possiamo aprire i singoli file delle librerie e osservare i codici associati ad ogni funzione.
Aiuti nella programmazione Il tasto help è il principale aiuto nell’utilizzo di MATLAB. Digitando nel command help si apre un elenco che costituisce l’insieme di librerie presenti in Matlab. Digitando help seguito dal nome della libreria scelta otteniamo la serie di funzioni associate alla libreria, con una indicazione della loro utilità. Ad es. se digitiamo help vediamo che la libreria “matlab\elmat” si occupa di matrici, e digitando help matlab\elmat abbiamo un’indicazione di tutte le funzioni presenti in questa libreria.
Aiuti nella programmazione Digitando poi help seguito dal nome della funzione otteniamo una descrizione dell’utilizzo della funzione stessa. es. help mean ci dice come funziona questa funzione che calcola la somma facendoci anche un esempio. Inoltre se andiamo a recuperare ed aprire il file “mean.m” (file associato alla funzione mean) all’interno della directory di MATLAB, vediamo che quanto stampato a video corrisponde alle righe racchiuse tra % presenti all’inizio della funzione. Riprenderemo questo discorso più avanti parlando delle funzioni.
Aiuti nella programmazione Un altro comando che permette di visualizzare le funzioni che riguardano lo stesso argomento di una funzione nota è lookfor. Ad es. digitando lookfor diag otteniamo tutti i comandi analoghi al comando di estrazione della diagonale principale di una matrice. In MATLAB esiste inoltre una guida che può essere in ogni momento consultata premendo Help > MATLAB Help
Aiuti nella programmazione Nella creazione di funzioni risulta utilissima la presenza nell’edit del Debug, ossia di un meccanismo che permette all’utilizzatore di avere i risultati delle operazioni che il programma svolge o meglio sta svolgendo, all’interno di una funzione, controllando che calcoli esattamente ciò che si voleva esso facesse. Vedremo più avanti la sua utilità nell’abito della creazione di funzioni.
Altri comandi video Who e whos: digitati nel command, forniscono rispettivamente il nome delle variabili utilizzate (who) e il nome delle variabili utilizzate + la loro dimensione , cioè se matrici, numeri, … (whos). Clear: digitato nel command azzera tutte la variabili temporaneamente presenti. Attenzione!: mentre clc cancella quanto è scritto ma non la memoria temporanea, clear azzera proprio quest’ultima!
Altri comandi video Il comando format gestisce l’aspetto grafico con il quale vengono visualizzati i risultati. In sintesi possiamo usare nel command format short format long