La rappresentazione dei numeri interi: i numeri fixed point Numeri

Numeri fixed point
Fissare
La rappresentazione dei
numeri interi: i numeri fixed
point
La base
Il numero di cifre a disposizione
per il valore assoluto
1 per il segno
Indichiamo con
la rappresentazione
fixed point di un intero
1
Rappresentazione fixed point di
un intero positivo N
2
Interpretazione di un numero fixed
point
Notazione posizionale
A seconda del numero
di cifre
della rappresentazione di N in base
si ha
1)
2)
3
4
1
Esempio: rappresentazione fixed
point di 1235 in base 2 con t+1
=16 cifre
Esempio: rappresentazione fixed
point di 70231 in base 2 con t+1
=16 cifre
0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 1
0 0 0 1 0 0 1 0 0 1 0 1 0 1 1 1
(4695)10
6
Se t < p allora fi(N) è il resto della
divisione di N per
7
Il più grande intero positivo
rappresentabile
esattamente
Esempio
Sono rappresentabili esattamente
solo gli interi positivi compresi
nell’intervallo
8
9
2
Rappresentazione degli interi
negativi
Esempio: rappresentazione
fixed point di –1235 in base 2
con 16 cifre
Lavoriamo in base 2.
Complemento a 2 in t+1 cifre
Una regola pratica per ottenere il
complemento a 2 è la seguente:
Prendere
Scambiare 1 con 0 e 0 con 1
Aggiungere 1.
toggle
aggiungi 1
10
Il primo bit è sempre uguale a 1!
11
Il più piccolo intero negativo
rappresentabile su t+1 cifre in base 2
Infatti si ha
Per valori negativi più piccoli si incorre nell’underflow
intero
12
13
3
L’insieme degli interi
rappresentabili esattamente in
fixed point, base 2, t+1 cifre
Esempi
È costituito dagli interi contenuti
nell’intervallo
In generale, se la base è
14
Insieme dei numeri fixed point,
base 2, 4 cifre
15
Esercizi
16
17
4
Aritmetica fixed point:
sottrazione
Aritmetica fixed point: somma
18
Programma per calcolare il
numero di cifre e il massimo
intero
19
Artimetica fixed point: prodotto
Siccome il prodotto di due numeri a
t+1 cifre può essere a 2(t+1) cifre, si
può incorrere nell’ overflow intero.
Si esegue con addizioni e scorrimenti
a destra.
#include <stdio.h>
#include <math.h>
main()
{
int num;
num=1;
while(num>=0) ++ num;
printf("max int rappresentabile= %i \n ",num-1);
num=-1;
while(num<0)--num;
printf("min intero rappresentabile= %i \n",num+1);
getchar();
}
20
21
5
L’aritmetica fixed point è
esatta purchè si rimanga
nell’intervallo di
rappresentazione, cioè a
meno di overflow
La rappresentazione dei
numeri reali: i numeri
floating point
23
Richiamo:
24
Esempio
Fissata una base β, ogni numero reale α
può essere rappresentato come
dove
sono le cifre della
rappresentazione della mantissa
in base
è l’esponente
25
26
6
Limitazioni
Numeri floating point
Fissati
l’insieme F è
costituito dai numeri reali del tipo
La mantissa potrebbe richiedere un
numero infinto di cifre
Anche l’esponente
Dove
sono simboli della base
Dovremo fissare un numero massimo
di cifre per la mantissa e delle
limitazioni per il minimo e il massimo
esponente.
27
28
Rappresentazione dell’insieme F su
un numero finito di bit
Caso β=2
Osserviamo che
implica
necessariamente
In questo caso, l’insieme
è
costituito dai reali del tipo
Abbiamo a disposizione un numero finito
di bit per rappresentare
il segno
l’esponente
la mantissa
che si possono scrivere in modo
equivalente come
Cosa memorizziamo nelle posizioni
disponibili?
29
30
7
Convenzioni del formato IEEE
(Institute of Electrical and Electronic Engeneerings),
documento 745 dell’ANSI
Precisione semplice e doppia
β=2;
1 bit per il segno (0=+, 1=-);
Rappresentazione di t cifre della
mantissa. Il primo è 1 e non lo si
rappresenta, quindi si
rappresentano solo le cifre
Rappresentazione traslata di una
costante (bias) dell’esponente p+bias
31
Rappresentazione floating point
di 4.25
32
Da floating point a base 10
Conversione da base 10 a base 2
Traslazione inversa dell’ esponente:
128-127=1
Mantissa
Normalizzazione
Traslazione dell’esponente
33
34
8
Il più piccolo numero floating
point (pr. semplice)
Il più grande numero floating
point
Numeri più piccoli danno
l’underflow floating point e vengono
rappresentati come 0
Numeri più grandi danno l’overflow
floating point e provocano l’arresto
dell’elaborazione
35
36
Rappresentazione
dell’esponente
Rappresentazioni speciali
Per effetto della traslazione, gli esponenti
sono rappresentati come numeri che
vanno da 1 a 254 (precisione semplice).
Introducendo ulteriori convenzioni è
possibile rappresentare sullo stesso
numero di bit anche altri numeri non
appartenenti ad F.
Esponenti negativi hanno il primo bit=0,
quelli positivi hanno il primo bit=1
37
38
9
L’insieme dei numeri floating
point
Numeri denormalizzati
Sono numeri più piccoli di
Non è continuo, ma è discreto e
limitato.
Ha esattamente
elementi (si ottiene contando tutte
le possibili combinazioni tra segno,
mantissa ed esponente).
39
Insieme dei numeri floating point
con β = 2, t-1= 2, L = -2, U = 1
40
Osservazioni
Attorno allo 0 c’è un intervallo
di numeri reali che vengono
rappresentati come 0 (underflow)
Per numeri più grandi di
o più piccoli di
si incorre in
overflow
Numeri piccoli sono meglio rappresentati
41
42
10
Come si rappresenta un numero
che non appartiene ad F?
Osservazione
Arrotondamento o troncamento
43
44
Troncamento
Arrotondamento
Tutti i numeri in [2,5/2) vengono
rappresentati come “2”
1
2=
21
1.00
1.001 21
1.0011 21
………
5/2 =1.01 21
fl
5
4
7
2
5
2
3
2
7
4
2
3
1.00 21
fl
1.01
7 1 15
+ =
4 8 8
21
45
2+
1 9
=
4 4
46
11
Arrotondamento
Tutti i numeri in [15/8,9/4) vengono
rappresentati come “2”
15/8 = 1.111 20
1.1111 20
1.111101 20
1.00 21
1.0001 21
1.00011 21
………
9/4 =1.001 21
La rappresentazione floating point di
un numero reale α si può definire
come l’elemento di F più prossimo
ad α
fl
1.00 21
fl
1.01 21
47
49
Definizione di errore assoluto e
relativo
Ogni volta che si vuole
rappresentare un numero reale che
non appartiene all’insieme F si
commette un errore
50
51
12
Teorema dell’errore di
rappresentazione di un numero
reale α
Arrotondamento-> k=1/2,
Troncamento->k=1
Operazioni con i numeri
floating point
Precisione di macchina
Proprietà della precisione di macchina:
52
55
Esempio
Il risultato di un’operazione aritmetica tra
numeri di F può non appartenere ad F.
Occorre rappresentare il risultato
all’interno dell’insieme F.
Le operazioni aritmetiche vengono
ridefinite.
2+
1
= (1.001) 2 ⋅ 21 ∉ F
4
56
57
13
Operazioni con i numeri finiti
Principio generale
Il risultato di un operazione di
macchina deve essere un numero di
macchina
Il risultato “esatto” dell’operazione
viene
Definizione delle operazioni con i numeri finiti
normalizzato
troncato o arrotondato
58
59
Somma algebrica
Teorema
somma
usuale
Che si può scrivere anche come
Ogni operazione introduce un errore
L’errore è maggiorato dalla precisione di
macchina
60
1. Si scala il numero con l’esponente più basso in
modo che gli addendi abbiano lo stesso
esponente (quello più alto)
2. Si esegue la somma delle mantisse
3. Si memorizzano le prime t cifre significative(per
arrotondamento o troncamento) in zm
4. Si normalizza il risultato aggiustando
l’esponente in modo che la mantissa sia <1
61
14
Esempio (t=5, β=10,
arrotondamento, forma normale)
62
Cancellazione di cifre
63
Errore di incolonnamento:
x+y=x anche se y≠0
0000
Si ha cancellazione
quando si sottraggono
quantità circa uguali 64
Capita ogni volta che
65
15
Prodotto
Il fenomeno dell’errore di
incolonnamento mostra che non
esiste un unico elemento neutro
della somma, poiché si ha
1. Si esegue il prodotto delle mantisse
2. Si esegue arrotondamento o
troncamento alle prime t cifre
significative
3. Si sommano gli esponenti,
normalizzando il risultato se necessario
66
67
Esempio t=5, β=10,
arrotondamento
Quoziente
68
1. Si scala x in modo che xm<ym
2. Si esegue xm/ym
3. Si memorizza in zm l’arrotondamento o
troncamento alle prime t cifre
significative
4. Si calcola l’esponente
69
16
Esempio t=5, β=10,
arrotondamento
Le operazioni tra numeri finiti si
riconducono a:
70
Non validità delle proprietà
formali delle operazioni
F non è chiuso rispetto alle
operazioni, ci può essere overflow;
L’elemento neutro della somma (e
del prodotto) non è unico;
L’opposto di un numero non è
unico.
NON VALGONO
Associativa di somma e prodotto
Distributiva
Legge di annullamento del prodotto
1.
2.
3.
Operazioni tra numeri del tipo
Moltiplicazioni o divisioni per β
Somme e sottrazioni di esponenti
Operazioni fixed point
Scorrimenti
Sono riconducibili ad operazioni fixed point:
Si ha
Quindi si eseguono operazioni fixed point e poi di
moltiplica per un opportuno fattore di scala
71
NON vale l’associativa della somma
72
73
17
Osservazione importante 1
Osservazione importante 2
L’errore commesso nel calcolo di
un’espressione dipende
dall’algoritmo usato per calcolarla
A seconda dell’algoritmo
applicato, l’errore presente nel
risultato può essere più o meno
grande:
Nell’esempio precedente
1. Errore =
2. Errore =
L’accuratezza del risultato dipende dall’algoritmo applicato
74
NON vale la distributiva
75
NON vale la legge di
annullamento del prodotto
76
77
18
Conseguenze: non validità della
associativa del prodotto
Propagazione degli errori
Un algoritmo numerico è costituito da
una successione di operazioni;
Poiché gli errori di arrotondamento
capitano potenzialmente ad ogni
operazione, ogni risultato intermedio può
esserne soggetto e influenzare i risultati di
tutte le operazioni successive.
L’accumulo di questi errori viene
chiamato propagazione degli errori.
78
Amplificazione dell’errore di
rappresentazione
79
Amplificazione dell’errore sui
risultati delle operazioni
non c’è errore
sull’operazione
Errore iniziale di
rappresentazione
dei dati
Errore complessivo sul
risultato
10-4
100
Errore sulla prima
operazione
80
10-4
Errore complessivo sul
risultato
100
81
19
Problemi e soluzioni
Esempi
dati:
soluzioni:
Analisi dell’errore
dati:
soluzioni:
82
83
Cause di errore nel calcolo della
soluzione numerica di un problema
L’errore complessivo dipende
dati
dalla relazione che lega la soluzione ai dati
soluzione
Gli errori dipendono
errore di rappresentazione dei dati al calcolatore
“che soluzioni ottengo a partire da dati con errore?”
funzione che
lega i dati
alla soluzione
dal modo in cui la soluzione viene
effettivamente calcolata
errori dovuti all’aritmetica finita
“che risultato ottengo operando in aritmetica finita?”
Dalle caratteristiche della funzione
,
quindi da caratteristiche intrinseche del
problema
Dall’algoritmo usato per il calcolo
Per semplicità, l’analisi dell’errore procede
separatamente
Analisi del problema
Analisi dell’algoritmo
84
85
20
Errore inerente e
condizionamento
Errore inerente e
condizionamento
Errore relativo
sui dati
Dati perturbati
Operazioni esatte
Dati
Soluzioni
86
Rappresentazione grafica del
condizionamento
Dati
Problema ben condizionato
Problema mal condizionato
Dati
Errore relativo
sulle soluzioni
Se
è grande rispetto a
allora il
problema si dice mal condizionato, cioè a
piccole variazioni dei dati corrispondono
grandi variazioni delle soluzioni.
Il condizionamento è una caratteristica del
problema ed esprime quanto le soluzioni
siano sensibili ad una variazione dei dati
87
Esempio
Si consideri l’espressione
vicino ad 1 si ha malcondizionamento, lontano da 1
buon condizionamento
Soluzioni
Soluzioni
88
89
21
Errore algoritmico e stabilità
Errore algoritmico e stabilità
Un algoritmo si dice stabile se non è
troppo sensibile agli errori introdotti
con le operazioni di macchina
La stabilità è una proprietà
dell’algoritmo, non del problema
Dati esatti
Operazioni con errori
Risultati
Dati
90
Errore totale
Parametri per l’analisi degli errori
Errori assoluti
Dati perturbati
Operazioni con errori
Dati
91
Risultati
sui dati iniziali
algoritmico
totale
92
Errori relativi
sui dati iniziali
algoritmico
totale
93
22
Analisi del primo ordine
Si sono trascurati i termini di secondo
grado:
Tecniche di analisi
dell’errore
Errore algoritmico
Non si è considerato il termine di secondo grado
94
95
Analisi in avanti dell’errore
algoritmico
Teorema
Si basa sul teorema dell’errore
Si calcola l’errore relativo del
risultato finale rispetto agli errori
relativi introdotti dalle singole
operazioni dell’algoritmo;
Ci limitiamo ad una analisi del primo
ordine, pertanto vengono trascurati
i termini di secondo grado
Che si può scrivere anche come
Ogni operazione introduce un errore
L’errore è maggiorato dalla precisione di
macchina
96
97
23
Somma di 3 numeri, algoritmo 1
Indice algoritmico
Si definisce come la somma dei valori
assoluti dei fattori di amplificazione
Si trascurano i termini
Fattori di amplificazione
degli errori delle singole
98
operazioni
Somma di 3 numeri, algoritmo 2
Il fattore di amplificazione dell’errore
dell’ultima operazione è sempre 1,
quindi l’indice algoritmico è un
numero > 1
99
Confronto di algoritmi
Dati due algoritmi per il calcolo di
una stessa espressione, alg1 ed alg2,
si dice che alg1 è più stabile di alg 2
se
Questo confronto dipende dai dati
100
101
24
Somma di tre numeri: confronto
degli algoritmi
Differenza di quadrati (1)
Il secondo algoritmo è più stabile per i valori assunti dai dati
102
103
Differenza di quadrati (2)
Confronto tra i due algoritmi
Si vuole determinare per quali valori
di a e di b l’algoritmo 2 è più stabile
dell’algoritmo 1
Se
104
alg2 è più stabile di alg1
105
25
Somma di n numeri
Stabilità dell’algoritmo
Se gli xi sono di segno concorde,
allora
Tuttavia conviene sommare i numeri
dal più piccolo al più grande, per
evitare errori di incolonnamento
106
Esempio, t=7, β=10,
arrotondamento
107
Somma in ordine inverso
Risultato
esatto
Risultato
esatto
108
L’errore relativo è 10 volte più piccolo
109
26
Somma di numeri di segno
discorde
Algoritmo 1
Esercizio
Conviene sommare prima tutti i
positivi, poi sommare i valori assoluti
di quelli negativi ed infine sottrarre i
risultati.
Algoritmo 2
110
Esercizio (segue)
111
Valutazione di un polinomio
Algoritmo 1
Per la proprietà dei valori assoluti
segue che
Tuttavia entrambi gli algoritmi possono diventare instabili
per valori prossimi alle radici del polinomio (p(x)=0)
112
Complessità computazionale: 2n
moltiplicazioni e n addizioni
113
27
Riscrittura del polinomio
Funzioni non razionali
Funzioni trigonometriche, logaritmi,
esponenziali
Vengono approssimate mediante
una successione di operazioni
algebriche elementari
Algoritmo 2 (Schema di RuffiniHorner)
Complessità computazionale: n
moltiplicazioni, n addizioni
114
116
Esempio: soluzione di equazioni
di secondo grado
Dato x, trovare y tale che
Analisi degli errori
Esprimiamo le soluzioni del problema
in funzione del dato x
L’errore inerente
A piccole variazioni dei dati (10-6) corrispondono grandi
variazioni dei risultati (10-3)
117
Questo è un esempio di problema mal condizionato
118
28
Rappresentazione grafica del
condizionamento
Dati
Problema ben condizionato
Supponiamo che la soluzione y che
stiamo cercando sia legata tramite
la funzione ϕ ai dati x;
Soluzioni
Cerchiamo una stima della
variazione che si produce sulla
soluzione a partire da due dati
diversi
Problema mal condizionato
Dati
Soluzioni
Dati
Soluzioni
119
Indice di condizionamento
120
Indice di condizionamento
Se e appartengono all’insieme
dei dati, allora possiamo scrivere
Se Icond >> 1, il problema è mal
condizionato, se è piccolo allora è
ben condizionato
Indice di condizionamento=
fattore di amplificazione dell’errore sui dati
121
122
29
Esempio di prima
Esempio
Si consideri l’espressione
vicino ad 1 si ha malcondizionamento, lontano da 1
buon condizionamento
Il problema è mal condizionato per valori vicini a 4
123
124
Caso generale: dipendenza da
n dati
Osservazione
Un problema può essere ben
condizionato per un insieme di valori
e mal condizionato per altri
Se abbiamo n dati, abbiamo anche
n errori
Stima dell’errore assoluto sui dati
125
126
30
Condizionamento delle
operazioni elementari
Errore relativo
Fattori di amplificazione degli errori
sui singoli dati
Moltiplicazione, divisione radice e
potenza con |α| piccolo sono ben
condizionate. Per la sottrazione x-y, con
x≈y si ha il fenomeno di cancellazione
127
128
Esempi
Esempi
malcondizionato per x vicino ad 1;
malcondizionato per x vicino ad 1;
malcondizionato per x grandi, ben
condizionato per x<1
sempre ben condizionato
129
130
31
Esempio
Esempio
è mal condizionato se a2 e b2 sono circa
uguali
è ben condizionato se a,b,c sono di segno
concorde
131
132
32