Sei sulla pagina 1di 47

Scuola di Calcolo Scientifico con MATLAB (SCSM) 2017

Palermo 24 - 28 Luglio 2017

L.1.2. Le Variabili in MATLAB

www.u4learn.it Arianna Pipitone


La memoria del computer come archivio

Per gestire automaticamente le


informazioni, si devono
trattare:
•  Dati
•  Istruzioni
•  Comandi

Tali informazioni vengono


immagazzinate nella memoria
del computer e richiamate
all’occorrenza; la memoria è
quindi una sorta di archivio dal
quale reperire le informazioni
che servono in un determinato
momento

L.1.2. Le Variabili in MATLAB


Unità binarie di memorizzazione

I computer utilizzano nativamente la notazione binaria per rappresentare


e memorizzare le informazioni
L’unità di misura elementare dell’informazione è il bit che solitamente
viene rappresentato con le cifre 0 e 1
Esistono altri raggruppamenti di cifre binarie frequentemente utilizzati:
•  il byte ovvero un gruppo di otto cifre binarie
•  la word indica l’unità minima di memoria indirizzabile su un particolare
computer. La dimensione di una word dipende sia dall’architettura del
processore utilizzato sia dal sistema operativo installato
Sebbene la dimensione della word influisca parecchio sulle prestazioni di
un computer, è poco rilevante ai fini dei calcoli

L.1.2. Le Variabili in MATLAB


Le Variabili

Una variabile può essere considerata come una scatola in grado di


contenere un solo oggetto. Ogni scatola ha un nome univoco
(nome della variabile) che la distingue dalle altre

Il contenuto della scatola è il


dato
È possibile aprire la scatola in
qualsiasi momento per
prelevarne il contenuto ovvero
per accedere al dato

È importante distinguere il significato del dato contenuto in una variabile


dalla sua rappresentazione. Il significato è generalmente univoco (numero
di eventi, lunghezza di un oggetto) mentre la sua rappresentazione può
essere variabile (binaria, esadecimale, decimale, etc)

L.1.2. Le Variabili in MATLAB


Le Variabili

Supponiamo di avere le due variabili, Città e Anno,


contenenti rispettivamente il nome di una città e l’anno di
una data

Tipo stringa Tipo intero


•  Città è una variabile
contenente testo, e si dirà
quindi che è di tipo
stringa
•  Anno, al contrario, è una
variabile numerica, in
particolare di tipo intero

L.1.2. Le Variabili in MATLAB


Le Variabili

Una variabile è un insieme di words contigue contenente un


unico dato
Per identificare una variabile occorrono 4 parametri:
1.  l’Indirizzo della variabile: la locazione nella memoria
della prima word della sequenza di bit che descrive la
variabile
2.  il Nome della variabile: l’identificativo mnemonico
utilizzato per individuare la variabile all’interno dei
programmi (formato da lettere e numeri)
3.  il Contenuto della variabile: il dato che essa
memorizza
4.  il Tipo della variabile: il tipo di dato contenuto nella
variabile (numero, oggetto, stringa) dal quale derivano
le operazioni che è possibile effettuare su di essa

L.1.2. Le Variabili in MATLAB


Le Variabili

In generale, le variabili devono essere prima dichiarate e poi


assegnate
Si tratta di due operazioni differenti:
1.  La dichiarazione di una variabile
In questa fase vengono specificati il nome della variabile
e il tipo di dato che essa dovrà contenere

L.1.2. Le Variabili in MATLAB


Le Variabili

2.  L’assegnazione di una variabile


In questa fase si assegna un contenuto (dato) ad
variabile (ad ogni scatola nella nostra metafora)

L.1.2. Le Variabili in MATLAB


Le Variabili in MATLAB

In MATLAB le variabili vengono dichiarate e assegnate


contemporaneamente. Le due operazioni vengono eseguite in
simultanea. Si dice che MATLAB definisce dinamicamente le variabili

Per dichiarare una variabile in MATLAB bisogna:


•  scrivere il nome della variabile
•  inserire il simbolo di assegnazione (=)
•  indicare il valore della variabile

ria bile
e di va assegnazione di variabile
r a z ion
i a
dich nome_variabile = valore_variabile

L.1.2. Le Variabili in MATLAB


Le Variabili in MATLAB

La definizione dinamica delle variabili in MATLAB implica


che tramite il semplice comando

>> Anno = 2016;

MATLAB crea una variabile di nome Anno contenente il


valore 2016. Il tipo della variabile è inferito automaticamente
da MATLAB al momento dell’assegnazione
E se dopo scrivessimo
? >> anno = 2016;
si creerebbe un’altra variabile?

L.1.2. Le Variabili in MATLAB


Regole da seguire per i nomi delle variabili

Il nome di una variabile:


•  deve iniziare con una lettera
•  può contenere al più 63 caratteri
•  può contenere lettere, cifre e il simbolo di
underscore
•  non può contenere segni di punteggiatura quali
“.”, “,”, “;” etc….
•  non può contenere spazi vuoti

MATLAB è case-sensitive il che significa che


distingue le lettere maiuscole da quelle minuscole
(a≠A e Anno≠anno)

L.1.2. Le Variabili in MATLAB


Le Variabili in MATLAB

Il valore della variabile può essere >> a1 = 4


assegnato direttamente …
a1 =
4

… oppure come risultato di >> b1 = -2*5


un'espressione
b1 =
-10
Se non assegniamo il risultato di un computo ad alcune variabile,
MATLAB lo assegna alla variabile predefinita ans il cui valore può
essere utilizzato solo nel comando successivo
>> 3+2
ans =
5

L.1.2. Le Variabili in MATLAB


Le Variabili

Il comando isvarname nome_variabile restituisce 1 se


nome_variabile è un nome ammissibile per la variabile,
altrimenti restituisce 0
>> isvarname a1

ans =
1

>> isvarname 1a

ans =
0

L.1.2. Le Variabili in MATLAB


Le Variabili in MATLAB

Una volta specificata una variabile, questa comparirà nel


Workspace
Da questo momento è possibile richiamare il valore
contenuto nella variabile, utilizzandolo in formule e
programmi

>> My_var = 10

My_var =

10

L.1.2. Le Variabili in MATLAB


Le Variabili in MATLAB

Come si può notare, alla dichiarazione di una


variabile corrisponde nel Workspace la creazione di
una matrice…

…questo perché in MATLAB tutto è matrice!!!

Anche uno scalare o una stringa è considerata come


una matrice. Questo concetto risulterà più chiaro
nelle lezioni successive

L.1.2. Le Variabili in MATLAB


Le Variabili in MATLAB

Se si vuole inibire la visualizzazione a video dell’output di un


comando occorre fare terminare il comando con un punto e
virgola “;”
>> a3 = 12;

Se la variabile che si vuole creare è di tipo stringa, occorre


racchiudere il valore (o l'espressione) da assegnare tra due
singoli apici “’”:
>> x = 'casa'
x =
casa

L.1.2. Le Variabili in MATLAB


Le Parole Riservate in MATLAB

MATLAB riserva una serie di parole chiave (anche dette


keyword) che utilizza per la programmazione e che non
possono essere utilizzate come nomi di variabili. Sono
parole riservate!
Il comando iskeyword restituisce questo elenco.
Se si assegna ad una variabile un nome riservato, MATLAB
restituisce un errore
>> case = 4
case = 4
|
Error: Illegal use of reserved keyword "case".

L.1.2. Le Variabili in MATLAB


Le Parole Riservate in MATLAB

Il comando iskeyword nome_variabile restituisce 1 se


nome_variabile è un nome riservato, altrimenti restituisce
0
>> iskeyword case
ans =
1

>> iskeyword casa


ans =
0

L.1.2. Le Variabili in MATLAB


Comandi utili per gestire le variabili

Di seguito riportiamo un elenco di comandi utili per gestire le


variabili in MATLAB

clear cancella tu)e le variabili presen0 nel Workspace


clear x cancella la variabile x se presente
who mostra la lista di tu)e le variabili
whos mostra la lista di tu)e le variabili, indicandone la
dimensione, lo spazio occupato in memoria e info sul 0po
which x verifica se il nome x è rela0vo ad una funzione o ad una
variabile
namelengthmax res0tuisce la lunghezza massima del nome di una variabile

L.1.2. Le Variabili in MATLAB


I Tipi di Variabile

Come visto, il tipo di variabile identifica la tipologia di


contenuto e le operazioni che è possibile eseguire su di essa
Esempio:
•  su un intero potrò eseguire le classiche operazioni aritme0che
•  su una stringa potrò invece eseguire una modifica da maiuscolo a
minuscolo o una concatenazione
•  su una matrice potrò eseguire l’operazione di trasposizione

In MATLAB non è necessario specificare esplicitamente il tipo


di una variabile in quanto esso viene inferito nella fase di
dichiarazione ed assegnazione della stessa

L.1.2. Le Variabili in MATLAB


Tipi base dei dati

I computer odierni lavorano sostanzialmente con tre tipi base di


dati:

1.  gli interi


2.  i numeri reali
3.  i numeri complessi

Nella prassi matematica, ogni numero è identificato univocamente


da un simbolo, quale per esempio 14, π, 31.47 o 2 + 3i. Quando si
vuole eseguire un calcolo su dei numeri al computer, occorre
trasformare i numeri dalla loro rappresentazione simbolica ad una
rappresentazione immagazzinabile e gestibile da un computer
Ciò richiede una traduzione dal formato simbolico ad un formato
numerico rappresentato da un’opportuna sequenza di bit

L.1.2. Le Variabili in MATLAB


Tipi di base dei dati

Tale traduzione è limitata dal numero di bytes utilizzati per


memorizzare ogni specifico tipo di dati.
In particolare:
•  agli interi della matematica esatta corrispondono gli interi
computazionali, caratterizzati da un range finito di valori
ammessi
•  ai numeri reali corrispondono i numeri in virgola mobile, detti
numeri floating-point, caratterizzati anch’essi da un range finito
oltre che da un numero finito di cifre decimali ammesse
•  i numeri complessi non rappresentano un tipo a se stante dal
momento che vengono trattati come una coppia di numeri reali.
Sono pertanto soggetti agli stessi limiti dei numeri reali

L.1.2. Le Variabili in MATLAB


Numeri Interi

La maggior parte dei computer moderni riservano 16 bit (2


byte) o 32 bit (4 byte) per rappresentare i numeri interi. Gli
interi del secondo tipo sono anche chiamati interi di tipo lungo
(long integers)
Una volta deciso quale tipo di intero utilizzare, tutti gli interi
richiederanno lo stesso numero di bit per essere memorizzati,
nonostante in linea di principio potrebbe essere sufficiente un
numero inferiore di bit.
La ragione di un tale spreco di memoria risiede nel fatto che
la rappresentazione con un numero fissato di cifre
incrementa notevolmente le prestazioni dei processori

L.1.2. Le Variabili in MATLAB


Numeri reali in virgola fissa

Esistono vari modi di rappresentare i numeri reali con un computer.


Uno di questi consiste nell’utilizzare la notazione in virgola fissa
Tale notazione imposta un numero fisso di posizioni decimali per
ogni numero rappresentato e pertanto equivale a ricorrere ai
numeri interi per rappresentare porzioni di una certa unità
I numeri in virgola fissa presentano comunque parecchie
limitazioni:
•  hanno una finestra di rappresentazione fissata, che limita
fortemente la possibilità di rappresentare numeri molto grandi o
molto piccoli
•  sono particolarmente soggetti a perdite di precisione in
operazioni quali la divisione di due numeri grandi

L.1.2. Le Variabili in MATLAB


Numeri reali in virgola mobile

Un’altra possibilità di rappresentazione dei numeri reali


consiste nella rappresentazione in virgola mobile, anche
detta rappresentazione floating-point, che rappresenta la
notazione più utilizzata
Tale rappresentazione si basa sulla notazione scientifica
usata per esprimere i numeri reali. Secondo tale notazione, i
numeri reali vengono rappresentati come il prodotto di un
numero decimale (in genere compreso tra 0 e 1) per il
numero della base del sistema di numerazione elevato ad un
opportuno esponente
Per esempio, il numero 326.4523 può essere rappresentato
nella forma 3.264523 × 102. Come è evidente, in questa
rappresentazione la virgola si sposta al variare del numero
per fare in modo che il numero si adegui ad una
rappresentazione standard
L.1.2. Le Variabili in MATLAB
Numeri reali: limitatezza e finitezza

Sia che si tratti di numeri in virgola mobile fissa o mobile, è


importante notare come entrambe le rappresentazioni
consentono di rappresentare numeri reali soggetti a diverse
limitazioni:
•  i numeri rappresentabili sono limitati nel senso che
sono contenuti all’interno di un intervallo finito limitato sia
inferiormente sia superiormente (esiste un limite inferiore
ed uno superiore al valore assoluto dei numeri
rappresentabili)
•  l’intervallo tra un numero rappresentabile e quello
immediatamente successivo (minore o maggiore) è
finito. Nel caso dei numeri in virgola fissa, tale intervallo
ha un valore fisso; al contrario, nel caso di numeri in
virgola mobile, l’intervallo varia al variare dell’ordine di
grandezza del numero
L.1.2. Le Variabili in MATLAB
Numeri reali: virgola mobile VS virgola fissa

La rappresentazione in virgola mobile dei numeri reali


consente di ovviare ai problemi di rappresentazione tipici dei
numeri in virgola fissa. Infatti, al contrario di questi ultimi, i
numeri in virgola mobile offrono un intervallo di
rappresentazione molto più esteso e risultano meno soggetti
a problemi di perdita di precisione nelle operazioni
algebriche.
Lo svantaggio nell’utilizzo dei numeri floating-point, ammesso
che tale possa considerarsi, consiste nel fatto che
l’intervallo tra due numeri contigui in virgola mobile non
sempre si mantiene costante

L.1.2. Le Variabili in MATLAB


Lo standard IEEE 754

La rappresentazione dei numeri in virgola mobile è stata formalizzata in


uno standard nel 1985, quando l’IEEE (Institute of Electrical and
Electronics Engineers) pubblicò un report dal nome Binary Floating Point
Arithmetic Standard 754-1985.
In base alle regole di codifica fissate dallo standard sopra citato, per
codificare un numero floating-point si utilizza un insieme di bit (il cui
numero varia a seconda che si consideri un numero in singola o in doppia
precisione) avente una organizzazione standard:
•  un bit, denominato s, viene utilizzato per indicare il segno
•  un certo numero di bit viene utilizzato per codificare un esponente, c,
denominato caratteristica
•  i rimanenti bit vengono utilizzati per codificare una parte nota come
frazione o mantissa, f
La base per l’esponente è 2.

L.1.2. Le Variabili in MATLAB


Lo Standard IEEE 754

L’assegnazione dei bit regolata dallo Standard dipende


dalla precisione

Singola precisione
(single o float)

Doppia precisione
(double)

L.1.2. Le Variabili in MATLAB


La precisione

La precisione di un numero dipende dal numero di bit


impiegati nella rappresentazione in virgola mobile del numero
stesso.
In generale:

Singola precisione à 32 bit


Doppia precisione à 64 bit

L.1.2. Le Variabili in MATLAB


I Tipi di Variabile in MATLAB

I tipi predefiniti in MATLAB sono 5:


Tipi non numerici:
•  logical
•  char
Tipi numerici in virgola mobile:
•  single (singola precisione)
•  double (doppia precisione)
Tipi numerici interi:
•  int8, unint16, int32, unint32, int64, unint64
Sebbene siano presenti diversi tipi numerici, MATLAB
realizza le operazioni con il solo tipo double per mantenere
un’elevata precisione dei risultati. Quindi il tipo di dato di
default, ovvero il tipo privilegiato, è il tipo double

L.1.2. Le Variabili in MATLAB


Il Tipo Double

Il tipo double è costituito da un sottoinsieme limitato e


discreto dei numeri reali. In particolare:
Limite inferiore 2.2251e-308
Limite superiore 1.7977e+308
Le operazioni ammesse con i numeri di tipo double sono:
Assegnazione =
Somma +
So)razione -
Mol0plicazione *
Divisione /
Elevamento a potenza ^
Confronto > < >= <= == ~=

L.1.2. Le Variabili in MATLAB


Il Tipo Single

Il tipo single è costituito da un sottoinsieme limitato e


discreto dei numeri reali. Con questo tipo NON è possibile
effettuare operazioni matematiche
Limite inferiore 1.2e-38
Limite superiore 3.4e+38
Le operazioni ammesse con i numeri di tipo single sono:
Assegnazione =
Confronto > < >= <= == ~=

L.1.2. Le Variabili in MATLAB


I tipi interi

Esistono diversi tipi interi, che si differenziano per il numero


di bit utilizzati per la loro codifica (NB: unint à unsigned int)

Tipo bit Limite inferiore Limite superiore


int8 8 -128 +127
unint8 8 0 255
int16 16 -32768 +32768
unint16 16 0 65535
int32 32 –2147483648 +2147483647
unint32 32 0 4294967296
int64 64 -9223372036854775808 +9223372036854775807
unint64 64 0 18446744073709551616

L.1.2. Le Variabili in MATLAB


I tipi interi

I tipi interi possono essere usati solo per memorizzare dati


con minore occupazione di memoria. Con essi NON è
possibile fare operazioni matematiche

Le operazioni ammesse con i numeri di tipo intero sono:


Assegnazione =
Confronto > < >= <= == ~=

L.1.2. Le Variabili in MATLAB


Il tipo char

Il tipo char consiste in un insieme di caratteri, alcuni


stampabili (caratteri alfabetici, cifre, caratteri di punteggiatura,
ecc.) ed altri non stampabili, tramite i quali si gestisce il
formato dell’input/output (caratteri di controllo)
I sottoinsiemi delle lettere e delle cifre sono ordinati e
coerenti
Per la rappresentazione interna, viene tipicamente usato il
codice ASCII il quale mette in corrispondenza ogni carattere
con un numero intero compreso tra 0 e 255

L.1.2. Le Variabili in MATLAB


Il codice ASCII

L.1.2. Le Variabili in MATLAB


Il tipo logical

Il tipo logical è costituito da due soli valori, corrispondenti a


falso e vero, e rappresentati da 0 e 1
Il tipo logical rappresenta le informazioni di tipo logico (es. il
risultato di un confronto)
Le operazioni ammesse con i numeri di tipo single sono:

Assegnazione =
Disgiunzione (OR) |
Congiunzione (AND) &
Negazione (NOT) ~

L.1.2. Le Variabili in MATLAB


Algebra del tipo logical

X Y X & Y X | Y ~X

0 0 0 0 1

0 1 0 1 1

1 0 0 1 0

1 1 1 1 0

L.1.2. Le Variabili in MATLAB


Variabili predefinite

MATLAB include un insieme di variabili predefinite contenenti


valori particolari.
Tali variabili possono essere usate senza che sia necessario
inizializzarle.
Variabile Dato contenuto
pi π rappresentato con 15 cifre significa0ve
i, j unità immaginaria del numero complesso
Inf risultato infinito di un’operazione
NaN risultato di un’operazione indefinita

L.1.2. Le Variabili in MATLAB


Costanti

Una costante è un oggetto, appartenente ad un certo tipo, il


cui valore rimane immodificato durante l’esecuzione del
programma. Ad una costante può essere attribuito un nome

Per esempio, posso decidere di


definire una costante Anno che
nel mio programma non
cambierà mai

L.1.2. Le Variabili in MATLAB


Costanti

Costanti di tipo intero


Sono definite come sequenze di cifre decimali, eventualmente precedute
da un segno (+ o -):
0 -1 3256 +34
Costanti di tipo reale
Sono definite come sequenze di cifre decimali, eventualmente precedute
da un segno (+ o -):
0.1 -3.7 0.0001 1.0e-4 -7.6e12
Costanti di tipo carattere
Sono definite come sequenze di caratteri racchiusi tra singoli apici (‘):
‘x’ ‘Valore di n: ‘ ‘123’ ‘Il risultato
e’’: ‘ ‘’
Costanti di tipo logico
sono solo due: 0 e 1

L.1.2. Le Variabili in MATLAB


Costanti

MATLAB dispone di alcune costanti predefinite


particolarmente utili e ricorrenti nei calcoli
Nome Valore Descrizione
intmax 2147483647 Il più grande intero posi0vo ges0bile da MATLAB

intmin -2147483647 Il più piccolo intero nega0vo ges0bile da MATLAB


Il più grande numero posi0vo normalizzato in virgola
realmax 1.797693134862316e+308
mobile ges0bile da MATLAB
Il più piccolo numero posi0vo normalizzato in virgola
realmin 2.225073858507201e-308
mobile ges0bile da MATLAB
La distanza tra 1 e il numero successivo
2.220446049250313e-16 = rappresentabile da MATLAB. È possibile conoscere la
eps
2^(-52) distanza tra un numero n e il suo successivo
rappresentabile tramite il comando eps(n)

pi 3.141592653589793 Il valore di pi in virgola mobile

L.1.2. Le Variabili in MATLAB


Formato dei numeri in MATLAB

Si può forzare MATLAB ad usare un determinato formato di visualizzazione


per l'output utilizzando il comando format tipoformato
Comando Azione Esempio (π)
rappresentazione fixed-point
format short (default) 3.1416
con 4 cifre decimali
rappresentazione fixed-point
format long 3.141592653589793
con 15 cifre decimali
rappresentazione floa0ng-point
format short e 3.1416e+00
con 4 cifre decimali
rappresentazione floa0ng-point
format long e 3.141592653589793e+00
con 15 cifre decimali
rappresentazione con frazione
format rat 355/113
irriducibile (approssimata)
rappresentazione solo per
format + +
mezzo del segno + o – o vuoto
format hex rappresentazione esadecimale 400921fb54442d18
elimina/aggiunge linee vuote
format compact/loose
tra le righe

L.1.2. Le Variabili in MATLAB


Numeri in MATLAB: oltre i limiti

MATLAB non gestisce numeri maggiori di


>> 10^309
realmax. L'assegnazione ad una
ans =
variabile un numero maggiore di
Inf
realmax viene interpretata come infinito

MATLAB tuttavia riconosce numeri minori di realmin. Il più


piccolo numero riconosciuto da MATLAB è eps(realmin), cioè
4.940656458412465e-324. L'assegnazione ad una variabile di un
numero minore di eps(realmin) viene interpretata come zero
>> 4.940656458412465e-325 >> a = 1 + eps/2
ans = ans =
0 ???

Provare a digitare: eps(0.01), eps(1), eps(100)

L.1.2. Le Variabili in MATLAB


Numeri complessi in MATLAB

MATLAB è in grado di gestire i numeri complessi che


vengono visualizzati in notazione algebrica usando l'unità
immaginaria “i” o “j”
>> z = 3+2i
z =
3.0000 + 2.000i

Di seguito si riportano alcune funzioni che MATLAB mette a


disposizione per operare con i numeri complessi
Comando Risultato
complex(a,b) Genera il numero complesso a+ib
real(z) Res0tuisce la parte reale del numero complesso z
imag(z) Res0tuisce la parte immaginaria del numero complesso z
conj(z) Res0tuisce il complesso coniugato del numero complesso z

L.1.2. Le Variabili in MATLAB


Primi passi…

Impartire nell'ordine le seguenti istruzioni nella


Command Window:

whos('r')
parola = 'numero'
whos
n = 5
r = cos(pi/4) cos = 3
sqrt(-2) cos(pi/4)
which parola cos + 5
which b clear cos
which cos cos(pi/4)
whos r
cos + 5

L.1.2. Le Variabili in MATLAB

Potrebbero piacerti anche