Introduzione al concetto di errore numerico, aritmetica di macchina, errori di troncamento e roundoff.
L’utilizzo di un calcolatore per la risoluzione di un problema matematico comporta che i dati sono sempre affetti da errori, basti solo pensare che, per “costruzione”, un calcolatore numerico è in grado di rappresentare solo un numero finito di cifre. Inoltre, le operazioni elementari eseguite su tali numeri possono, a loro volta, produrre risultati non rappresentabili esattamente nel calcolatore. Pertanto, nella progettazione di un algoritmo numerico bisogna, dunque, tener presente il fatto che si e’ sempre in presenza di errori, e nel seguente tema vedremo, anche attraverso semplici esempi, come si introducono, come si propagano gli errori e come in alcuni casi si evitano la propagazione di questi ultimi.
Iniziamo a classificare le cause che generano i diversi tipi di errore.
E’ utile ricordare che ci sono altre cause di generazione di errori (software o hardware, errore umano di disattenzione di introduzione dati, etc etc) che però non interessano lo studio dell’analisi numerica.
Errori
Per introdurre in maniera più precisa il problema diamo delle semplici definizioni.
Sia a* un valore approssimato del numero reale a, allora si definisce:
errore assoluto = |a*-a|
errore relativo = |a*-a| / |a| se a e’ diverso da 0
Rappresentabilità di un numero
Non tutti i numeri possono essere rappresentati in un sistema aritmetico. Basti pensare ai numeri periodici. Infatti se x ha un numero di cifre significative maggiore della precisione del sistema aritmetico, è necessario approssimarlo con un numero fl(x), tale operazione è comunemente indicata come operazione di arrotondamento (rounding).
Quindi, nella risoluzione di un problema mediante calcolatore, gia nella fase di rappresentazione dei dati iniziali vengono introdotti degli errori causati dalla approssimazione dei dati con numeri macchina.
L’errore che si commette approssimando un numero reale x mediante fl(x) si dice errore di round-off, piu precisamente si dice:
errore assoluto di round-off
il numero | fl(x)-x |
e si dice errore relativo di round off il numero | fl(x)-x | / | x |
E’ importante notare che l’errore di round-off si genera sia quando un numero reale è rappresentato in F, cioè nel passaggio dalla rappresentazione esterna ad interno, sia nell’esecuzione di ogni operazione f.p. In particolare il risultato di un’operazione tra due numeri macchina non e’ in genere un numero macchina, e quindi il risultato dell’operazione deve essere arrotondato.
Fino ad ora abbiamo visto che nella risoluzione computazionale di un problema, i dati sono affetti dall’errore di roundoff (sia di rappresentazione che di operazione). in genere ci si augura che, in un problema matematico, un errore relativo nei dati di un certo ordine di grandezza si traduca in un errore relativo dello stesso ordine nella soluzione. Infatti, l’errore relativo sul risultato può essere decisamente più grande degli errori relativi sui dati, in tal caso si ha quindi una amplificazione degli errori.
La questione di come gli errori sui dati di un problema si propagano sui risultati e’ chiaramente di fondamentale importanza per l’Analisi Numerica.
Lo stesso algoritmo, infatti, è una successione di operazioni e trasformazioni; il risultato dipende, quindi, da come la per tubazione, cioe’ i successivi errori, si amplificano durante la risoluzione dei singoli passi.
Per studiare in maniera più dettagliata il problema della perturbazione e amplificazione degli errori, dato un problema matematico dobbiamo distinguere il comportamento del PROBLEMA e il comportamento dell’ALGORITMO.
In genere si dice problema bencondizionato se le perturbazioni sui dati non influenzano eccessivamente i risultati (cioè se un errore relativo nei dati di un certo ordine di grandezza si traduce in un errore relativo dello stesso ordine nella soluzione).
Si dirà, invece, algoritmo stabile, un algoritmo nel quale la successione delle operazioni non amplificano eccessivamente gli errori di arrotondamento.
La distinzione tra il condizionamento di un problema e la stabilità di un algoritmo è importante perchè mentre per un problema ben condizionato è possibile, in genere, trovare algoritmi stabile, per un problema malcondizionato è opportuno, in genere, una sua riformulazione.
In conclusione abbiamo visto come lavorando con un sistema aritmetico f. p. sia inevitabile commettere degli errori nella rappresentazione dei dati e che questi errori si propagano attraverso le operazioni in aritmetica macchina e pertanto dopo lo studio del condizionamento del problema e quello della stabilita’ dell’algoritmo risolutivo, e importante utilizzare delle tecniche di analisi della propagazione dell’errore di round-off.
2. Introduzione alla modellistica
4. Il software di sistemi dinamici SIMILE
5. Introduzione agli errori numerici
6. Introduzione alle equazioni differenziali ordinarie (ode)
7. Modularità
8. Errori nel processo di modellistica
9. Dinamica di popolazione isolata
11. Interazione tra popolazione
13. Introduzione ai modelli di catene alimentari
14. Modelli Suscettibili - Infetti - Rimossi (SIR)
15. Introduzione a modelli spazio/tempo
16. Modelli integrati di simulazione
17. Introduzione a modelli individual-based (IBM)
18. Un confronto tra individual-based model and community model
19. Un esempio di IBM: un modello energetico/decisionale del barbag...