Aritmetica Finita

Indice dei contenuti

    L’aritmetica finita (o aritmetica di macchina) è il ramo del calcolo numerico che studia le regole di esecuzione delle operazioni matematiche sui calcolatori elettronici, dove i numeri reali sono approssimati tramite un numero limitato di cifre (tipicamente in virgola mobile).

    Errori di rappresentazione

    Un numero reale xx viene rappresentato in virgola mobile come x~=x(1+ε)\tilde{x} = x(1 + \varepsilon), dove εεM|\varepsilon| \leq \varepsilon_M è l’errore relativo di arrotondamento e εM\varepsilon_M è l’epsilon di macchina (per la doppia precisione IEEE 754: εM2.22×1016\varepsilon_M \approx 2.22 \times 10^{-16}).

    • Errore assoluto: xx~|x - \tilde{x}|
    • Errore relativo: xx~x\dfrac{|x - \tilde{x}|}{|x|} (adimensionale, più significativo per confronti tra grandezze di scala diversa)

    Errori di Arrotondamento e Propagazione

    Lavorare con un numero finito di cifre introduce inevitabilmente degli errori di arrotondamento. In calcoli lunghi (con molte operazioni in cascata), questi errori possono accumularsi e propagarsi, compromettendo l’esattezza del risultato finale. Fenomeni critici nell’aritmetica finita includono:

    • Cancellazione catastrofica: Si verifica quando si sottraggono due numeri molto vicini tra loro; le cifre più significative si annullano, lasciando solo le cifre meno significative (che spesso contengono l’errore di arrotondamento), portando a una drastica perdita di precisione.
    • Overflow / Underflow: Il risultato di un’operazione eccede il valore massimo rappresentabile (overflow) o diventa più piccolo del minimo numero positivo rappresentabile e viene arrotondato a zero (underflow).

    Stabilità degli Algoritmi

    A causa dell’aritmetica finita, non tutti gli algoritmi matematicamente equivalenti sono ugualmente validi per il calcolo numerico. Un algoritmo si dice numericamente stabile se gli errori introdotti ad ogni passo non vengono amplificati in modo catastrofico durante l’esecuzione dell’algoritmo.

    Esempio: cancellazione catastrofica

    Si vuole calcolare f(x)=x+11f(x) = \sqrt{x+1} - 1 per x=108x = 10^{-8}:

    • Formula diretta: 1+10810\sqrt{1 + 10^{-8}} - 1 \approx 0 (perdita totale di cifre significative per cancellazione)
    • Formula riscritta: f(x)=xx+1+1=1081+108+15×109f(x) = \dfrac{x}{\sqrt{x+1}+1} = \dfrac{10^{-8}}{\sqrt{1+10^{-8}}+1} \approx 5 \times 10^{-9} (stabile)

    La riscrittura algebricamente equivalente evita la sottrazione di numeri quasi uguali.

    Vedi anche: Virgola Mobile, Numero di Condizionamento.

    Ultimo aggiornamento: