Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
E’
calcolatore che prevede precisione semplice o doppia.
Nella precisione semplice a 32 bit, 1 bit è dedicato al segno (1 rappresenta - e 0
rappresenta +), 8 bit sono dedicati all’esponente e 23 bit dedicati alla mantissa
nella rappresentazione dei numeri reali. Nella precisione doppia a 64 bit abbiamo
1 bit per il segno, 11 per l’esponente e 52 alla mantissa. Generalmente parlando il
circuito meccanico addetto al calcolo è più efficiente e veloce se i numeri reali
vengono rappresentati con precisione doppia a 64 bit.
IEEE 754 a 32 bit: esponente
L’esponente in questo standard è rappresentato in “eccesso” 127 detta anche
“polarizzazione” (rappresentare numeri polarizzati significa arrotondarli per
eccesso) o “bias”. Il range varia tra -127 e +128 ma i due valori più esterni sono
“riservati” e dunque vale: -126 ≤ e ≤ 127
La rappresentazione in “eccesso 127” significa che al “vero” esponente è stato
aggiunto il valore 127, e dunque per ottenere l’esponente originale bisogna
sottrargli il valore 127. Per esempio se gli otto bit dell’esponente contengono il
valore 10100011 ossia 163 in base 10 avremo che il “vero” esponente vale 163 –
127 = 36.
Numeri normalizzati e denormalizzati
Il problema che si pone è l’ottimizzazione nella rappresentazione dei numeri
molto piccoli (denormalizzati) e standard/grandi (normalizzati), lo zero, l’infinito
e il “non numero” detto in gergo anglosassone “NaN” ossia “Not a Number”.
I numeri normalizzati sono quelli in cui l’esponente è diverso da zero, ossia:
e≠00000000 25
la mantissa risulta normalizzata tra:
1 ≤ m< 2
Ossia è sempre nella forma:
1.XXXXXXXXX...X
Essendo il valore “1” sempre presente esso è considerato implicito e dunque non
occupa nessun bit. Pertanto tutti e 23 i bit sono stati utilizzati per rappresentare
la parte frazionaria.
I numeri denormalizzati sono quelli in cui l’esponente è uguale a zero,
ossia:
e=00000000
La mantissa risulta normalizzata tra:
0< m < 1
Ossia è sempre nella forma:
0.XXXXXXXXX...X
Vengono, come per la forma normalizzata, usati tutti e 23 i bit; in questo caso ad
essere implicito è lo zero. 26
4. OVERFLOW E UNDERFLOW
Con il termine “overflow” si intende lo “sconfinamento” in intervalli numerici
non consentiti dalla rappresentazione usata che “eccede” numericamente (in
entrambe le direzioni) la capacità della notazione oppure (underflow) sconfina in
numeri troppo piccoli e non rappresentabili. 27
5. CONFRONTO TRA NUMERI IN VIRGOLA MOBILE
Confrontando il primo bit che rappresenta il segno la macchina ordina subito due
numeri confrontati in ordine crescente, se i bit mostrano infatti tra i due numeri
segni discordi, il positivo è chiaramente maggiore, se i bit mostrano stesso segno
positivo il numero con esponente maggiore è il più grande e a parità di esponente
si ha solo stesso discorso con la mantissa. Se i bit mostrano segno concorde e
negativo allora l’esponente più piccolo indica il numero più grande e a partità di
esponente si ha lo stesso discorso per la mantissa. 28
6. C ONFIGURAZIONI PARTIC OL ARI
Lo standard prevede delle particolari configurazioni per rappresentare le
condizioni limite:
Zero, richiede una configurazione particolare, non essendo ovviamente compreso
• nei numeri denormalizzati. In particolare esponente e mantissa vengono poste
con valore zero.
Infinito, serve a rappresentare la condizione matematica di infinito e si
• rappresenta con la mantissa a zero e tutte le restanti cifre a 1.
NaN, rappresenta valore indefinito (Not a Number) e serve ad indicare una
• situazione in cui il risultato dell’operazione non è un numero (ad esempio una
divisione per zero) e si rappresenta con la mantissa diversa da zero e tutte le
rimanenti cifre a 1.
Da notare che un quantitativo prefissato di bit (una sequenza di dimensioni finite)
consente di rappresentare un numero predeterminato e incontrovertibile di
differenti entità numeriche. In particolare, data la base due, esso sarà pari proprio
a “due elevato al numero di bit”. In altri termini, con 32 bit si possono
32
rappresentare esclusivamente 2 valori.
7. E R R O R E A S S O L U T O E D E R R O R E R E L A T I V O
Rappresentando un numero reale (razionale o irrazionale) con dei registri
macchina a lunghezza finita, si commette un errore di approssimazione. Verrà in
realtà sempre rappresentato un numero razionale n’ (detto n il numero “vero”)
con un numero limitato di cifre significative. 29
Se la mantissa è normalizzata l’errore relativo massimo è costante su tutto
l’intervallo rappresentato ed è pari ad un’unità sull’ultima cifra rappresentata. Ad
esempio:
Nella notazione non normalizzata l’errore relativo massimo non è costante.
8. EPSILON MACC HINA
La grandezza che rappresenta la “bontà di approssimazione” del numero reale è il
cosiddetto epsilon macchina, il cui valore si può ottenere tramite una specifica
funzione chiamata “eps”. Essa ci consente di valutare esattamente la “distanza”
tra il numero in virgola mobile |X| (in valore assoluto) ed il successivo.
A cosa serve?
Le operazioni aritmetiche tra numeri reali “approssimati”, in particolare quando
ripetute in maniera sequenziale, possono portare a risultati completamente
sbagliati. Tramite la conoscenza quantitativa dell’errore commesso è possibile
valutare l’attendibilità dei risultati e/o evitare errori grossolani.
Una singola operazione tra due numeri dà luogo ad un errore relativo dell’ordine
della precisione della macchina (epsilon). Succede però, come negli esempi
precedenti, che il risultato di un’operazione (quindi già “sbagliato” di una certa
quantità) sia il dato di input di un’operazione successiva, che dunque si “propaga”
nel risultato finale e si somma al precedente. Le moltiplicazioni (o divisioni) sono
infatti viste dal computer come una serie di somme (o sottrazioni), quindi gli
errori aumentano. La misura della propagazione dell’errore dipende dalla
sensibilità che una certa operazione ha nei confronti di quella che si definisce
come perturbazione dei dati. 30
Il risultato si dice ben posto, o ben condizionato, se l’errore finale di una serie di
operazioni è dello stesso ordine di grandezza di quello che si avrebbe al termine di
una sola operazione; viceversa è detto mal posto o mal condizionato. Scrivere
qualcosa in maniera tale da avere il minor numero di operazioni complesse
(prodotto o divisione), porta ad avere un risultato ben posto. 31
9. ESPRESSIONI NUMERICHE
Un operatore può essere:
Unario, quando ha un solo operando.
• Binario, quando ha due operandi.
•
Ricordiamo poi gli operatori comuni:
Addizione (+).
• Sottrazione/Negazione (-).
• Moltiplicazione (*).
• Divisione canonica (/)
• Divisione inversa (\), ossia il denominatore fratto numeratore.
• Elevamento a potenza (^).
•
Tutti gli operatori comuni sono operatori binari. Inoltre, le parentesi consentono
di modificare l’ordine con cui le operazioni vengono effettuate. Da tenere presente
anche la gerarchia con cui gli operatori vengono applicati:
1. Parentesi.
2. Elevamento a potenza.
3. Moltiplicazione e divisione.
4. Somma o sottrazione.
Tra le funzioni predefinite, cioè gli operatori già programmati e messi a nostra
disposizione, abbiamo:
Funzioni trigonometriche, come sin(x), cosh(x), atan(x)...
• Funzioni esponenziali e logaritmiche, come exp(t), log(y)...
• 32
Generatori di numeri o matrici pseudocasuali, come rand(N, z).
•
10. OPERAZIONI C ON NUMERI IN VIRGOL A MOBILE
Gli operatori binari possono effettuare operazioni tra variabili di tipo diverso. In
questo caso, vince il tipo meno complesso (moltiplicando double con single ottengo
un single). Con il type-casting (termine inglese per indicare la conversine di tipo) è
possibile cambiare il tipo di variabile (poichè Matlab, come già detto, di per sé
adopera una tipizzazione debole); ad esempio, possiamo approssimare un numero
cambiando un valore in tipo double o in tipo single; in questo caso vengono
eliminate delle cifre significative.
11 . E S P R E S S I O N I R E L A Z I O N A L I
Le espressioni relazionali vengono utilizzate per verificare una data condizione.
Sono una sorta di domanda: ponendo, ad esempio, a < b, chiedo se una variabile
sia minore o meno dell’altra; la risposta può essere true oppure false e viene
comunicata con “ans = 1” (vero) o “ans = 0” (falso).
In Matlab sono disponibili i seguenti operatori:
> Maggiore
< Minore 33
>= Maggiore o uguale
<= Minore o uguale
== Uguaglianza
~= Disuguaglianza
11 . A L G E B R A B O O L E A N A (ALGEBRA DELL A VERITÀ)
L’algebra booleana è una branca dell’algebra in cui le variabili possono assumere
solo due valori distinti:
True (vero) in Matlab/Octave, rappresentato dal valore 1.
• False (falso) in Matlab/Octave, rappresentato dal valore 0.
•
Le operazione di base sono quelle logiche:
and - && Prodotto logico (congiunzione)
or - || Somma logica (disgiunzione)
not - ~ Complementazione (negazione)
Si dimostra che qualsiasi funzione logica può essere ricondotta ad una
34
combinazione dei tre operatori di base elencati. 35
12 . A R R AY
L’array è un insieme di dati omogenei organizzato in maniera tale che ciascun
elemento (dato) sia identificato univocamente. Per chiarire meglio il concetto, si
può pensare di prendere un contenitore con tanti cassetti. Scalari, vettori e matrici
sono delle tipologie particolari di array:
Lo scalare è un array di un unico elemento (1 X 1).
• Il vettore è un array monodimensionale (m X 1 o 1 X n).
• La matrice è un array bidimensionale (m X n).
•
13 . V E T T O R I E M AT R I C I
Ogni tipo definito in Matlab è una matrice di tipo n X m. Persino una grandezza
scalare, come un numero, è in effetti un caso particolare di matrice n X m, in cui n
= 1 ed m = 1. Non a caso il nome di Matlab deriva da Matrix Laboratory.
Vettori
I vettori, come detto, sono disposti su una riga o su una colonna. Ciascun
elemento del vettore ha due attributi separati e distinti che lo rendono univoco:
- Risolvere un problema di matematica
- Riassumere un testo
- Tradurre una frase
- E molto altro ancora...
Per termini, condizioni e privacy, visita la relativa pagina.