next up previous
Next: Calcolo di Up: Gli errori Previous: Radici di un polinomio

Un altro algoritmo instabile

Vogliamo trovare i valori di

\begin{displaymath}E_n = \int_0^1 x^n e^{x-1} dx
\end{displaymath}

per $n=1,\ldots,10$. Utilizzando l'integrazione per parti otteniamo la relazione ricorrente

En = 1-n En-1

e supponendo noto E1=1/e possiamo pensare di calcolare i successivi valori di En in base a questa formula. Si fa presto a verificare che i risultati sono disastrosi, dando addirittura valori negativi! L'algoritmo usato è instabile: infatti l'errore inerente presente in E1 (dovuto al fatto che 1/e viene rappresentato come numero di macchina) viene moltiplicato per $2,3,4,\ldots$, cioè amplificato enormemente ad ogni passo.

Un modo curioso di ottenere, in questo caso, un algoritmo stabile è quello di eseguire le iterazioni all'indietro:

\begin{displaymath}E_{n-1} = {1-E_n \over n}.
\end{displaymath}

Per scegliere un valore iniziale, osserviamo che $E_n\rightarrow 0$ quando $n\rightarrow\infty$ (questo si può mostrare con metodi analitici). Allora poniamo E20=0 e incrociamo le dita. Si verifica che la successione ottenuta risalendo all'indietro fino ad E1 è molto precisa! Questo accade perché l'errore iniziale presente in E20 viene via via diviso per $
20, 19, \ldots$, diventando inferiore alla precisione di macchina.

Notare che questo è un possibile modo per calcolare il valore di e usando solo le quattro operazioni fondamentali.


next up previous
Next: Calcolo di Up: Gli errori Previous: Radici di un polinomio
Daniele Finocchiaro
1998-11-13