errori di algoritmo errori di calcolo



Documenti analoghi
Codifica dell Informazione per il Calcolo Scientifico

CALCOLO NUMERICO. Rappresentazione virgola mobile (Floating Point)

Conversione binario-ottale/esadecimale. Conversione binario-ottale/esadecimale. Rappresentazione di Numeri Interi Positivi (numeri naturali)

Sperimentazioni di Fisica I mod. A Lezione 3

Rappresentazione dei Numeri in Virgola Mobile Valeria Cardellini

Lezione 4. Sommario. L artimetica binaria: I numeri relativi e frazionari. I numeri relativi I numeri frazionari

Sistemi di Numerazione Binaria

Calcolatori Elettronici Parte III: Sistemi di Numerazione Binaria

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Architettura degli Elaboratori e Laboratorio. Matteo Manzali Università degli Studi di Ferrara Anno Accademico

Codifica dell informazione numerica. Matteo Re, Nicola Basilico,

Codifica dell informazione numerica

N= a i b i. Numeri e numerali. Sistemi di Numerazione Binaria. Sistemi posizionali. Numeri a precisione finita

Calcolatori Elettronici

Fundamentals of Computer Science

Somma di numeri floating point. Algoritmi di moltiplicazione e divisione per numeri interi

Numeri reali. Notazione scientifica (decimale) Floating Point. Normalizzazione. Esempi. Aritmetica del calcolatore (virgola mobile)

Rappresentazione dei numeri reali in un calcolatore

Rappresentazione dei numeri reali

Rappresentazione binaria

Rappresentazione numeri relativi e reali

Informatica e Laboratorio di Programmazione Sistema Binario Alberto Ferrari. Alberto Ferrari Informatica e Laboratorio di Programmazione

Numeri floating point

Sistemi di Numerazione Binaria

Architetture dei Calcolatori (Lettere

Unità aritmetica e logica

Rappresentazione binaria

Rappresentazione dei Numeri

Sistemi di Numerazione Binaria

Rappresentazione dei numeri. Rappresentazione di insiemi numerici mediante insiemi finiti di stringhe di bit Problemi:

La codifica delle informazioni numeriche ed alfanumeriche.

Rappresentazione in virgola mobile Barbara Masucci

Sistemi di Numerazione Binaria a i b i. a m a m-1... a 0. a -1 a a -k

Rappresentazione numeri reali

Analogico vs. Digitale. LEZIONE II La codifica binaria. Analogico vs digitale. Analogico. Digitale

La rappresentazione dei dati

Rappresentazione dell informazione

Rappresentazione di Numeri Reali. Rappresentazione in virgola fissa (fixed-point) Rappresentazione in virgola fissa (fixed-point)

Aritmetica dei Calcolatori

Numeri reali. Un numero reale X può essere espresso nella forma. X = f x 10 E. X = 0,314 x 10 1

Richiami sulla rappresentazione dei numeri

Numeri con segno ed in virgola

Numeri frazionari. sistema posizionale. due modi: virgola fissa virgola mobile. posizionale, decimale

Lezione 3. I numeri relativi

Rappresentazione dell' informazione. Cenni, necessari per capire le caratteristiche dei tipi di dato e delle limitazioni dell'aritmetica del computer

Rappresentazione di numeri reali. Architetture dei Calcolatori (Lettere. Perché la rappresentazione in virgola mobile

Numeri in virgola mobile

UD 1.2e: La codifica Digitale dei Numeri CODIFICA DIGITALE DEI NUMERI

Modulo 1: Le I.C.T. UD 1.2e: La codifica Digitale dei Numeri

Somma di numeri binari

Rappresentazione dell Informazione

Numeri reali. Sistema in virgola mobile (floating point)

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

Calcolatori Elettronici Parte II: Sistemi di Numerazione Binaria. Prof. Riccardo Torlone Università di Roma Tre

Lezione 9 Aritmetica in virgola mobile (3)

Esercitazione Informatica I (Parte 1) AA Nicola Paoletti

Numeri fixed point. La rappresentazione dei numeri interi: i numeri fixed point. Rappresentazione fixed point di un intero positivo N

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Numeri in virgola. Marco D. Santambrogio Ver. aggiornata al 10 Novembre 2015

Rappresentazione di numeri reali. Architetture dei Calcolatori (Lettere. Perché la rappresentazione in virgola mobile

Codifica. Rappresentazione di numeri in memoria

Corso di Circuiti Logici Appunti e Approfondimenti A. Di Stefano

Operazioni artimetiche

Informatica e Bioinformatica: Rappresentazione dell Informazione

L Aritmetica del Calcolatore

RAPPRESENTAZIONE DEI NUMERI IN UN CALCOLATORE

Codifica dell informazione numerica

Lezione 2. Rappresentazione dell informazione

Esercitazione 1 del 10/10/2012

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Numeri in virgola. Marco D. Santambrogio Ver. aggiornata al 14 Novembre 2014

Calcolo numerico e programmazione Rappresentazione dei numeri

Calcolatori Elettronici Parte II: Sistemi di Numerazione Binaria. Prof. Riccardo Torlone Università di Roma Tre

Tipi interi lo standard (1)

Esercitazione 1 del 07/10/2011

Rappresentazione di numeri reali

Aritmetica dei Calcolatori

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Notazione posizionale. Codifica binaria. Rappresentazioni medianti basi diverse. Multipli del byte

GLI ERRORI. Problema. valutare l'accuratezza del risultato di un calcolo e quindi l'affidabilità del risultato stesso. Prof.

Aritmetica dei Calcolatori Elettronici

Rappresentazione dei numeri reali in un calcolatore

OPERAZIONI SUI NUMERI FINITI

Lezione 1. Rappresentazione dei numeri. Aritmetica dei calcolatori. Rappresentazione dei numeri naturali in base 2

Informatica Generale 02 - Rappresentazione numeri razionali

Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.

Rappresentazione e Codifica dell Informazione

Rappresentazione dei numeri reali in un calcolatore

Rappresentazione dei numeri reali

Lezione 2. Rappresentazione dell informazione

Aritmetica dei Calcolatori

Esercitazione del 09/03/ Soluzioni

Definizione di errore

Rappresentazione dei Dati

Esercitazione del 05/03/ Soluzioni

= = = Codifica dell informazione

Laboratorio d'analisi Numerica

Cenni alla rappresentazione dei tipi dato primitivi

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova

= = =

Argomenti trattati: Rappresentazione dell informazione. Proprietà di una codifica: Codifica: Teoria generale

Transcript:

ANALISI NUMERICA Uno dei caratteri più significativi della matematica è quello numerico, e cioè, la possibilità di risolvere problemi ottenendo come soluzioni dei valori numerici. Per passare da un problema alla sua soluzione, espressa mediante numeri, occorrono tre fasi: 1. l individuazione di informazioni iniziali che consentono di determinare un modello matematico per descrivere il problema da risolvere; 2. la ricerca di algoritmo (metodo di calcolo) per trovare la soluzione numerica cercata; 3. l esecuzione dell algoritmo. L analisi numerica è l elaborazione di metodi per trovare soluzioni numeriche a problemi matematici. Occorre però sottolineare il fatto che possono esistere più metodi di calcolo che consentono di risolvere un problema; la ricerca dell ottimizzazione del metodo risolutivo si basa su due criteri: la precisione dei risultati numerici ottenuti; la velocità di esecuzione. Da qui nasce l esigenza di conoscere l approssimazione dei risultati ottenuti e i tipi di errori commessi. Si evidenziano, in corrispondenza delle 3 fasi occorrenti alla risoluzione numerica di un problema, 3 tipi di errori: errori di ingresso errori di algoritmo errori di calcolo Classifichiamo quindi tali errori secondo le seguenti categorie: 1) ERRORI INTRINSECI o INERENTI : connessi ai dati iniziali del problema, che spesso sono determinati soltanto in modo approssimativo; 2) ERRORI DEL METODO o GENERATI: connessi all algoritmo scelto, che non sempre può essere costituito da un basso numero di operazioni aritmetiche; 3) ERRORI DI CALCOLO o PROPAGATI : connessi con il tipo e con il numero di operazioni numeriche eseguite, che sono a loro volta di due tipi a) di TRONCAMENTO, dovuti all interruzione ad un dato punto di una serie di operazioni; b) di ARROTONDAMENTO, dovuti al fatto che si opera con numeri che sono stati privati di una parte delle loro cifre decimali. Affinché gli errori di arrotondamento siano minimi si seguono le seguenti regole: - se la prima cifra eliminata è inferiore a 5, le cifre prese in considerazione restano invariate; - se la prima cifra eliminata è superiore a 5, si aggiunge una unità; - se la prima cifra eliminata è 5 e se fra le altre cifre eliminate almeno una è diversa da zero, l ultima cifra conservata viene aumentata di una unità; se tutte le altre cifre eliminate sono uguali a zero, l ultima cifra conservata rimarrà invariata se è pari, le si aggiunge uno se è dispari. RAPPRESENTAZIONE DEI NUMERI La rappresentazione di un numero è cosa distinta dal numero stesso es. "tredici" è 13 10 31 4 1101 2 La figura qui sotto rappresenta 5/8 oppure 0.625 10 o anche 0.101 2

NUMERI INTERI La rappresentazione di un numero intero all interno di una calcolatore è molto semplice. Gli interi sono scritti di solito in 2 byte (16 bit) dove il bit più significativo che si indica il segno. Gli interi possono però anche avere dimensioni doppie e quadruple dispetto allo standard. I valori positivi sono i numeri binari semplici. Ad esempio: 1 Decimal = 1 Binary 2 Decimal = 10 Binary 22 Decimal = 10110 Binary, etc. La scrittura binaria di un numero intero negativo è realizzata attraverso la rappresentazione in complemento a due su "n" bit, generando in questo modo 2 n combinazioni 2 n 1 n 2 n 1 1 (il complemento a due è n = n + 1 ) Per ottenere la rappresentazione di complemento di due per un numero negativo, quindi avere la rappresentazione binaria per il valore assoluto del numero, capovolgere tutti i bit e aggiungere 1. Conseguenze : "zero" è sempre la sequenza di "n" cifre 0 (000 ) " 1" è sempre la sequenza di "n" cifre 1 (111 ) il "range" di interi utilizzabili è un sottoinsieme FINITO dell'insieme dei naturali Ν le operazioni sono affidabili solo nel "range" disponibile le proprietà formali delle operazioni NON sono rispettate Operazioni : esempio per n = 4 0000 0 1000-8 0001 1 1001-7 0010 2 1010-6 0011 3 1011-5 0100 4 1100-4 0101 5 1101-3 0110 6 1110-2 0111 7 1111-1 3 + 5 0011 + 0101 = 1000 ( - 8!!!) OVERFLOW 5 + 8 impossibile perché 8 non è un simbolo ammesso 8 1 1000 + 1111 = 10111 ( 7!!!) OVERFLOW Proprietà delle operazioni : esempio in rappresentazione DECIMALE su 8 cifre PROPRIETÁ COMMUTATIVA 99999990 20 + 15 è diverso da 99999990 + 15 20 (overflow) PROPRIETÁ ASSOCIATIVA ( 20 + 10) + 99999995 è diverso da 20 + (10 + 99999995) (overflow) DUE POSSIBILI SOLUZIONI 1. Segnalare Overflow con Run Time Error (!) Es. BASIC 2. Ignorare l'overflow eseguendo operazioni in aritmetica MODULO 2 n (modello ad anello o aritmetica dell'orologio) Es. TURBOPASCAL maxint 1 m maxint a b (modulo 2 n ) a b = k 2 n con k Ν {0} + 32768 0 32767 0 + + Resta però il problema dell'interpretazione DEI RISULTATI : essi NON sono sbagliati ma SEMPRE corretti nell'aritmetica in MODULO 2 n

NUMERI REALI Esistono due tecniche per la memorizzazione di dati non interi : NOTAZIONE IN VIRGOLA FISSA (poco utile) NOTAZIONE IN VIRGOLA MOBILE (FP normalizzata): La matematica al mobile virgola è un argomento complesso che confonde a più programmatori. La seguente esercitazione dovrebbe consentire di riconoscere le situazioni di programmazione dove è probabile che gli errori al mobile virgola si siano verificati e come evitare esse. Esso dovrebbe inoltre consentire di riconoscere i casi causati dalle limitazioni matematiche intrinseche al mobile virgola gli errori di compilatore effettivo. r = m b e ogni numero reale r può essere scritto nella forma : dove m mantissa = ± 0.c 1 c 2 c 3 c n con c 1 0 b base ( 2 in un elaboratore altrimenti 10) e esponente Esempio. 2.74 = 0.274 e +1 0.0032 = 0.32 e 2 10000 = 0.1 e +5 In un elaboratore questa rappresentazione offre dei vantaggi : la parte intera non è memorizzata (sempre = 0) il punto decimale viene omesso (è sempre a sinistra della prima cifra di mantissa non è memorizzata le base ( è ovvia) ed uno svantaggio bisogna introdurre una rappresentazione ad hoc per la ZERO (mantissa=0, esponente=0) In macchina verranno quindi memorizzati solo mantissa ed esponente in binario ± Mantissa ± espon. È chiaro che anche in questo caso NON si possono rappresentare TUTTI i numeri REALI, ma solo un certo SOTTOINSIEME IRREGOLARE. Anche in questa rappresentazione si ha un errore di OVERFLOW se si tenta di memorizzare un numero più grande del massimo. Se invece si tenta di memorizzare un numero molto piccolo si incorre in un errore di UNDERFLOW che di solito il calcolatore NON segnala, approssimando tale valore a ZERO. La codifica di un numero reale in FP è quasi sempre una approssimazione del numero stesso TRONCAMENTO ARROTONDAMENTO (troncamento del numero dopo aver aggiunto 5 all'ultima cifra significativa) Questo significa che ad ogni rappresentazione sono associati INFINITI numeri compresi entro un intervallo uguale al valore approssimato Es. Supponiamo di usare una rappresentazione DECIMALE con mantissa a 6 cifre π = 3.141592 +314159e+1 rappresenta non UNO, ma INFINITI numeri "vicini" a meno di 10-6 Ogni integer decimale può essere rappresentato esattamente da un integer binario; ciò tuttavia non è vero per i numeri frazionari. Ogni numero che è irrazionale nelle basi 10 anche sarà irrazionale in qualsiasi sistema con una base più piccola a 10. Per il binario, i numeri solo frazionari che si possono rappresentare nel p/q di modulo dove è il q un'intera potenza di 2 possono essere espressi esattamente nel particolare con un numero finito di bit. Persino le frazioni decimali più comuni, come 0,0001, non possono essere rappresentate esattamente nel sistema binario. (0,0001 è una frazione binaria periodica con un intervallo periodico di 104 bit!) Ciò illustra un esempio semplice a riportato di seguito main() { int SUM,I; SUM = 0; for (I=1; I<10000; I++) SUM = SUM + 0.0001; printf("%f", SUM); // Teoricamente SUM = 1.0 }

Per la stessa ragione, si sempre dovrebbe essere molto cauto quando effettuare i confronti in base ai numeri reali. OSSERVAZIONE Dato che in un elaboratore si opera in base 2, gli unici numeri che hanno cifre di mantissa FINITE, sono i razionali con denominatore che è potenza di 2. Es. "un decimo" ( 1/10) in binario è PERIODICO ( 0.000110011) Lo standard IEEE754 per il calcolo in virgola mobile Definisce il formato per la rappresentazione dei numeri in virgola mobile, ed un set di operazioni effettuabili su questi. Specifica inoltre quattro metodi di arrotondamento e ne descrive cinque eccezioni. Esistono in questo standard quattro formati per i numeri in virgola mobile: a precisione singola (32 bit), precisione doppia (64 bit), precisione singola estesa ( 43 bit), raramente usato, e precisione doppia estesa ( 79 bit), supportata solitamente con 80 bit. La precisione singola è il minimo richiesto dallo standard, gli altri sono optional. Rappresentazione in Singola Precisione su 4 byte ( 32 bit) 1 8 23 segno esponente mantissa Rappresentazione in Doppia Precisione su 4 byte ( 32 bit) 1 11 52 Quanto visto vale per la rappresentazione interna; in fase di I/O da tastiera le cose potrebbero non essere così (per esempio il numero massimo accettato in ingresso potrebbe essere MINORE del massimo rappresentabile, per motivi legati alla libreria di I/O del linguaggio) Alcune sequenze sono utilizzate per rappresentare valori particolari infinito (positivo o negativo) NaN (Not a Number). Esempio: -5 zero Per rappresentare lo zero si usa la intera parola (di 32 o 64 bit) messa a zero. Questa rappresentazione è particolare perché gli esponenti (polarizzati) vanno da 00..012 = 110 (valore corrispondente -126) in poi, quindi l esponente non è mai zero. In questo caso, il significante viene messo tutto a zero. Utilità della rappresentazione: zero in complemento a due (interi) = zero in virgola mobile controllo per zero semplice: tutti i bit a zero Per rappresentare l infinito si usa l esponente a tutti uno e significante a tutti zero. Questa rappresentazione è particolare perché gli esponenti (polarizzati) arrivano fino a 11..102 = 25410 (valore corrispondente 127), quindi un esponente non è mai 11..112 (=25510) A seconda del segno: infinito positivo o negativo Per rappresentare il NaN si usa l esponente a tutti uno e significante diverso da zero L'insieme dei numeri rappresentati in F.P. NON è continuo ma discreto ed inoltre gli elementi NON sono equamente distribuiti sulla retta reale. QUANTI SONO I NUMERI MACCHINA? Per semplificare, ipotesi di un calcolatore 2_normale a = 1,2,,9 b = 0,1,,9 n = 0, ±1, ±2,,±38 r = ± 0.ab e n Tutte le possibili combinazioni di a,b,n sono 9 10 77 a cui si aggiungono in numero uguale i valori negativi e lo zero, in tutto 13861 valori 1.39 10 4

Con lo stesso ragionamento si può arrivare a dire quante sono le combinazioni nel caso di 11 cifre (il caso del TurboPascal) 2 9 10 10 77 + 1 1.39 10 13 Nonostante l'esponente possa arrivare a +38, si ottiene un numero di valori BEN INFERIORE; da questo si può notare che il numero di valori dipende molto più dalle cifre significative (e quindi dalla mantissa) che non dall'esponente. Perciò in un sistema, volendo aumentare la precisione con maggiori bit di memorizzazione dei F.P. è meglio assegnare i bit alla MANTISSA COME SONO DISTRIBUITI I NUMERI MACCHINA? Per semplificare, ipotesi di un calcolatore 2_normale r = ± 0.ab e n Di seguito la rappresentazione di alcuni valori 0.10e0 0.11e0 0.12e0 0.19e0 0.20e0 10 rappresentazioni tra 0.1 e 0.2 0.10e1 0.11e1 0.12e1 0.19e1 0.20e1 10 rappresentazioni tra 1 e 2 0.10e2 0.11e2 0.12e2 0.19e2 0.20e2 10 rappresentazioni tra 10 e 20 0.10e3 0.11e3 0.12e3 0.19e3 0.20e3 10 rappresentazioni tra 100 e 200 0 10 50 100 150 200 Ogni sequenza è composta da 10 rappresentazioni che si distribuiscono su intervalli MOLTO diversi (aumentano di una potenza di 10). Per mantenere la stessa "densità" ad ogni aumento di 1 dell'esponente si dovrebbe aggiungere UNA cifra (cosa impossibile perché le cifre sono fisse). Nel caso reale i valori che si ripetono in ogni intervallo sono molto elevati ( 9 10 10 ) ma ovviamente insufficienti a rappresentare gli infiniti numeri reali. Più l'esponente è alto, meno "densi" sono i valori. Nei pressi del numero massimo rappresentabile i valori esatti sono RARISSIMI. Il fatto che molti algoritmi vengano "testati" solo per valori non critici o abituali induce molti programmatori a considerare il calcolatore infallibile. In realtà SBAGLIA FACILMENTE

ARITMETICA F.P. Anche le operazioni in FP possono generare eccezioni del risultato: Overflow dell esponente: esponente positivo che e piu grande del massimo Underflow dell esponente: esponente negativo minore del minimo valore (numero troppo piccolo) Underflow della mantissa: mantissa 0 (allineando, gli 1 sono usciti fuori) Overflow della mantissa: riporto del bit piu significativo Algoritmo per la SOMMA 1. Controllo dello Zero 2. Eguagliare gli esponenti, agendo sulla mantissa del numero più piccolo 3. Sommare le mantisse 4. Nel caso di riporto aumentare di 1 l'esponente del risultato e approssimare (troncando o arrotondando) (perdita di informazione) Es. con 6 cifre di mantissa (numeri 6_normali) z = 0.43729e+3 t = 0.715464e+3 0.437290 + 0.715464 = 1.152754 e+3 normalizzazione 0.115275e+4 Come per gli interi, NON valgono le proprietà delle operazioni PROPRIETÁ ASSOCIATIVA Si debbano sommare, con arrotondamenti, i numeri : x=0.235565e+3 y=0.245678e+5 z=0.867899e+5 (x+y) = 0.002356 + 0.245678 = 0.248034e+5 (x+y)+z = 0.111593e+6 (y+z) = 0.111358e+6 x+(y+z) = 0.000236 + 0.111358 = 0.111594e+6

Algoritmo per la MOLTIPLICAZIONE 1. Moltiplicare le mantisse 2. Sommare gli esponenti 3. Normalizzare il risultato (troncando o arrotondando) (perdita di informazione) ESEMPIO con numeri 4_normali ed arrotondamento x = 0.3254e+6 y = 0.213e-2 x y = 0.0693 e+4 normalizzazione 0.6930 e+3 Algoritmo per la DIVISIONE (se è possibile) 1. Dividere le mantisse 2. Sottrarre gli esponenti 3. Normalizzare il risultato (troncando o arrotondando) (perdita di informazione) ESEMPIO. con numeri 4_normali ed arrotondamento x = 0.4e+5 y = 0.3e-3 x / y = 1.3333 e+8 normalizzazione 0.1333 e+7

VERIFICA DELLA PRECISIONE MACCHINA Viene fatta applicando algoritmi che verificano identità matematiche, come nel semplice caso che segue : float x,s ; int i; x = 1.0; for (i= 1; i<= 7; i++) { x = x / 10; s= ( 1-(1/(1+x)))*(1+x); printf ( \t %f \t %f \n,x,s); } TEMPO DI ESECUZIONE I conti con i numeri FP vengono realizzati via sw o con l'ausilio di un coprocessore matematico. Nel caso non sia presente il coprocessore, la verifica del tempo di esecuzione delle operazioni, può essere facilmente realizzata con loop di operazioni, come nel seguente esempio : float a,b ; long int i; a = 3.141592654; b = 2.71828182; for (i= 0; i< 10000000; i++) { c := a*b+a b/a;; } LIMITI DELL ELABORATORE Programma 1 int main() { float x,y; int i; x=1.0e06; printf("\n\tx\t\t\ty\t\t\ty-x\n"); for(i=1;i<=5;i++) {x*=10; y=x+1; printf("\n%16.2f\t%16.2f\t%12.2f",x,y,y-x); } getchar(); } Scrivi il valore iniziale di x e i valori della differenza y- x che ti aspetti ; poi confrontali con quelli ottenuti al calcolatore. Programma 2 Modifica il programma P1 definendo x e y di tipo double. Nota analogie e differenze tra i due programmi.

TEORIA DEGLI ERRORI Definizioni ERRORE ASSOLUTO e(x) = x α ERRORE RELATIVO e r (x) = e(x) / x Non è quasi mai possibile scrivere i valori di questi errori (in generale non si conosce x, che è l'obiettivo dell'algoritmo di calcolo) NEGLI ALGORTIMI SI PROCEDE PERCIÓ CON STIME che MAGGIORANO l'errore effettivo : ERRORE ASSOLUTO LIMITE E(x) (o GRADO DI APPROSSIMAZIONE) Dati a' e a'' tali che a' x a'' E(x) = a'' a' Stabilito E(x), OGNI numero α tale che a' α a'' si chiama valore approssimato (o approssimazione) di x x = α ± E(x) e sicuramente e(x) E(x) ERRORE RELATIVO LIMITE E r (x) = E(x) / a' (o PRECISIONE RELATIVA) Esempio. 13 approssimato alla 1^ cifra è 3,6 < 13 < 3,7 E(x) = 0,1 E r (x) < 2,8% Problema 1 Se si approssima il numero N1 = 1387500 con il numero A1 = 1400000 e il numero N2 = 87500 con il numero A2 = 100000 quale errore si commette in ciascuno dei due casi? Quant è il rapporto tra l errore commesso e il numero dato in ciascuno dei due casi? Problema 2 Ripetere i calcoli del problema precedente con i seguenti valori : N3 = 1040 con A3 = 1000 N4 = 3640 con A4 = 3500. Problema 3 Se si approssima il numero N5 = 1060000 con il numero A5 = 1000000 e il numero N6 = 3290000 con il numero A6 = 3200000, quale delle due approssimazioni e più corretta? TIPI DI ERRORE INERENTE (sui dati di partenza) : errori macchina, errori di ingresso su dati sperimentali GENERATO : algoritmo interrotto ad un certo punto, calcoli eseguiti in modo non esatto, non validità delle proprietà formali delle operazioni. PROPAGATO : operazioni su valori già affetti da errore. APPROSSIMAZIONE PER TRONCAMENTO di x alla cifra n α x < α + E(x) E(x) = 10 n APPROSSIMAZIONE PER ARROTONDAMENTO di x alla cifra n α E(x) x α + E(x) E(x) = ½ 10 n Esempio : calcolare e + π con numeri 4_normali troncati e = 2,7182 0,2718 e+1 E = 10 3 π = 3,1415 0,3141 e+1 E = 10 3 e + π = 0,5859 e+1 E = 10 3 + 10 3 = 2 10 3 perciò 5,859 (e + π) < 5,861 Esempio : calcolare e + π con numeri 4_normali arrotondati e = 2,7182 0,2718 e+1 E = ½ 10 3 π = 3,1415 0,3142 e+1 E = ½ 10 3 e + π = 0,5860 e+1 E = ½ 10 3 + ½ 10 3 = 10 3 perciò (e + π) = 5,860 ± 0.001 5,859 (e + π) < 5,861 α E(x) E(x) α E(x)

PROPAGAZIONE DEGLI ERRORI NELLE OPERAZIONI Dati due valori approssimati x 1 = (α + E 1 ) x 2 = (β + E 2 ) le operazioni provocheranno una PROPAGAZIONE degli errori inerenti Somma α + β ± E E = E 1 +E 2 Sottrazione α β ± E E = E 1 +E 2 Moltiplicazione (α β) ± E E = α E 2 + β E 1 + E 1 E 2 Divisione (α / β) ± E E = (α E 2 + β E 1 ) / (β E 2 ) 2 Termine trascurabile Problema 1 Calcolare π / e con numeri 4_normali troncati π = 3,1415 0,3141 e+1 E = 10 3 e = 2,7182 0,2718 e+1 E = 10 3 π/e = 0,1155 e+1 E = 0,2718e+1 10 3 + 0,3141e+1 10 3 6 10 4 (0,3141e+1) 2 L'errore complessivo è però maggiore poiché va aggiunto l'errore GENERATO dall'operazione (il risultato è un troncamento) E 6 10 4 + 10 3 2 10 3 0,1155 e+1 π / e < 0,1157 e+1 Problema 2 Calcolare la seguente espressione con numeri 4_normali arrotondati e stimare gli errori commessi d = ( a + c) + b / a Normalizzazione a = 2,718281 a = 0,2718 e+1 arrotondamento ½ 10 3 b = 0,03457 b = 0,3457 e 1 nessun errore c = 345,87 c = 0,3459 e+3 arrotondamento ½ 10 1 (a+c) = 0,0027e+3 + 0,3459 e+3 = 0,3486 e+3 propagato (0,5050e 1) (b/a) = 0,3457e 1 / 0,2718e+1 = 0,1272e 1 prop. e gener. (< 3e 6) (a+c)+b/a = 0,3486e+3 + 0.0000e+3 = 0,3486e+3 prop. e generato (<0,6) d = 348,6 ± 0,6 (stima) E(x) < 0,6 E r (x) < 0,6 / 348,6 < 0,2 % Problema 3 Calcolare la somma 2 + 3 + 7 + 8 dove gli addendi sono dati con una precisione a meno di 0.001. Quale errore si commette sulla somma? Problema 4 Calcolare la differenza di 11 e 7 dove i numeri sono dati con una precisione a meno di 0.001. Problema 5 Siano a=1.319 dato con un errore relativo dello 0.1% e b=0.287 dato con un errore relativo dello 0.3%.Quale risultato si ottiene effettuando la somma?qual è l errore %? Problema 6 Determinare il prodotto di 11 e 7 con i valori arrotondati alla quarta cifra decimale. Quale errore si commette? Problema 7 Calcolare e/ 11 utilizzando valori arrotondati alla quinta cifra decimale.quale errore si commette?

PROPAGAZIONE DEGLI ERRORI : PROBLEMA INVERSO Problema 1 Dato n = 3π 7 calcolarne il valore con approssimazione a meno di 10-3. CONDIZIONAMENTO DI UN PROBLEMA Problema 1 Risolvere la seguente coppia di sistemi : x + y = 1 1000x + 1001y = 10 x + y = 1 1000x + 999y = 10 e rispondere alle seguenti domande : qual è la variazione assoluta del coefficiente della y? e quella relativa? quali sono le variazioni assolute e relative delle soluzioni? Problema 2 Risolvere la seguente coppia di sistemi : x + y = 1 1000x 1000y = 10 x + y = 1 1000x 998y = 10 e rispondere alle seguenti domande : qual è la variazione assoluta del coefficiente della y? e quella relativa? quali sono le variazioni assolute e relative delle soluzioni? NOTA BENE I problemi in cui ad ogni variazione percentuale dei dati corrisponde una variazione percentuale dei risultati all incirca dello stesso ordine di grandezza, si dice che sono ben posti o ben condizionati (matrice dei coefficienti a preponderanza diagonale!). Qualora i dati non fossero conosciuti esattamente la precisione dei risultati sarebbe comunque paragonabile a quella dei dati. Non così nei problemi mal posti ( vedi problema 1) dove i dati non esatti ( es. coefficiente = 3.45 ± 0.1) porterebbero a risultati scarsamente attendibili.

CRITERI DI ARRESTO DEGLI ALGORITMI Quando si è raggiunto un certo GRADO DI APPROSSIMAZIONE Quando lo scarto tra due valori calcolati è minore di un errore arbitrario stabilito a priori Quando si sono fatti un numero di iterazioni oltre il quale si impone la terminazione. Osservazione : il numero di operazioni utilizzate negli algoritmi deve essere reso minimo al fine di limitare l'effetto CUMULATIVO di tutti gli errori. ATTENZIONE In un programma che utilizza numeri in floating point (real, o extended in pascal, float o double in C, numeric in SQL ) è opportuno: EVITARE controlli del tipo if a = b then poiché se le due variabili sono il risultato di calcoli precedenti, esse sono probabilmente approssimate; è più conveniente un controllo del tipo if abs(a-b)<= epsilon then USARE CON CAUTELA al denominatore, espressioni ove compaiano differenze tra numeri molto vicini o somme tra numeri di segno opposto, ma in valore assoluto vicino (Annullamento di cifre). Algoritmi per il calcolo della RADICE QUADRATA ERONE Posto y= n tale che y< x allora y 2 < x e quindi Dato y 0 valore di innesco, si può calcolare la approssimazione successiva della radice con un algoritmo iterativo della media aritmetica tra i due valori per difetto e per eccesso y < x < CATALDI Se a< x allora a+ y = x, posso produrre un algoritmo iterativo dalla formula in seconda colonna (a+ y) 2 = x a 2 + y 2 + 2ay = x y ( y+ 2a) = x a 2 Si ottengono alternativamente valori approssimati per eccesso e per difetto. Nel caso di 2 : a = 1 e y 0 = 0 BISEZIONE Soluzione dell'equazione F(x) = x 2 n = 0 Se a < x < b x y Esercizio al calcolatore Realizzare la tabulazione del limite ( Excel, Linguaggio di Programmazione) ricevuti in ingresso x x 0 punto iniziale da cui effettuare la tabulazione 1 E errore assoluto massimo ammissibile x x lim + h passo di incremento di x La tabella prodotta deve contenere i seguenti campi : x n valore di x al passo n 1/x n A n Valore del limite calcolato E n Stima errore assoluto, valutato sull'algoritmo ( A n A n 1 ) ε n Errore assoluto ( A n l ) In particolare si provi l'esecuzione e si commentino i risultati nei seguenti casi: E= 1e 5 h=1e3 E= 1e 10 h=1e10 E= 1e 5 h=1e15 Si utilizzi in un primo tempo il tipo real; in seguito si effettuino prove con un tipo esteso. Si realizzi il grafico di E n ed ε n. Si realizzi la simulazione dell'algoritmo con Excel, utilizzando numeri 4_normali. y y n+ 1 n+ 1 = 1 y 2 n n + 2 x a = y + 2a x y n Do { c = (a+b)/2 if f(a)*f(c) > 0 a= c else b=c; while (f(c) < epsilon);