LUISS
Corso di
Metodi matematici per economia e finanza.
Prof. F. Gozzi
Lezione del 9/11/2009
Elementi di MATLAB- Prof.ssa G. Rotundo
1
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
2
Matlab
3
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à.
Help: accesso
All’avvio si apre una interfaccia utente:
al manuale di
istruzioni
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.
4
Come scrivere ‘istruzioni appropriate’ sulla
linea di comando di MATLAB?
In generale:
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
5
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’.
6
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.
7
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
8
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;
9
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.
10
Come salvare il risultato dei calcoli?
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.
11
I numeri
MATLAB fa differenza tra
1. 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
12
Esercizio
Digitare
pi
format long
pi
format short
pi
format long e
pi
format short e
pi
13
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
14
riga che contiene il commento con il simbolo %
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-1
e di
>>(5*2)^(3-1)
15
Vettori e Matrici
La 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.
16
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.
17
Vettori colonna
Inizia con una parentesi quadra aperta
Finisce con una parentesi quadra chiusa
Gli elementi all’interno si separano o con “a capo” o con punto e vigola.
Esempio
>>[ 1
2
L’incolonnamento non è
3
importante
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
18
Matrici
Una matrice è una
tabella con n righe e
m colonne
Esempio: A matrice 3x3
>> A=[ 1 2 3
456
Questo viene digitato
dall’utente
 a11

 a 21
A   a31

 
a
 n1
a12
a 22
a32

an2





a1m 

a2m 
a3m 

 

a nm 
7 8 9 ];
A=
123
456
789
Questo viene
stampato da
matlab
19
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
4
7
2
5
8
3
6
9
20
ISTRUZIONI ULTERIORI
matrice identica di ordine n
eye(n)
Esempio:
ATTENZIONE:
>>A= eye(3)
MATLAB
DISTINGUE
A=
MAIUSCOLE E
MINUSCOLE
100
010
001
21
ISTRUZIONI ULTERIORI
Sotto matrice della matrice identica
eye(n,m)
Esempio:
>>A= eye(2,3)
A=
100
010
22
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
23
ISTRUZIONI ULTERIORI
Costruire una matrice zero ovunque e con il vettore v sulla
diagonale:
• A=diag(v)
Oppure
Esempio:
>>v=[1 2 3];
A=diag([1
2
3]);
A= diag(v)
A=
100
020
003
24
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]
25
Ulteriori operazioni con vettori e
matrici
norm(v) calcola la norma del vettore v
norm(v,1) calcola la norma del vettore v
mean(v) calcola la media dei valori contenuti in v
std(v) calcola la deviazione standard
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
[V,D] = eig(A) calcola gli autovalori (in D) e gli autovettori
(in V) tali che A*V = V*D
26
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)
27
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?
28
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
29
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
30
Risoluzione di sistemi lineari Ax=b
1. Caso in cui valgono teorema e regola di
Cramer:
Ipotesi: matrice quadrata, determinante non nullo
MATLAB calcola esplicitamente la soluzione
X=inv(A)*b
Esempio:
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 risultato
Serve quindi l’istruzione di scelta condizionata
31
L’istruzione if
if condizione1
istruzione 1
else
istruzione 2
end
Eseguita se condizione 1 è
verificata
Eseguita se condizione 1
NON è verificata
32
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)
33
funzioni
34
Una funzione
y=f(x)
y è il risultato
xè
l’argomento
della funzione
35
In matlab si definiscono funzioni
y=f(x)
function [output1, output2, … ] =funzione (input1, input2,…)
Output: risultati
Input:
argomenti
della funzione
36
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
37
Utilizzo delle funzioni nei calcoli
Le funzioni di matlab possono essere
utilizzate direttamente nei calcoli.
Per esempio l’espressione
>> 3 *quadrato(x)+1
Restituisce
ans =
13
38
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 x
f=x^2;
df=2*x;
39
Esercizio:
scrivere un m-file che calcola la
funzione e ne disegna il grafico
function disegno %funzione senza input
x=[-2:0.1:2];
f=quadrato(x);
plot(x,f)
function [f,df]=quadrato(x)
%calcola il quadrato di x
N.B.: quadrato di
f=x.^2;
ciascuna componente
df=2*x;
40
Calcolo simbolico della derivata
>> syms x
>> diff(x^2)
ans =
2*x
>> f='x^2'
f=
x^2
function
[f,df]=quadrato(x)
%calcola il
quadrato di x
f=x^2;
df=diff(x^2);
>> diff(f)
ans =
2*x
41
Retta tangente
y( x)  f '( x0 )( x  x0 )  f ( x0 )
42
Esercizio:
scrivere un m-file che calcola la funzione e ne disegna il
grafico e la tangente in x0=1
function disegno %funzione senza input
x=[-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 x
f=x.^2;
N.B.: quadrato di
df=2*x;
4
3
2
1
0
-1
-2
-3
-4
-5
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
ciascuna componente
43
Scarica

Elementi di MATLAB