Elementi di Matlab e di
Mathematica
MatLab
• MatLab, acronimo di Matrix Laboratory, è uno dei più importanti
programmi matematici. Viene usato da:
– Banche;
– Assicurazioni;
– Enti di ricerca Economico-Statistici;
– Altri enti.
• La primissima versione di Matlab risale alla fine degli anni '70, scritta alla
University of New Mexico e alla Stanford University, quale pacchetto
software di supporto alle lezioni di Algebra lineare e Analisi numerica.
Oggi Matlab non si limita più al solo calcolo matriciale e numerico, ma ha
sviluppato tutta una serie di funzioni per le applicazioni più diverse nel
campo scientifico ed economico. La semplicità del programma permette di
risolvere problemi molto complessi senza dover sviluppare programmi in C
o altri linguaggi di programmazione.
Logica di base
• Il programma si comporta alla stregua di “interprete” di una serie di
comandi inseriti dall’utente attraverso un’interfaccia grafica.
• Ogni dato inserito, sia esso uno scalare, un vettore ecc. viene considerato
una matrice, da qui il nome Matrix Laboratory.
• Tramite MatLab è possibile eseguire da somme ed operazioni elementari a
complessi programmi economico-statistici.
• Elementi salienti sono:
 velocità di esecuzione;
 precisione e affidabilità assoluta dei calcoli;
 versatilità;
 insieme di funzioni di calcolo fornite di default dal programma;
Logica di base
• Come abbiamo detto ogni dato inserito dall’utente è riconosciuto come
una matrice. Per esempio:
– il numero 5 altro non è che una matrice X 1,1
– il vettore riga è trattato alla stregua di una matrice X1,N e
corrispondentemente un vettore colonna è trattato come una matrice
XN,1
• Perché questa complicazione?
• Sostanzialmente per tre motivi:
 la matrice viene trattata come un tipo di dato nativo, al contrario di
altri programmi;
 semplifica notevolmente il lavoro in caso di inversione di matrici di
grandi dimensioni;
 l’algebra matriciale è molto semplificata.
Logica di Base
(Interfaccia Utente)
• Matlab si compone, principalmente, di due parti: la parte principale
costituita dal programma vero e proprio, e la seconda costituita da un editor
di testo che permette di scrivere programmi che vengono salvati in file .m
• I dati che vengono processati dal programma possono essere salvati
dall’utente in un file .dat
Uno sguardo al programma
Editor per i programmi
Inserimento e formattazione dati
• Per inserire un vettore od una matrice tramite interfaccia utente digitiamo i
seguenti comandi:
– >>a=[1 2 3 4]; Vettore riga
– >>a=[1;2;3;4]; Vettore colonna, da notare i punti e virgola
– >>a=[1 2 3 4; 3 2 1 6]; Matrice 2x4
• Quando inseriamo dei dati manualmente, dobbiamo dichiarare una
variabile a cui e gli assegniamo dei valori. I valori non separati dal punto e
virgola vengono interpretati come facenti parte di una stessa riga, mentre
quelli separati dal punto e virgola vengono interpretati dal programma
come facenti parti della riga successiva. Se stiamo trattando un vettore od
una matrice i valori devono essere sempre inseriti tra parentesi quadra.
• Tutti i calcoli che esegue MatLab vengono portati avanti in doppia
precisione ovvero con 15 cifre decimali. Noi possiamo formattare i valori
per visualizzare più o meno cifre decimali attraverso le seguenti istruzioni:
» Format short
» Pi
» Ans=3.1416
» Format long
» Pi
» Ans=3.14159265358979
• Proviamo il comando “format rat”….
Struttura
• Nell’interfaccia principale troviamo un riquadro (“Command Window”) in
cui possono essere inserite istruzioni, dati, espressioni ecc..
• Inseriamo due numeri nel programma ed eseguiamone la somma:
– >>a=5;
– >>b=9;
– >>a+b
• Inseriamo due vettori e facciamone la moltiplicazione:
– >>a=[3,4,5];
– >>b=[4,3,7];
– >>a*b
ERRORE DI CONFORMITA
– >>a*b’
TRASPOSIZIONE DEL VETTORE
• I risultati possono essere memorizzati su una variabile di appoggio per
esempio:
>>risultato=a*b’
Metodo di indicizzazione delle matrici
• Per accedere ad un qualsiasi elemento della matrice dobbiamo riferirci alla
riga ed alla colonna corrispondente, per esempio scriviamo a(1,3) stiamo
selezionando l’elemento posto nella prima riga e terza colonna della
matrice. Se invece ci riferiamo alla matrice nel seguente modo a(:,1) stiamo
selezionando tutti gli elementi della prima colonna.
• Similmente digitando il seguente comando a(3,:) avremo i valori contenuti
nella terza riga;
• Per sapere di quante righe e colonne è composta una matrice possiamo
utilizzare li comando size(matrice);
Operatori e funzioni principali
• Operatori aritmetici
– Per scalari
Operatore
Esempio
Significato
+
a+b
Somma
-
a-b
Sottrazione
/
a/b
Divisione
*
a*b
Moltiplicazione
^
a^2 oppure a^n
Esponente
Operatori e funzioni principali
•
Operatori aritmetici
– Caso di matrici
Operat
Formula generale
 x 1   y 1   x1  y 1 
X  Y  x 2   y 2    x 2  y 2 
x n  y n  xn  y n 
 x1   y 1   x1  y 1 
X  Y  x 2   y 2    x 2  y 2 
x n  y n  xn  y n 
+
-
 y1 
y 
n
x n  2   x1y1  ....  x n y n   xi y i
 ... 
i 1
 
y n 
*
x1
./
x11 x12  y11 y12   x11 / y11 x12 / y12 
x x . / y y   x / y x / y 
 21 22   21 22   21 21 22 22 
x2
...
Esempio
Significato
Y=X+B
Somma
Y=X-B
Sottrazione
Y=A*B
Moltiplicazione
Y=A./B
Divisione
elemento per
elemento
Operatori e funzioni principali
.^n
\
^n
‘
n
 x11
x12 
.^ n   n

x 22 
x 21
 x11
x
 21
n 
x12

x n22 
A * Y  B  Y  (A) 1 * B
 y k ,1 
y 
n
k ,2 

x1,k x 2,k ... x n,k
 x y  ....  x1,k y n,1   x i,k y k ,i
 ...  1,k k ,1
i 1
 
y k ,n 


 x11
x
 21

x12 
 x11

x 22 
x12
x 21 
x 22 
Y=X.^2
Eleva ad n elemento
per elemento
Y=A\B
Divisione di matrici
Y=A^n
Eleva ad n volte la
stessa matrice
Y=A’
Esegue la trasposta
Tipi particolari di matrici
• Linspace(partenza,arrivo,ripetizioni necessarie): vettore riga di elementi
equispaziati
• Logspace: vettore riga di elementi equispaziati in scala logaritmica
• Zeros(dimensione): matrice contenente solo elementi uguali a zero
• Ones(dimensione): matrice contenente solo elementi uguali a uno
• Rand(dimensione): matrice contenente numeri pseudo-casuali in [0;1]
• Eye(dimensione): matrice identità
• Diag(vettore contenente la diagonale): matrice diagonale
Operatori e funzioni principali
• In MatLab sono presenti numerosissime funzioni che permettono di
eseguire un numero elevatissimo di calcoli. Ogni funzione fa parte di un
“pacchetto”, i principali sono:
– Generical Toolbox:
• Contiene una serie di funzioni utili, come l’inversa di una matrice, il rango di una
matrice,ha come sottoinsieme la toobox simbolica ecc…
– Statistical Toolbox:
• Il pacchetto statistico contiene una serie di funzioni sia di statistica descrittiva che di
statistica inferenziale;
– Econometrics Toolbox:
• E’ un estensione del pacchetto statistico, sviluppato da un docente di econometria e
distribuito gratuitamente, migliora e aggiunge molte funzioni econometriche cui la
toolbox statistica è carente;
– Financial Toolbox:
• Contiene una serie di funzioni “finanziarie”, come per esempio il pricing delle
obbligazioni, derivati ecc…
• Noi non dobbiamo specificare quale toolbox usiamo, dato che ogni
funzione ha un nome univoco, sarà MatLab stesso a selezionare il
pacchetto necessario.
Operatori e funzioni principali
Panoramica delle funzioni principali
•
•
Matrice inversa
– Inv(X);
Rango di una matrice:
– Rank(X);
• Numero righe, colonne:
– Size(X);
• Somma Cumulata di vettori e matrici:
– Cusum(A);
• Somma degli elementi di un array
– Sum(A)
• Radici di un polinomio
– Roots(p) dove p è dato da x 2  72 x  27
MatLab cosi p=[1 -72 -27]
che viene riscritto in
Panoramica funzioni matematiche
•
•
•
•
•
•
•
•
abs(x) valore assoluto o modulo di x
cos(x) coseno di x
log(x) logaritmo naturale di x
log2(x) logaritmo base 2 di x
log10(x) logaritmo base 10 di x
sqrt(x) radice quadrata di x
sin(x) seno di x
per un elenco completo delle funzioni disponibili si può usare il comando
>>help elfun
Programmazione:
Panoramica funzioni relazionali
•
•
•
•
•
•
•
> maggiore di
< minore di
>= maggiore o uguale di
<= minore o uguale di
== uguale a
~= diverso (non uguale) da
L'utilizzo di questi operatori dà come risultato un valore 0 o 1, 1 se il
controllo ha successo, 0 se il controllo non ha successo.
• Esempio dell’utilizzo dell’operatore diverso
>> 3+5~=8
ans = 0
NB: Genericamente, in programmazione, al risultato 1 viene associata la
parola TRUE, al risultato 0 la parola FALSE
Script
• Tutte le operazioni che vengono date al prompt dei comandi nell'ambiente
di Matlab possono essere scritte in un file di testo che può essere
richiamato ed eseguito dall'interno dell'ambiente MatLab. Questi
programmi, chiamati script, devono avere l'estensione .m. Matlab riconosce
questi file esattamente come un sistema operativo riconosce i suoi files
batch. Con un qualsiasi editor di testo (notepad o textedit) posso creare
questo file, salvarlo con l'estensione .m e poi richiamarlo a piacere. Matlab,
comunque, mette a disposizione un suo editor.
• Esempio salviamo questi comandi in un file che chiameremo esempio.m
• a=[1,2 ;3,4];
• b=[5 ;7];
• c=a*b
• Eseguiamo questo semplice script all'interno di Matlab:
– >> esempio
c = 19 43
Funzioni e programmi
• Oltre a semplici script è possibile scrivere delle funzioni che eseguono un
numero maggiore di azioni, le funzioni ricevono in ingresso uno o più
parametri e possono restituire uno o più valori.
• Ogni funzione ha la seguente sintassi
• [output1,output2,...]=funzione(input1,input2,...)
ed il file .m ovvero il nostro file deve avere lo stesso nome della funzione,
quindi, nel nostro esempio il file si chiamerà funzione.m ed avrà la seguente
sintassi
function risultato=funzione(a,b)
risultato=a*b’
e potrà essere lanciato semplicemente attraverso il seguente comando:
>>funzione(a,b), ricordando che le variabili a e b devono essere valorizzate.
Controlli di flusso
•
•
•
•
•
Esistono principalmente 3 metodi per controllare il flusso di un programma e
prendere decisioni all'interno dello stesso:
Ciclo for
for n=1 :0.1 :5
y(n)=3*n^2
end
Ciclo while
num=0 ;EPS=1 ;
while (1+EPS)>1
EPS=EPS/2 ;
num=num+1 ;
end
Istruzioni di controllo if-elseif-else
if a>5
b=7
elseif a>4
b=2.7
else
b=0
end
Tutti questi comandi devono avere alla fine del blocco da eseguire un comando end.
Scriviamo un programma
• Scriviamo un programma
moltiplicazione di due vettori.
• Sorgente:
che
%funzione di moltiplicazione di vettori
function res = moltiplicazione_vettori(a,b)
[nRigheA,nColonneA]=size(a);
[nRigheB,nColonneB]=size(b);
if (nColonneA == nColonneB)
res=a*b';
else
error('Errore conformità prodotto')
end
esegue
la
Soluzione numerica ai sistemi di equazioni lineari
• I sistemi di equazioni lineari si possono risolvere sia simbolicamente che
numericamente, analizziamo adesso la soluzione numerica. Supponiamo di
avere un sistema di N equazione in N incognite, ed indichiamo con A la
matrice dei coefficienti delle incognite e con B in vettore contenente i
termini noti. Supponiamo di avere il seguente sistema
2 x  3 y  11

 x  5 y  16
sarà allora trascritto in una matrice e un vettore
A=[2 3;1 5];
B=[11 16];
Il sistema in notazione matriciale sarà rappresentato da A*X=B, ove A è
definita, X=[x y], quindi la soluzione è la seguente X=inv(A)*B’;
Passaggio dati da Excel
• MatLab si interfaccia con molti programmi e con molti
linguaggi di programmazione. Noi vedremo solo il passaggio
dei dati da Excel verso MatLab. In sostanza vi è un
“Componente aggiuntivo” per Excel, che è un file di nome
“Excllink.xla”, che permette ad Excel di passare e ricevere dati
da MatLab.
• NB: Se non si è attivato il collegamento tra Excel e MatLab non
appariranno in alto a sinistra della finestra di Excel i 4 pulsanti:
StartMatlab, PutMatrix, GetMatrix, EvalString. Bisogna,allora, seguire
questo procedimento: nella finestra di Excel andare su Strumenti>Componenti Aggintivi e controllare se vi è la voce Excel Link 2.2 for use
with Matlab se è presente selezionarla, date Ok chiudete e riaprite Excel,
se non è presente sempre su Strumenti->Componenti Aggintivi selezionate
Sfoglia ed andate a cercare il file “Ecxllink.xla” nella cartella
C:\Programmi\Matlab7\toolbox\exlink\excllink.xla selezionatelo e date OK,
chiudete e riaprite Excel.
Passaggio dati da Excel
• Le funzioni principali per l’interscambio di dati sono due:
putmatrix e getmatrix. La prima passa un valore od una
matrice di valori da Excel a MatLab, la seconda porta un
valore od una matrice di valori da Matlab ad Excel.
• GRAFICAMENTE
getmatrix
putmatrix
Chiudiamo con una carrellata di funzioni per l’analisi dei dati
•
•
•
•
•
•
•
•
•
•
•
•
•
•
max valore massimo
min valore minimo
mean valore medio
median valore mediano
std deviazione standard
sort sorting
sum somma elementi
prod prodotto elementi
cumsum somma cumulativa
cumprod prodotto cumulativo
diff derivata approssimativa
hist istogramma
corrcoef coefficienti di correlazione
cov matrice di covarianza
Scarica

Elementi di Matlab e di Mathematica