Errore di arrotondamento

Indice dei contenuti

    L’errore di arrotondamento è la differenza tra un numero reale o un risultato matematico esatto e il valore effettivamente rappresentato in aritmetica finita. Nei calcolatori nasce perché i numeri reali sono memorizzati con un numero finito di bit, tipicamente in virgola mobile.

    Se x è il valore reale e \operatorname{fl}(x) il valore memorizzato, si usa spesso il modello relativo

    \operatorname{fl}(x)=x(1+\delta), \qquad |\delta|\leq \varepsilon_M,

    dove \varepsilon_M è l’epsilon di macchina, cioè una misura della precisione relativa disponibile.

    Errore assoluto e relativo

    L’errore assoluto misura la distanza diretta tra valore esatto e valore rappresentato:

    E_a=\lvert x-\operatorname{fl}(x)\rvert.

    L’errore relativo normalizza tale distanza rispetto alla scala del problema:

    E_r=\dfrac{\lvert x-\operatorname{fl}(x)\rvert}{\lvert x\rvert}, \qquad x\neq 0.

    Nel calcolo numerico l’errore relativo è spesso più informativo: sbagliare di 10^{-6} è trascurabile se la grandezza vale 10^3, ma può essere enorme se la grandezza vale 10^{-9}.

    Propagazione nelle operazioni

    Ogni operazione floating point può essere modellata come il risultato esatto seguito da un arrotondamento:

    \operatorname{fl}(a\circ b) = (a\circ b)(1+\delta), \qquad |\delta|\leq \varepsilon_M,

    dove \circ indica addizione, sottrazione, moltiplicazione o divisione, entro le ipotesi ordinarie di assenza di overflow e underflow.

    In una catena lunga di operazioni gli errori non restano necessariamente isolati: possono cancellarsi, accumularsi oppure amplificarsi. L’amplificazione dipende sia dal condizionamento numerico del problema sia dalla stabilità dell’algoritmo usato.

    Cancellazione numerica

    La situazione più critica è la sottrazione tra numeri quasi uguali. Se a e b hanno molte cifre iniziali coincidenti, la differenza a-b può perdere cifre significative e rendere visibili gli errori già presenti negli ultimi bit.

    Per esempio, la formula

    \sqrt{1+x}-1

    è numericamente delicata per x molto piccolo. La forma algebricamente equivalente

    \dfrac{x}{\sqrt{1+x}+1}

    evita la sottrazione tra quantità quasi uguali e riduce la perdita di precisione.

    Confronto con l’errore di troncamento

    L’errore di arrotondamento non va confuso con l’errore di troncamento. Il primo dipende dalla precisione finita della macchina; il secondo dipende dalla sostituzione di un oggetto continuo o infinito con un’approssimazione finita.

    ErroreOrigineCome si riduceRischio operativo
    Arrotondamentorappresentazione finita dei numeriprecisione maggiore, formule stabili, scalamentoaccumulo, cancellazione, overflow
    Troncamentodiscretizzazione o serie tagliatapasso più piccolo, ordine più altocosto maggiore, possibile instabilità

    Nelle simulazioni il compromesso tra i due è essenziale: un passo troppo grande aumenta il troncamento, mentre un passo eccessivamente piccolo può aumentare il peso relativo dell’arrotondamento.

    Errori comuni

    • Confrontare numeri floating point con uguaglianza esatta invece di usare una tolleranza coerente con la scala.
    • Riscrivere formule solo per eleganza algebrica, senza valutare la stabilità numerica.
    • Interpretare ogni discrepanza numerica come errore di codice: spesso è una conseguenza prevedibile della precisione finita.
    • Ignorare il numero di condizionamento del problema quando gli errori di arrotondamento sembrano crescere senza controllo.

    Pubblicato: