1. Teoria degli errori

Si vuole stimare l'influenza degli errori sulla soluzione, ovvero di quanto la soluzione calcolata si discosti da quella reale .

Errore assoluto

Calcola la bontà dell'approssimazione in termini di cifre decimali.

Errore relativo

Calcola la bontà dell'approssimazione in termini di cifre significative. È spesso rappresentato in percentuale ed utilizzato per avere una rapida intuizione della grandezza dell'errore.

L'errore relativo è una migliore stima della bontà dell'approssimazione, tranne quando è prossimo a zero. Solitamente è più importante, poiché tiene in considerazione la grandezza dei numeri rispetto all'errore.

Approssimazioni corrette

Mentre con le cifre decimali ci riferiamo a tutte le cifre dopo la virgola, con cifre significative indichiamo le cifre necessarie ad esprimere il risultato di una misura con la precisione con cui è stata fatta.

  • Diciamo che è una corretta approssimazione di a cifre decimali se

    • prime 2 cifre decimali uguali
  • Diciamo che è una corretta approssimazione di a cifre significative se

    • prime 5 cifre significative uguali

Stime errore relativo

Il numero di cifre significative dà una stima dell'errore relativo. Consideriamo due numeri 990 e 110 con 2 cifre significative. L'errore sarà di , quindi avremo che , quindi il range in cui varia l'errore relativo è . Si può stilare una tabella con la corrispondenza cifre significative - errore relativo.

Metodi iterativi

Lavoreremo spesso con metodi iterativi, che permettono di determinare una successione di soluzioni approssimate che converge alla soluzione esatta del problema . Per ciascuna iterazione possiamo definire un errore come segue: Il metodo si dice convergente se si ha che:

Ordine di convergenza

Dopo aver definito la nozione di convergenza di un metodo iterativo (def. dipendente dalla norma utilizzata), si passa a definire l'ordine di convergenza. Diciamo che il metodo ha ordine di convergenza se: La seconda vale definitivamente a partire da un sufficientemente grande e per qualche costante . L'ordine di convergenza esprime il numero di cifre decimali che il metodo guadagna, ad ogni iterazione, rispetto alla soluzione esatta.

Altro sui metodi iterativi

Il metodo potrebbe iterare all'infinito, per cui bisogna stabilire un criterio di arresto. Per ogni tipo di problema è possibile progettare diversi algoritmi, che verranno valutati in base a:

  • Stabilità
  • Efficienza - Complessità computazionale
  • Occupazione dello spazio

Esempio: Metodo di Gauss

Nel caso di un sistema lineare, il numero caratteristico del problema è il numero di equazioni del sistema che, in un sistema con matrice dei coefficienti quadrata, è uguale al numero delle incognite . Nel caso del metodo di Gauss, che esamineremo più avanti, la complessità computazionale è .

Esempio: Schema di Horner

Lo schema di Horner serve ad abbassare il costo computazionale del calcolo di un polinomio. Si vuole eseguire il calcolo di: Sono necessarie 3 somme e 6 moltiplicazioni per un totale di 9 operazioni floating point (flops). In generale, per calcolare: Occorrono somme ed moltiplicazioni, per un totale di Se invece si applica lo schema di Horner: Otteniamo somme ed moltiplicazioni per un totale di flops.

Sistemi di numerazione

I sistemi di rappresentazione numerica sono posizionali, ovvero ogni cifra occupa una posizione corrispondente ad una potenza della base del sistema adottato. Una fonte di errore è data dal passaggio da un sistema di numerazione all'altro. Scelta una base , ogni reale può essere scritto come Dove , . La rappresentazione è univoca a meno che il numero non necessiti di infinite cifre consecutive (in decimale ad esempio: 0.1299999...), allora una rappresentazione equivalente consiste nel sopprimere la successione aggiungendo un'unità all'ultima cifra rimasta (dall'esempio precedente: 0.13).

Teorema

Sia e la base, sia un numero reale, allora esiste unico ed una successione di numeri naturali tale che Dove

  • definitivamente

Piccolo hint: sembra somigliare alla notazione scientifica.

Rappresentazione numerica in un calcolatore

In un calcolatore lo spazio di memoria è finito, e la sommatoria precedente si può estendere fino ad un numero finito.

Rappresentazione in virgola fissa

In sintesi cifre prima della virgola, cifre decimali, cifre totali. Un bit è solitamente conservato per il segno.

Rappresentazione in virgola mobile

La posizione della virgola non è fissa, ma è data dall'esponente. Un numero di cifre è riservato alla mantissa , un numero è riservato all'esponente . Un bit è solitamente conservato per il segno. I bit della mantissa determinano la precisione con cui viene rappresentato un numero, mentre i bit dell'esponente determinano il massimo ed il minimo numero rappresentabili.

Insieme dei numeri macchina

L'insieme dei numeri macchina è l'insieme dei numeri reali che sono rappresentabili attraverso una mantissa da cifre e il cui esponente sta tra due interi (lower) ed (upper) definiti nel calcolatore. Lo 0 è rappresentato a parte poiché ha una rappresentazione particolare. L'insieme è finito e numerabile ed ha la seguente cardinalità: La rappresentazione non è unica, ma si dice normalizzata se e la mantissa (in pratica le regole utilizzate nella notazione scientifica).

Memorizzazione esponente

Tenendo conto che il lower bound dell'esponente è un numero negativo (minimo numero rappresentabile) allora per conservare un esponente si memorizza , e dato che allora .

Conversione decimale-binario

La parte intera si divide per due: se c'è il resto si mette 1, altrimenti si mette 0 e si assegnano potenze di due crescenti.

La parte decimale si moltiplica per 2 (divide per 1/2), se il prodotto è minore di 1, allora si ha 0, altrimenti si ha 1. Quando il numero diventa maggiore di 1 si sottrae 1 procedendo come prima.

0.2 | 2 => 0 x 2^-1
0.4 | 2 => 0 x 2^-2 
0.8 | 2 => 1 x 2^-3
1.6 | 2 => 1 x 2^-4  
... (periodico)
0.2 = .0011

In questo caso abbiamo una rappresentazione finita in decimale ed una rappresentazione approssimata in binario, e ciò da luogo ad un errore di arrotondamento (round-off).

Conversione decimale a base qualunque

Sia un numero in base 10 che vogliamo convertire in base . Sia la conversione attesa. Dividendo per sia ha: Dove . Quindi l'ultima cifra della rappresentazione non è che il resto intero di . Per ottenere la penultima cifra si divide ed il procedimento si arresta ad tale che .

Scegliere la rappresentazione in floating point

Dato come scelgo ? Si hanno i seguenti casi:

  • Underflow (esponente troppo piccolo)
    • Si emette un warning e si pone
  • Overflow (esponente troppo grande)
    • Segnale di errore e arresto del programma
  • Se , allora si procede:
    • Se per allora il numero è in e
    • Altrimenti si ha:
      • (Chopping) Si esclude la parte destra della -esima cifra
      • (Rounding) Si arrotonda in base alla -esima cifra

Epsilon macchina

Tutti i floating point che hanno lo stesso esponente hanno una spaziatura , questo implica che due numeri con lo stesso esponente e consecutivi e sono legati dalla relazione . La spaziatura cambia prima e dopo le potenze esatte della base. L'epsilon macchina è un upper bound dell'errore relativo che si ha arrotondando o troncando la rappresentazione reale per ottenere la rappresentazione in floating point. Dato che parliamo di errore relativo, possiamo studiare l'epsilon macchina limitandoci ad e ai numeri positivi.

Utilizzando il rounding, l'errore assoluto più grande ottenibile è , basta porre un numero reale al centro dello spacing. Il denominatore nell'errore relativo è il numero che stiamo approssimando. Per trovare un upper bound dell'errore relativo, questo numero deve essere il più piccolo possibile. I peggiori errori relativi capitano arrotondando numeri del tipo dove , nello specifico il peggior caso è . Calcolando l'errore relativo, il denominatore è , quindi abbiamo un errore relativo pari a . Questo upper bound è proprio l'epsilon macchina. Utilizzando il chopping, il ragionamento si ripete ma considerando , quindi l'epsilon macchina è proprio pari a .

Aritmetica Standard IEEE

BitsNumeriEpsilon MacchinaRange
32
64

Wobbling precision

I numeri in floating point non sono equispaziati, ma si addensano in prossimità del più piccolo numero rappresentabile. All'interno dell'intervallo i punti sono equispaziati e la loro distanza è . Ogni volta che si diminuisce o aumenta l'esponente , diminuisce o aumenta la spaziatura. Il fenomeno è detto wobbling precision ed ha un andamento oscillatorio

Condizionamento e stabilità

Def. Consideriamo il problema: trovare tale che , dove è il dato (o i dati) da cui dipende la soluzione ed è la relazione funzionale che lega e ​. Diremo che tale problema è ben posto, se per un certo dato, la soluzione esiste, è unica e dipende con continuità dai dati.

L'unicità e l'esistenza della soluzione sono problemi analitici, mentre la dipendenza è un problema numerico. La dipendenza continua dei dati significa che piccole perturbazioni dei dati danno luogo a piccole variazioni della soluzione, dove "piccolo" può essere inteso in senso relativo o assoluto. Nascono due problemi, ci si chiede:

  1. Alterando i dati del problema, di quanto si altera la soluzione?
  2. Come si propagano gli errori?

Numero di condizionamento

Il primo problema è connesso con la dipendenza continua dai dati della soluzione e può essere stimato con il numero di condizionamento del problema, numero che non dipende dall'uso dell'aritmetica finita del calcolatore, ma dal tipo di problema.

Def. Sia la perturbazione applicata ai dati, che scatena una variazione nella soluzione, quindi . Diremo numero di condizionamento relativo il valore ottenuto come segue: Se si calcola il numero di condizionamento assoluto:

Se è grande allora il problema è mal condizionato. Se un problema è ben posto ma è grande basta riformulare il problema.

Propagazione dell'errore

Il problema (2) dipende dalla stabilità dell'algoritmo. Ad ogni problema numerico si possono associare più algoritmi.

Un algoritmo è stabile se la propagazione degli errori dovuti all'aritmetica di macchina è limitata.

Un algoritmo è più stabile di un altro se in esso l'influenza degli errori è minore.

Errori dovuti a operazioni aritmetiche

In generale, i risultati di operazioni aritmetiche tra numeri macchina non sono numeri macchina. Indichiamo con il valore reale di un calcolo, dove con indichiamo una tra le 4 operazioni. Quando tale risultato non appartiene ai numeri macchina , indichiamo la sua approssimazione con . Chiamiamo round-off error la differenza Tale errore si può minimizzare con degli accorgimenti.

Esempio con somma. Quando un calcolatore somma due numeri, porta il secondo numero allo stesso ordine del primo (stesso esponente) e somma la mantissa (da cifre) in un accumulatore da cifre, dopodiché aggiusta l'esponente. Questo può portare alla non validità della proprietà commutativa, distributiva ed associativa della somma e della moltiplicazione.

Esempio numerico. Supponiamo e di voler eseguire la somma , dove e per abbiamo . Nella prima somma avremo , quindi portiamo tutto all'ordine di : , ma essendo che la mantissa ha 4 cifre, la somma che viene calcolata è che rimane . Questo non avviene calcolando prima la somma tra i termini e dopodiché , quindi non vale la proprietà commutativa. Per minimizzare l'errore conviene sommare i numeri in base alla loro precisione, dal più piccolo al più grande (in valore assoluto).

Se è arrotondato correttamente (rounding, come nel sistema IEEE), allora a meno di underflow o overflow si ha che: In realtà, per evitare errori dovuti ad underflow si aggiunge una piccolissima quantità () che da luogo ad una "eccezione" che viene segnalata da un flag.

Errori nelle 4 operazioni

Consideriamo l'errore nella forma precedente, per l'errore assoluto si ha:

  • Somma algebrica:
  • Prodotto:
  • Divisione:

Per l'errore relativo si ha:

Prodotto: Divisione: Somma algebrica: Pertanto abbiamo che:

  • La sottrazione va bene per l'errore assoluto, ma si ha un errore relativo grande se .
  • Il prodotto va bene per l'errore relativo, l'errore assoluto dipende dall'ordine di grandezza dei fattori.
  • La divisione va bene per l'errore relativo, l'errore assoluto è grande se .