LUISS Corso di Metodi matematici per economia e finanza. Prof. F. Gozzi Lezione del 9/11/2009

43
1 LUISS Corso di Metodi matematici per economia e finanza. Prof. F. Gozzi Lezione del 9/11/2009 Elementi di MATLAB- Prof.ssa G. Rotundo

description

LUISS Corso di Metodi matematici per economia e finanza. Prof. F. Gozzi Lezione del 9/11/2009 Elementi di MATLAB- Prof.ssa G. Rotundo. Testi di riferimento. MATLAB – manuale di riferimento I. Capuzzo Dolcetta, M. Falcone, L’analisi al calcolatore , Zanichelli, ISBN 88 – 08 – 03904 - 8 - PowerPoint PPT Presentation

Transcript of LUISS Corso di Metodi matematici per economia e finanza. Prof. F. Gozzi Lezione del 9/11/2009

Page 1: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

1

LUISSCorso di

Metodi matematici per economia e finanza. Prof. F. Gozzi

Lezione del 9/11/2009Elementi di MATLAB- Prof.ssa G. Rotundo

Page 2: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

2

Testi di riferimento

MATLAB – manuale di riferimento

I. Capuzzo Dolcetta, M. Falcone, L’analisi al calcolatore, Zanichelli, ISBN 88 – 08 – 03904 - 8

J. Stoer, Introduzione all’analisi numerica, Zanichelli ed., 1974

Page 3: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

3

Matlab

Page 4: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

4

Che cos'è Matlab?Matlab è un linguaggio software per il calcolo scientifico che integra funzioni di calcolo

matematico, visualizzazione grafica e programmazione. Esso è implementato in un potente ambiente di lavoro ad interfaccia grafica, avente una struttura modulare che ne rende notevolmente espandibili le funzionalità.

All’avvio si apre una interfaccia utente:

La linea che inizia con >> si chiama linea di comando. Dare un comando a MATLAB significa scrivere istruzioni appropriate su questa linea e premere il tasto invio.

Help: accesso al manuale di istruzioni

Page 5: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

5

Come scrivere ‘istruzioni appropriate’ sulla linea di comando di MATLAB?

1. Un insieme di ‘istruzioni appropriate’, scritte in un apposito linguaggio, costituisce un comando MATLAB.

2. Il linguaggio è un insieme di regole formali che consente di scrivere i comandi

3. Si possono scrivere più istruzioni nella stessa riga separandole con ;

4. Le istruzioni sono dette “esecutive” perché indicano a MATLAB le operazioni da eseguire e sono “interpretate”, cioè tradotte in codice macchina ed eseguite immediatamente.

Vediamo come utilizzare MATLAB come calcolatrice avanzata

In generale:

Page 6: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

6

Matlab come calcolatrice …E’la modalità di impiego più semplice per valutare espressioni numeriche, ad esempio per calcolare 4 + √ 2 - sin(0.2 π)2 + e2 è sufficiente digitare in Command window: 4+sqrt(2) – sin(0.2*pi)^2 + exp(2) e inviare.Il risultato viene scritto nella variabile ans (abbreviazione di answer).Esempio:

Istruzioni digitate dall’utente

Risultato stampato da MATLAB.

‘ans=‘ è l’abbreviazione di ‘answer’.

Page 7: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

7

Problema: come utilizzare valori già calcolati?

• MATLAB non permette di modificare comandi già eseguiti;

• Possono essere richiamati sulla riga di comando premendo ‘freccia su’ più volte, oppure cliccando sul relativo comando nella finestra ‘Command history’ (se appare’);

• Oppure si possono salvare i valori calcolati nelle variabili: •Una variabile è rappresentata da un nome e può cambiare il

valore ad essa associato.•Per assegnare il valore ad una variabile bisogna usare una espressione del tipo variabile= espressione•L’espressione viene calcolata ed il risultato viene immesso nella variabile.

Page 8: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

8

Definizione di variabili

E’ possibile definire variabili (ed anche espressioni non numeriche più complesse) ed ultilizzarle per ulteriori calcoli.

Esempio: assegnare un valore alla variabile a, uno alla variabile b ed utilizzarli per calcolare il prodotto:

Istruzioni digitate dall’utente

Risultato stampato da MATLAB.

‘ans=‘ è l’abbreviazione di ‘answer’.

N.B.: se il comando è seguito da ; il calcolo è effettuato, ma non viene stampato nulla

Page 9: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

9

Esercizio

Scrivere le istruzioni per calcolare la somma dei numeri 100, 10, 2 e dividerla per tre.

Possibile svolgimento:

a=100+10+2;

b=a/3;

Page 10: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

10

Il Workspace

Ogni variabile definita in questo modo viene conservata in memoria, nel Workspace.

Per vedere una lista delle variabili definite, digitare whos, oppure selezionare

workspace.

Per cancellare una variabile, ad esempio a, digitare clear a.

Page 11: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

11

Lettura e scrittura su file.Mediante i comandi load e save è possibile salvare su file le variabili del

workspace.

• load nomefile variabile1 variabile2….

Carica dal file nomefile.mat le variabili elencate.

• save nomefile variabile1 variabile2….

Scrive nel file nomefile.mat le variabili elencate.

• load nomefile carica tutte le variabili in nomefile.

• save nomefile salva tutto il workspace in nomefile.mat.

Come salvare il risultato dei calcoli?

Page 12: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

12

I numeriMATLAB fa differenza tra1. Costanti intere ( i numeri interi nel senso usuale della

matematica): 1, 2, 3,…

2. Costanti reali (numeri con cifre decimali) che sono rappresentati mediante

A. notazione in virgola mobile per vedere a schermo 16 cifre digitare format long

per vedere a schermo 5 cifre digitare format short

B. notazione esponenziale: digitare format long e oppure format short e

Page 13: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

13

Esercizio

Digitare

piformat long piformat short piformat long e piformat short e pi

Page 14: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

14

I file script• Invece di digitare ogni volta tutti i comandi sulla linea di

comando, MATLAB permette di memorizzarli in un file.

• Si può ottenere l’esecuzione di tutti i comandi del file digitandone il nome sulla riga di comando.

• Il file deve avere estensione .m ed essere salvato nella directory ‘MATLAB’ (versione R2007) oppure “work” (versioni precedenti).

• Il file può essere scritto mediante l’editor di MATLAB. Per richiamarlo basta dare il comando ‘edit nomefile’.

• Nel file si possono inserire commenti: basta far iniziare la riga che contiene il commento con il simbolo %

Page 15: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

15

Ordine di esecuzione delle operazioni

L’elevamento a potenza (simbolo ^) viene eseguito per primo

Moltiplicazione e divisione sono eseguite subito dopo

Addizione e sottrazione sono eseguite per ultime.

Esercizio: determinare il risultato di >>5*2^3-1e di>>(5*2)^(3-1)

Page 16: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

16

Vettori e MatriciLa struttura matematica su cui si fonda Matlab è la matrice: in Matlab anche uno scalare è una

matrice… di dimensioni 1x1.

La struttura dati astratta matrice è in pratica in Matlab il tipo fondamentale.

Non a caso Matlab è l’acronimo di MATrix LABoratory.

Digitando ad esempio x = 2.45, abbiamo dichiarato la variabile x e le abbiamo assegnato il valore

2.45.

L’omissione del punto e virgola fa si che a schermo venga visionato il contenuto della variabile x.

Matlab manipola solo matrici, ed infatti un’ispezione al Workspace ci dice che x è una matrice di

dimensioni 1x1.

Page 17: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

17

Vettori riga (di lunghezza qualsiasi)

Inizia con una parentesi quadra aperta.Finisce con una parentesi quadra chiusa.Gli elementi all’interno si separano o con spazi o con

vigole.Esempio>>[ 1 2 3 4];>>[1,2,3,4];Sono lo stesso vettore riga. Per memorizzarlo nella

variabile v digitare>> v=[1 2 3 4];L’istruzione length(v) restituisce la lunghezza del vettore.

Page 18: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

18

Vettori colonnaInizia con una parentesi quadra apertaFinisce con una parentesi quadra chiusaGli elementi all’interno si separano o con “a capo” o con punto e vigola.Esempio>>[ 1 2 3 4];>>[1;2;3;4];Sono lo stesso vettore colonna. Per memorizzarlo nella variabile v

digitare>> v=[1 ;2; 3; 4];Anche in questo caso l’istruzione length(v) restituisce la lunghezza del

vettore

L’incolonnamento non è importante

Page 19: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

19

Matrici

Una matrice è una tabella con n righe e m colonne

nmnn

m

m

m

aaa

aaa

aaa

aaa

A

21

33231

22221

11211

Esempio: A matrice 3x3

>> A=[ 1 2 3

4 5 6

7 8 9 ];

A=

1 2 3

4 5 6

7 8 9

Questo viene stampato da matlab

Questo viene digitato dall’utente

Page 20: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

20

Altri modi di assegnare una matrice

>>A=[1 2 3; 4 5 6; 7 8 9]

>>A=[1, 2, 3; 4, 5 , 6; 7 , 8, 9]

>> A=[1, 2, 3 4, 5, 6 7, 8, 9]Si ottiene sempre lo stesso risultato:A =

1 2 3 4 5 6 7 8 9

Page 21: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

21

ISTRUZIONI ULTERIORI

matrice identica di ordine neye(n)Esempio:>>A= eye(3) A= 1 0 0 0 1 0 0 0 1

ATTENZIONE:

MATLAB DISTINGUE MAIUSCOLE E MINUSCOLE

Page 22: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

22

ISTRUZIONI ULTERIORI

Sotto matrice della matrice identica eye(n,m)Esempio:>>A= eye(2,3) A= 1 0 0 0 1 0

Page 23: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

23

ISTRUZIONI ULTERIORI

matrice zero• zeros(n)Esempio:>>A= zeros(3) A= 0 0 0 0 0 0 0 0 0

Vettore colonna zero

zeros(n,1)

>>v=zeros(3,1)

v=

0

0

0

Page 24: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

24

ISTRUZIONI ULTERIORI

Costruire una matrice zero ovunque e con il vettore v sulla diagonale:

• A=diag(v)Esempio:>>v=[1 2 3]; A= diag(v) A= 1 0 0 0 2 0

0 0 3

Oppure

A=diag([1 2 3]);

Page 25: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

25

Definizione di vettori.

In Matlab, è possibile definire vettori di punti equispaziati con dimensione

arbitrariamente grande. E’ possibile utilizzare l’istruzione:

x = [inizio : passo : fine]

che definisce un vettore riga di punti equispaziati da passo tra inizio e fine.

Ad esempio x = [0 : 0.1 : 1].

In alternativa si può utilizzare l’istruzione

linspace(inizio , fine , N) che definisce N elementi equispaziati tra inizio e fine.

Ad esempio y = linspace(0,1,10) è equivalente a x=[0:0.1:1]

Page 26: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

26

Ulteriori operazioni con vettori e matrici

norm(v) calcola la norma del vettore vnorm(v,1) calcola la norma del vettore vmean(v) calcola la media dei valori contenuti in vstd(v) calcola la deviazione standard A’ calcola la matrice traspostaA*B calcola il prodotto delle matrici A e BA*v calcola il prodotto della matrice A per il vettore vinv(A) calcola l’inversa di Aeig(A) calcola gli autovalori di A[V,D] = eig(A) calcola gli autovalori (in D) e gli autovettori

(in V) tali che A*V = V*D

Page 27: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

27

Esercizio

Scrivere un m-file (script file) che

Memorizza nel vettore v i voti degli esami sostenuti

Ne calcola la media

La divide per 30

La moltiplica per 110

(Suggerimento: l’istruzione mean(v) calcola la media degli elementi contenuti nel vettore v)

Page 28: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

28

Esercizio

Scrivere in un m-file la matrice

A= [1 3 4; 5 6 7; 6 7 8];

Scrivere anche il vettore v=[1; 2; 3];

Calcolare il prodotto A*v

Calcolare v’*(A*v)

Il risultato è un numero, un vettore oppure una matrice?

Page 29: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

29

Esempi ed esercizi vettori e matrici

• Scrivere una matrice A=[1 2 3;4 5 6;7 8 9];• Scrivere un vettore riga, colonna v=[1;2;3];• eyes(n,m): sottomatrice della matrice identica• zeros(n,m): matrice nulla• zeros(n,1): vettore colonna• norm(v) : norma 2 del vettore v• norm(v,1) : norma 1 del vettore v• A’ calcola la matrice trasposta• A*B calcola il prodotto delle matrici A e B• A*v calcola il prodotto della matrice A per il vettore v• inv(A) calcola l’inversa di A• eig(A) calcola gli autovalori di A

Page 30: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

30

ATTENZIONE

L’istruzione inv(A) esegue l’inversa generalizzata, cioè fornisce un risultato anche quando il det(A)=0, ma questo non è il risultato cercato!

Esempio: digitare A=[1 2 3; 4 5 6; 7 8 9]; det(A)

inv(A)

e commentare i risultati

Page 31: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

31

Risoluzione di sistemi lineari Ax=b

1. Caso in cui valgono teorema e regola di Cramer:

Ipotesi: matrice quadrata, determinante non nulloMATLAB calcola esplicitamente la soluzioneX=inv(A)*bEsempio: Data A=[1 0; 1 1]; b=[-2;3];Calcolo det(A), controllo che non sia zero, poi

eseguo x=inv(A)*b ed ottengo il risultatoServe quindi l’istruzione di scelta condizionata

Page 32: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

32

L’istruzione if

if condizione1

istruzione 1

else

istruzione 2

end

Eseguita se condizione 1 è verificata

Eseguita se condizione 1 NON è verificata

Page 33: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

33

A=[1 2 3; 4 5 6; 7 8 9]; v=[1 2 3];

if det(A) ~ =0

x=inv(A)*b;

else

disp(‘Errore’);

end

disp(x)

Page 34: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

34

funzioni

Page 35: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

35

Una funzione

y=f(x)

x è l’argomento della funzione y è il risultato

Page 36: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

36

In matlab si definiscono funzioni

function [output1, output2, … ] =funzione (input1, input2,…)

Input: argomenti della funzione Output: risultati

y=f(x)

Page 37: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

37

Le funzioni matlab si scrivono in un m-file

function [output1, output2, … ] =funzione(input1, input2,…)

Qui vanno scritte le istruzioni che permettono di calcolare output1, output2, ecc utilizzando input1, input2, ecc.

Esempio:

Salvare l’m-file quadrato.m

function f=quadrato(x)

%calcola il quadrato di x

f=x^2;

Digitare sulla riga di comando di MATLAB>>x=2; >> y=quadrato(x)

y =

4

Page 38: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

38

Utilizzo delle funzioni nei calcoli

Le funzioni di matlab possono essere utilizzate direttamente nei calcoli.

Per esempio l’espressione>> 3 *quadrato(x)+1Restituisceans =

13

Page 39: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

39

Esempio – funzione con più output

Scrivere un m-file che calcola la funzione f(x)=x2

e la sua derivata

function [f,df]=quadrato(x)%calcola il quadrato di xf=x^2;df=2*x;

Page 40: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

40

Esercizio: scrivere un m-file che calcola la funzione e ne disegna il grafico

function disegno %funzione senza inputx=[-2:0.1:2];f=quadrato(x);plot(x,f)function [f,df]=quadrato(x)%calcola il quadrato di xf=x.^2;df=2*x;

N.B.: quadrato di ciascuna componente

Page 41: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

41

Calcolo simbolico della derivata

>> syms x>> diff(x^2) ans = 2*x >> f='x^2'f = x^2

>> diff(f)ans = 2*x

function [f,df]=quadrato(x)%calcola il quadrato di xf=x^2;df=diff(x^2);

Page 42: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

42

Retta tangente

0 0 0( ) '( )( ) ( )y x f x x x f x

Page 43: LUISS Corso di  Metodi matematici per economia e finanza.  Prof. F. Gozzi Lezione del 9/11/2009

43

Esercizio: scrivere un m-file che calcola la funzione e ne disegna il

grafico e la tangente in x0=1

function disegno %funzione senza inputx=[-2:0.1:2];[f,df]=quadrato(x);y=df(31)*(x-x(31))+f(31)plot(x,f,x,y)function [f,df]=quadrato(x)%calcola il quadrato di xf=x.^2;df=2*x; N.B.: quadrato di

ciascuna componente

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2-5

-4

-3

-2

-1

0

1

2

3

4