IEEE-754 Calculators
http://babbage.cs.qc.edu/IEEE-754/
Doing the Math and Making an Impact
http://www.ima.umn.edu/newsltrs/updates/summer03/
Disatri attribuiti al cattivo calcolo numerico
http://www.ima.umn.edu/~arnold/disasters/
Introduzione Matlab
Carla Guerrini
1
Introduzione all’ambiente
Matlab
Introduzione Matlab
Carla Guerrini
2
1
Riferimenti bibliografici
• Guida per l’utente (http://www.mathworks.com)
• G. Naldi, L. Pareschi, Matlab concetti e progetti,
Apogeo ed.(2007)
• Tutorials e programmi disponibili in rete:
http://www.dti.supsi.ch/~bucher/matlab.pdf
http://www.math.ucsd.edu/~bdriver/21d-s99/matlab-primer.html
http:// www.dm.unibo.it/~guerrini/html/primer.ps
• Lucidi delle lezioni nella pagina web del corso
Introduzione Matlab
Carla Guerrini
3
Che Cosa è MATLAB
• Matrix Laboratory
• Un ambiente di calcolo scientifico con
routines altamente specializzate
• Un ambiente grafico
• Un linguaggio di programmazione
Introduzione Matlab
Carla Guerrini
4
2
La storia di Matlab
• Inizia con la costruzione di libreria matematiche
(scritte inizialmente in FORTRAN) LINPACK,
EISPACK riguardanti la soluzione di problemi di
algebra lineare.
• Nel 1980 Moler scrisse la prima versione di
Matlab per sviluppare un calcolatore matriciale
interattivo.
• Nel 1985 con la fondazione della società
Mathworks Matlab è diventato un linguaggio
orientato alle matrici con importanti aggiunte per
l’analisi dei dati e la visualizzazione scientifica
Introduzione Matlab
Carla Guerrini
5
La storia di Matlab: I Toolbox
A partire da un nucleo base si sono sviluppate
diverse librerie per applicazioni specifiche:
- Statistica
- Reti Neurali
- Ottimizzazione
- Analisi di Immagini
- Matematica Finanziaria
- Symbolic
- Simulink
- Signal processing
- ………….
Introduzione Matlab
Carla Guerrini
6
3
Cos’è Matlab?
• La struttura di base è la matrice per la quale
sono già predefinite numerosi tipi elementari
(identità, matrice nulla, matrice unità,..) funzioni
algebriche e di manipolazione
• Matlab fa largo uso di librerie di calcolo (in
particolar modo di algebra lineare)
• E’ uno dei programmi scientifici di maggior
diffusione, usato nella ricerca e per il calcolo
tecnico e scientifico
Introduzione Matlab
Carla Guerrini
7
MATLAB fornisce un ambiente di calcolo, visualizzazione
e programmazione scientifica, in cui è possibile:
• calcolare direttamente espressioni matematiche
>> ((tan(pi/5)+2)*exp(2.3)-0.01)/log(2)
ans =
39.2197
•
sfruttare algoritmi di base già implementati - built-in function –
>> mean([1.5 2.5 3.5])
ans =
2.5000
•
utilizzare il semplice ambiente di programmazione per costruire
i propri algoritmi (Parte II)
Introduzione Matlab
Carla Guerrini
8
4
Altre funzionalità di MATLAB includono:
•
•
•
•
•
•
•
Matematica e calcolo
Sviluppo di procedure e applicazioni
Modellistica, simulazione e costruzione di prototipi
Analisi di dati, esplorazione e visualizzazione
Disegno industriale e scientifico
Costruzione di interfacce utente
TOOLBOX vari
• Con il comando demos è possibile vederne alcuni
esempi.
Introduzione Matlab
Carla Guerrini
9
Introduzione Matlab
Carla Guerrini
10
5
Programmare in MATLAB
• MATLAB ha anche un linguaggio proprio per programmare.
• E’ un linguaggio interpretato e non compilato: questo significa che le
istruzioni vengono tradotte in linguaggio macchina (il linguaggio
“capito” dal processore) e subito eseguite una per volta.
• Utilizzando C, Fortran, C++, la traduzione da linguaggio ad alto
livello a linguaggio macchina avviene invece nel processo di
compilazione, in cui tutto il programma viene tradotto in linguaggio
macchina e poi eseguito.
Introduzione Matlab
Carla Guerrini
11
Per iniziare….
• Per lanciare MATLAB da ambiente Linux basta digitare
da shell il comando matlab o cliccare due volte con il
mouse sull’icona corrispondente (K menu->Dipartimento
Matematica->Matlab).
All’avvio appare il Desktop di Matlab che contiene le
finestre:
• dei comandi (command window) il prompt >> indica che
il calcolatore è pronto a ricevere istruzioni e ad eseguirle
• dello spazio di lavoro (workspace window)
• della directory corrente (current directory)
• della storia dei comandi (command history)
Per terminare la sessione di lavoro basta digitare
>>quit
Introduzione Matlab
Carla Guerrini
12
6
Il Desktop di MATLAB
WORKSPACE WINDOW
CURRENT DIRECTORY
Elenca le variabili presenti nello spazio di lavoro
insieme ad alcune informazioni su di esse:
Mostra il contenuto della directory in cui
l’utente sta lavorando.
Tipo, dimensioni, memoria occupata…
Esempio:(windows)
C:\Documents and Settings\guerrini\Documenti\MATLAB
E’ possibile modificare il valore di una variabile
utilizzando l’apposito workspace editor
Esempio: (linux)
……
E’ possibile spostarsi tra le directory come
con un qualsiasi file manager
COMMAND HISTORY
COMMAND WINDOW
Istruzioni elementari:
Contiene la lista dei comandi digitati con
funzioni di copia e incolla
>>2+3 % utlizzo come calcolatrice
Ans
5
>>A=3 % assegnaz. del valore 3 alla variabile A
>>B=A^2 % valutazione di una espressione
Introduzione Matlab
Carla Guerrini
13
Introduzione Matlab
Carla Guerrini
14
7
Come ottenere aiuto: il manuale o Help
• Si accede al manuale o tramite il menu Help
• help (in command window, help generale di tutte
le funzioni)
>> help sin
SIN Sine.
SIN(X) is the sine of the elements of X See also asin, sind
Reference page in Help browser
doc sin.
• Digitando
lookfor <keyword> si attiva invece la ricerca
di funzioni basate su una parola chiave.
Help Desk: Un help in HTML molto completo e di facile
navigazione fornito anche di svariati esempi
• Attraverso il comando doc si accede direttamente alla
documentazione online di MATLAB.
Introduzione Matlab
Carla Guerrini
15
Introduzione Matlab
Carla Guerrini
16
8
MATLAB Editor
L’ Editor : è la finestra in cui si scrivono i programmi
MATLAB (M files, cioè file con estensione “.m”). Per
richiamarla digitare
>> edit
o semplicemente utilizzare il menu
File->New->Blank M-File
Introduzione Matlab
Carla Guerrini
17
Introduzione Matlab
Carla Guerrini
18
9
Gestione dei files
>> dir - visualizza il contenuto della directory corrente
>> ls
>> what – visualizza i files di tipo Matlab nella directory
corrente
>> cd – permette di spostarsi nell’albero delle directory
>> pwd – riporta la directory corrente
>> path stampa l’albero di ricerca
>> type nomefile – visualizza il contenuto del file
Introduzione Matlab
Carla Guerrini
19
Le informazioni e la memoria
• Le informazioni (dati in forma numerica o alfanumerica)
vengono memorizzati nella RAM utilizzando “variabili”
Variabili (scalari, vettori, matrici): ha due caratteristiche:
– Il nome, che la identifica (I nomi scelti possono
contenere lettere, cifre e il carattere “_”, non possono
iniziare con una cifra, non si possono utilizzare parole
riservate di MATLAB). La variabile di default è ans
– Il valore, cioè il dato che essa rappresenta e che
viene memorizzato nella RAM.
Matlab è un linguaggio case sensitive, ossia distingue
fra lettere maiuscole e minuscole, quindi la variabile A
è diversa dalla variabile a
Per controllare se un nome è una parola riservata:
vedere il comando iskeyword
Introduzione Matlab
Carla Guerrini
20
10
Le variabili in Matlab
>> a=5-2
a=
3
>> 3+5
ans
8
>> a=10;
>> b=15;
le variabili a,b,c,d
>> c=31;
contengono i valori
>> d=30;
10,15,31,30
>> media=(a+b+c+d)/4
media =
21.5
Il valore della media aritmetica tra 10,15,31,30 è stato memorizzato nella variabile media
Introduzione Matlab
Carla Guerrini
21
Tipi di dati
Double
Complex Double
Logical Double
Char
Introduzione Matlab
Numeri reali
nell’intervallo
[10^(-308) 10^(308)]
8 byte
Numeri Complessi
16 byte
Risultato di una
operazione logica
(1=vero, 0=falso)
carattere
Carla Guerrini
8 byte
2 byte
22
11
Le variabili Matlab (II)
•
•
Matlab memorizza tutte le variabili definite durante la sessione di lavoro
L’insieme delle variabili attive costituisce il workspace di Matlab
>>who
Your variable are:
a b c d
>>whos
Name
Size
bytes
a
1x1
8
Class
double
b
1x1
8
double
c
1x1
8
double
• Il comando whos dà maggiori informazioni sulle variabili in memoria
Il comando clear cancella il contenuto del workspace
• Il comando clear seguito dai nomi di alcune variabili (non separati dalla
virgola) cancella soltanto quelle variabili
• >> clear
Introduzione Matlab
>> clear a b
Carla Guerrini
23
Le variabili Matlab (IV)
>> a =sqrt(3)
>> c=-2+i*3.2
>> t=a<1
>> k= ‘c’
Double
Complex double
Logical double
Char
>> v_testo=‘ questa stringa viene
assegnata’
Char array
Introduzione Matlab
Carla Guerrini
24
12
Variabili predefinite
• ans
most recent answer
• eps
accuratezza relativa per i numeri in doppia
precisione. Ritorna la distanza fra 1.0 e il numero (> di 1.0) più
vicino ad 1.0. Viene usato come tolleranza in molte funzioni
numeriche.
• pi
π, 3.14159265...
• i,j
unità immaginaria
• NaN
“Not-a-Number” (l’espressione calcolata non è un numero
macchina, si ottiene come risultato di operazioni aritmetiche
indefinite, ad esempio la divisione 0/0)
• inf,-inf
si ottengono per overflow, o divisione per zero
• realmax massimo numero macchina positivo
• realmin minimo numero macchina positivo
• beep
fa suonare un beep al computer
• nargin
dentro il body di una function riporta il numero di
argomenti di input che sono stati usati per chiamare la function
• nargout numero di argomenti di output di una function
Introduzione Matlab
Carla Guerrini
25
Tipi di variabili
Tipi interi definiti in Matlab:
int8, int16, int32, int64 (interi con segno)
uint8, uint16, uint32, uint64 (interi senza segno)
Tipi floating point
Single (32 bits), double (64bits)
• ATTENZIONE! Le operazioni aritmetiche vengono eseguite
solo fra elementi double. Per fare delle operazioni matematiche
su dati interi o in singola precisione, si devono convertire in
doppia precisione usando la funzione double.
>>s=3 ; us=uint8(s);
>>us+4
??? Error using +
Function '+' is not defined for
For values of class ‘uint8’
Introduzione Matlab
Carla Guerrini
26
13
Formati di visualizzazione delle variabili
Matlab di deafult visualizza una variabile numerica con 4 cifre decimali:
>>pi
ans=
3.1416
Per modificare il formato di visualizzazione, Sintassi del comando:
>> format tipoformato
>> format long
>>pi
ans=
3.14159265358979
Introduzione Matlab
Carla Guerrini
27
Formati di visualizzazione
Introduzione Matlab
Carla Guerrini
28
14
Formato di visualizzazione
Introduzione Matlab
Carla Guerrini
29
Esempi
>>y = 8/6
>>format short
1.3333
>>format short e
1.3333E+000
>>format short g
1.3333
>>format long
1.33333333333333
>>format long e
1.333333333333333E+000
>>format long g
1.33333333333333
>>format rat
4/3
Introduzione Matlab
DEFAULT
Carla Guerrini
30
15
Workspace
L’insieme delle variabili mantenute in memoria durante la
sessione MATLAB viene chiamato spazio di lavoro
(workspace)
Il workspace puo essere così manipolato:
• Visualizzare e/o modificare le variabili dell’area di lavoro
• Cancellare le variabili di lavoro
• Rappresentare graficamente le variabili di lavoro
• Salvare l’area di lavoro
• Caricare un’area di lavoro precedentemente salvata
Introduzione Matlab
Carla Guerrini
31
Sessione di lavoro
diary <nome_file>
memorizza nel file <nome_file> la sessione di lavoro, in formato ASCII
(comandi, dati e workspace) da quel punto in poi tutto quanta
l’attività svolta nella working area viene salvata ed e’ possibile
consultare in seguito il contenuto con un qualsiasi editor di testo
Non è possibile utilizzare questo file per ricaricare il lavoro fatto per
continuare a lavorarci, è solo un diario di lavoro.
Per proseguire in un secondo tempo l’attività occorre utilizzare altri
comandi come save e load che memorizzano in file binari
save <nome_file>
e ricaricato in ambiente MATLAB
load <nome_file>
Per visualizzare poi la lista delle variabili attive who oppure whos
Introduzione Matlab
Carla Guerrini
32
16
Sessione di lavoro
clear <nomevariabile> cancella la vaiabile
clear cancella tutto
clc
pulisce il desktop
clf
pulisce la finestra di una figura
pwd visualizza la directory in cui si sta lavorando
what elenca gli m-files memorizzati nella pwd
cd
permette di cambiare directory
path o matlabpath elenca i possibili percorsi delle directory
MATLAB
addpath aggiunge la directory ai path già esistenti
pathtool permette di accedere alla finestra degli strumenti
per la gestione dei percorsi
Introduzione Matlab
Carla Guerrini
33
Operatori
Operatori aritmetici
+ addizione
- sottrazione
/ divisione a destra
1 / 4 = 0.25
\ divisione a sinistra
4 \ 1 = 0.25
^ elevamento a potenza
* moltiplicazione
Operatori logici
&
and
|
~
or
not
Introduzione Matlab
Carla Guerrini
34
17
Operatori
Operatori relazionali:
~=
<=
<
>=
>
==
diverso
minore uguale
minore
maggiore uguale
maggiore
uguale logico
Introduzione Matlab
>> x = ‘a’;
>> y = 3;
>> rep = x==y
rep
0
Carla Guerrini
35
Esempi
>> a=1; x=0; y=0;
z=
Inf
ans =
NaN
>> whos
Name
Size
a
ans
x
y
z
1x1
1x1
1x1
1x1
1x1
Introduzione Matlab
z=a/x,
y*a/x
Bytes Class
Attributes
8 double
8 double
8 double
8 double
8 double
Carla Guerrini
36
18
>> a=magic(3)
a=
8 1 6
3 5 7
4 9 2
>> b=i*ones(3,3)
b=
0 + 1.0000i
0 + 1.0000i
0 + 1.0000i
0 + 1.0000i
0 + 1.0000i
0 + 1.0000i
0 + 1.0000i
0 + 1.0000i
0 + 1.0000i
>> z=a+b
z=
8.0000 + 1.0000i 1.0000 + 1.0000i 6.0000 + 1.0000i
3.0000 + 1.0000i 5.0000 + 1.0000i 7.0000 + 1.0000i
4.0000 + 1.0000i 9.0000 + 1.0000i 2.0000 + 1.0000i
>> whos
Name
Size
Bytes Class Attributes
a
ans
b
x
y
z
3x3
1x1
3x3
1x1
1x1
3x3
72 double
8 double
144 double
8 double
8 double
144 double
Introduzione Matlab
complex
complex
Carla Guerrini
>> whos
Name
Size
Bytes
a
ans
l
p
rep
u
v_testo
x
y
z
5x5
1x1
5x5
5x5
1x1
5x5
1x29
1x1
1x1
5x5
200
8
200
200
1
200
58
2
8
400
Class
37
Attributes
double
double
double
double
logical
double
char
char
double
double complex
>>
Introduzione Matlab
Carla Guerrini
38
19
Scalari, vettori e matrici
•
Una matrice ha dimensione nxm (n righe, m colonne).
•
Un vettore ha dimensione nx1 (vettore colonna) o 1xn (vettore
riga).
•
Uno scalare ha dimensione 1x1.
a=1
(scalare, ovvero matrice 1x1)
a = [0 1 2 3 4], a = [0,1,2,3,4] ed anche a = [0:4]
b = [0, .5, 1, 1.5, 2, 2.5] ed anche b = [ 0:.5:2.5]
c = [.1, .1, .1, .1, .1] ed anche c = ones(1,5) * 0.1
Costruire vettori
» a = [1 2 3 4]
a =
1
2
3
4
» size(a)
ans =
1
4
fornisce la dimensione di “a”
usato per i vettori indica
la loro lunghezza
»length(a)
ans =
4
» a'
ans =
1
2
3
4
Definisce un vettore “a”
(le parentesi quadre indicano un
vettore o matrice)
» [1;2;3;4]
ans =
1
2
3
4
» size(a')
ans =
4
1
» length(a')
ans =
4
trasposta di “a” (ha dimensioni
“invertite” rispetto ad “a”)
20
Costruire matrici
» c =[1 2 3 4 ; 5 6 7 8]
c =
1
2
3
4
5
6
7
8
Per fare riferimento ad un elemento della matrice “c”:
» c(1,1)
ans =
1
» c(2,3)
ans =
7
Usare “:” per indicare tutte le righe o tutte le colonne, esempio:
•
•
•
c(1,:) indica la prima riga, tutte le colonne
c(:,2) indica tutte le righe, e la seconda colonna
c(:,2:4) indica tutte le righe, dalla seconda alla quarta colonna
» c(1,:)
ans =
1
2
3
4
» c(:,2)
ans =
2
6
» c(:,2:4)
ans =
2
3
4
6
7
8
Funzioni di matrici
» c =[1 2 3 4 ; 5 6 7 8]
c =
1
2
3
4
5
6
7
8
» sum(c)
ans =
6
8
10
12
» sum(c')
ans =
10
» sum(sum(c))
ans =
36
26
La funzione sum calcola la somma degli elementi di una matrice per colonne; il
risultato è un vettore.
Se la matrice è un vettore 1 x m (come sum(c)) , allora la somma è calcolata
sugli elementi del vettore.
» mean(c)
ans =
3
4
5
6
» max(c)
ans =
5
6
7
8
» min(c)
ans =
1
2
3
4
mean fornisce la media per colonne; max e min il massimo e il minimo ancora per
colonne.
21
Concatenazione di matrici (I)
» A = [2,0; 0,1; 3,3]
» A(1:2,1:2)
A =
ans =
2
0
3
0
1
3
2
0
» A =[A,[1;2;3]]
A =
2
0
1
0
1
2
3
3
3
0
1
» A =[A;[1 2]]
A=
2
0
0
1
3
3
1
2
Equivale a cat(1,A,[1 2])
Equivale a cat(2,A,[1;2;3])
Concatenazione di matrici (II)
» a = [1 2 3 4]; b = [5 6 7 8];
c =
1
2
3
4
5
6
7
8
c = [a; b]
Definiamo una matrice “c” come concatenazione dei vettori “a” e “b”.
Nota: l’uso di “;” dentro [….] indica la fine della riga.
» size(c)
ans =
2
4
Definiamo la matrice “d” ponendo “a” e “b” a fianco: notare il risultato diverso
da “c”
» d = [a b]
d =
1
2
3
4
5
6
7
8
22
Condizioni logiche su matrici
» d = c(1,:)
d =
1
2
3
4
Possiamo definire un vettore “e” che è una funzione logica di d
» e = d>2
e =
0
0
1
1
Possiamo ora usare “e” per trovare gli elementi di d>2
» d(e)
ans =
3
4
Matrici speciali
» ones(2,3)
» ones(2)
ans =
1
1
ans =
1
1
1
1
1
1
» zeros(2,1)
ans =
0
0
» zeros(1,4)
ans =
0
0
0
1
1
0
» rand(3,3)
ans =
0.2176
0.4909
0.8985
0.4054
0.1294
0.5943
0.5699
0.5909
0.3020
» eye(2)
ans =
1
0
0
1
23
Operazioni aritmetiche su vettori e matrici
» a = [1 2 3]
a =
1
2
3
Operatori:
+ - * /
» b = [4 5 6]
b =
4
5
6
» a + b
ans =
5
Somma/sottrazione (purchè le dimensioni siano
compatibili)
7
9
Moltiplicazione tra matrici: moltiplicare una matrice
n x m con una matrice m x p si ottiene una
matrice n x p
» a*b'
ans =
32
(qui moltiplichiamo una matrice 1 x 3 per una
3 x 1 otteniamo 1 x 1 (scalare))
Operatori su elementi di vettori e matrici
Gli operatori su elementi indicano operazioni aritmetiche tra elementi
corrispondenti: .*
./
.\
.^
» f =[1 2 3];
g= [4 5 6];
% Definiamo i vettori 1x3 f e g.
Nota: usando “;” alla fine della linea si elimina la stampa del risultato.
» h=f.*g
h = 4 10
» h=f.\g
h = 4.0000
» h=f./g
h = 0.2500
» h=f.^2
h = 1
4
18
2.5000
0.4000
9
2.0000
0.5000
Valido per vettori e matrici.
24
Variabili complesse
Un complex double array è visto come la somma di due double array.
Con le variabili 'i' o 'j' si indica l'unità complessa
i = −1
• Numeri complessi
(o
>>z = 3 + 4 * i
z = 3 + 4 * j )
•Array di variabili complesse
>>B=[ 1
2 ; 3
4 ]+i*[ 5
6 ; 7
8 ]
o equivalentemente
>>B=[ 1+5*j
Introduzione Matlab
2+6*j ; 3+7*j
Carla Guerrini
4+8*j ]
50
25
Scarica

Introduzione all`ambiente Matlab