A differenza di quanto accade facendo i conti "a mano" quando si studia analisi, con i calcolatori non è possibile raggiungere un livello di accuratezza simile poiché essi lavorano con numeri finiti. Ci saranno sempre dei "buchi" nell'eseguire i calcoli che saranno dati da quei numeri che il calcolatore non è in grado di rappresentare.
Per questo motivo, quando parliamo di numeri finiti bisogna subito introdurre il concetto di errore nel calcolo.
Nella risoluzione di un problema numerico utilizzando un calcolatore possono esserci diversi tipi di errore:
Errore di misura;
Ovvero errori sui dati, si hanno quando dobbiamo lavorare su dati che il calcolatore non è in grado di rappresentare e che quindi vengono arrotondati.
Errore di troncamento;
Lavoro nel discreto, passo da procedimenti infiniti a procedimenti finiti, generando quindi errori, il classico esempio è quello del calcolo di una funzione tramite lo sviluppo in serie.
Errore algoritmico;
Dovuto alla propagazione di errori di arrotondamento (arrotondo un output, lavoro sull'output arrotondato, ottengo un nuovo output da arrotondare e così via).
Errore inerente;
Dovuto al fatto che lavoro con dati che non sono nell'insieme dei numeri finiti, lavoro quindi con dati approssimati (al momento sembra simile all'errore di misura, in seguito vedremo meglio cosa li distingue).
Proprio in virtù della quantità di errori che un calcolatore produce, dobbiamo misurare l'accuratezza dell'errore tramite, per l'appunto, i margini di errore.
Ci sono vari modi per misurare l'errore:
Errore assoluto: $E_a=|ris.\space approssimato - ris. \space esatto|$
Non ha molto senso usarlo a meno che non si conosca il contesto in cui misuriamo l'errore (ad esempio un errore di 10cm può essere importante quando prendo le misure per un mobile nuovo da mette in casa, ma diventa irrilevante se calcolo la distanza tra terra e sole).
Errore relativo: $E_r= \frac{errore\space assoluto}{|risultato\space esatto|}$ (con ris. esatto ≠ 0)
È molto più utile in quanto anche non conoscendo il contesto sono in grado di capire l'importanza dell'errore.
Errore percentuale: $E_p=(E_r\times 100)\%$
È praticamente un altro modo di scrivere l'errore relativo.
Nella memoria dei calcolatori i numeri sono rappresentati in base 2 (binario, duh). L'unità minima del linguaggio è il bit.
Per passare da un numero decimale ad un numero binario si utilizza il metodo delle divisioni successive (già visto in architettura).
Dal momento che i metodi più semplici di rappresentazione dei numeri li abbiamo già visti in architettura, li riepilogo brevemente:
Numeri naturali: converto un numero in n bit tramite il metodo delle divisioni successive.
In questo modo riesco a rappresentare tutti i numeri da $0$ a $2^{n-1}$.
Numeri interi: come i naturali, ma il bit più significativo rappresenta il segno (0 per il +).
In questo modo riesco a rappresentare tutti i numeri da $-(2^{n-1}-1)$ a $(2^{n-1}-1)$, ma rappresento lo $0$ due volte (che spreco).
Nel caso invece si vogliano rappresentare numeri reali minori di 1 si può procedere usando il medoto delle moltiplicazioni successive, ovvero prendo il numero in base 10 (che è minore di 1) e lo moltiplico per 2, se il risultato è minore di 1 segno il bit a 0 e proseguo, se è maggiore di 1 segno il bit a 1, tolgo la parte intera e proseguo. Continuo finché non ottengo un numero di cifre sufficienti.