Precedente Indice Successivo



Capitolo 2


Analisi degli errori


Nell'ambito dell'analisi numerica una delle problematiche maggiori è l'analisi degli errori. In ogni fase di risoluzione di un problema reale si commettono degli errori. Nella scelta del modello matematico s'introducono gli errori dovuti all'aggiunta di ipotesi semplificative, ad una incompleta o inesatta deduzione del modello stesso; tali errori saranno tanto più piccoli quanto più le ipotesi saranno soddisfatte. Nella fase di discretizzazione del modello s'introduce l'errore di troncamento analitico, dovuto, ad esempio, alla sostituzione di insiemi continui con insiemi discreti o all'approssimazione di operazioni basate sul concetto di infinito con operazioni razionali in numero finito. Nell'ultima fase, infine, intervengono gli errori di round-off dovuti all'approssimazione di numeri reali con numeri macchina.

Un calcolatore numerico, infatti, è in grado di rappresentare soltanto un numero finito di cifre; ne consegue la possibilità che un numero reale introdotto nel calcolatore sia approssimato. Inoltre le operazioni elementari eseguite su tali numeri possono e loro volta, produrre risultati non rappresentabili esattamente nel calcolatore. Pertanto, quando un algoritmo, costituito da una successione di operazioni elementari, è eseguito su un calcolatore, si ha in generale una creazione e successiva propagazione di errori. Tali errori sono appunto gli errori di arrotondamento o round-off.

L'errore di troncamento è una discrepanza introdotta dal fatto che i metodi numerici utilizzano delle approssimazioni per eseguire calcoli matematici e rappresentare quantità esatte.

Il risultato prodotto dall'algoritmo differisce, quindi in generale dal risultato esatto, cioè da quel risultato ideale che si otterrebbe operando con tutte le cifre richieste. Il risultato dipenderà da come le perturbazioni, cioè la successione di errori, si amplificheranno. Lo studio del comportamento degli errori nonché la progettazione di tecniche per contenerne la propagazione, stanno alla base di qualsiasi algoritmo per il calcolo numerico, in quanto, l'amplificazione di un errore anche piccolo può addirittura invalidare il risultato dell'algoritmo.

Dato un problema matematico possiamo, in maniera schematica, distinguere, per quanto riguarda la propagazione degli errori, il comportamento di un problema e quello di un particolare algoritmo utilizzato per risolvere tale problema. Nel primo caso, formulando l'ipotesi ideale di essere in grado di risolvere esattamente il problema, si è interessati a vedere come eventuali perturbazioni sui dati si trasmettono ai risultati. Per caratterizzare un problema rispetto a questo tipo di comportamento si utilizza comunemente il termine di condizionamento. Più precisamente si parla di problema malcondizionato o bencondizionato a seconda che nel particolare contesto le perturbazioni sui dati influenzino o non i risultati. Nel caso di un algoritmo, per indicare il suo comportamento rispetto alla propagazione degli errori è più usuale il termine di stabilità. Si parlerà quindi algoritmo stabile o instabile. E' stabile un algoritmo nel quale la successione delle operazioni non amplifica gli errori di arrotondamento, è instabile un algoritmo che li amplifica eccessivamente.

La distinzione tra condizionamento di un problema e stabilità di un algoritmo è importante perché, mentre per un problema bencondizionato è possibile, in generale, trovare algoritmi stabili, per un problema malcondizionato è opportuna una completa riformulazione del problema stesso.





Precedente Indice Successivo