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