Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi...

Post on 01-May-2015

229 views 2 download

Transcript of Corso di MATLAB Alberto Jurij Plazzi email: alberto.plazzi@tin.it Realizzato da Alberto Jurij Plazzi...

Corso di MATLABCorso di MATLAB

Realizzato da Alberto Jurij Alberto Jurij PlazziPlazzi

email: alberto.plazzi@tin.itemail: alberto.plazzi@tin.it

Programma del corsoProgramma del corso

I. Introduzione alla programmazioneII. Struttura di MATLABIII. Algebra matriciale e linguaggio

matriciale in MATLAB IV. Funzioni matematico - statisticheV. Importazione ed esportazione di

dati

Programma del corsoProgramma del corso

VI. M- files: creazione delle funzioniVII. Loop VIII. Espressioni if e relazioni logicheIX. Grafici e funzioni plotX. Funzioni di ottimizzazione di

MATLAB

I. 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

ProgrammareProgrammare 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 datidati , che possono riguardare: una stessa variabile osservata in momenti

diversi => campione in time seriestime series (serie storica); es. la serie storica giornaliera dei prezzi del petrolio

diverse variabili osservate in uno stesso momento => campione in cross sectioncross 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 matricimatrici, 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

II. 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

commandcommand: 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 altofreccia 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 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.400000Oppure, nella stragrande maggioranza dei casi, abbiamo bisogno di definire delle variabilidefinire 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.5Da questo momento in poi ad A sarà associato il valore 7.5. Quindi se digitiamo >> A*2ans=

15

Struttura di MATLAB

Qualora digitassimo:>> A=6 ans=

6.000000d’ora in poi ad A sarà associato il valore 6 e verrà riscritto sul valore precedente.

ATTENZIONE:1. MATLAB distingue tra lettere maiuscole e lettere

minuscole, per cui se avessimo per sbaglio digitato prima>> a*2??? Undefined function or variable ‘a’

2. 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*2ans=

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+9r= 7è lo stesso di scrivere>> r=3+4/2 …-7+9r= 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 apostrofiapostrofi ‘‘. 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=

6e 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.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 commandcommand;

Per codici che vogliono essere salvati per poi essere riutilizzati o per codici che consistono in parecchie operazioni dobbiamo lavorare sull’editedit

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 workwork, 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

helphelp

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\elmatmatlab\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