Troncamento ed arrotondamento

Proviamo con un esempio a spiegare il funzionamento dei due metodi: consideriamo $\mathbb{F}(10,3,-1,1)$ ed $x>0$, sia $x=0.3426 \cdot {10}^0$; naturalmente questo numero non può essere rappresentato in modo esatto con un elemento dell'insieme $\mathbb{F}$ (il numero di cifre significative è superiore al nostro limite); vediamo come si comportano allora troncamento ed arrotondamento:

troncamento: vengono eliminate le cifre in eccesso, ottenendo per il nostro esempio $fl(x)=0.342 \cdot {10}^0$;
arrotondamento: si considera la (t+1)-esima cifra e la si confronta con $\frac{\beta}{2}$: se questa cifre risulta maggiore di quella quantita si pone $d_t=d_t+1$ altrimenti non si compie nessuna operazione; in ogni caso le cifre in eccesso, dopo il passo precedente, vengono troncate. In pratica calcoliamo

\begin{displaymath}y=x + \frac{\beta}{2} \cdot {10}^{-(t+1)}\end{displaymath}


\begin{displaymath}(0.3426 \cdot {10}^0 + 0.0005 \cdot {10}^0=0.3431 \cdot
{10}^0)\end{displaymath}

e successivamente se ne esegue il troncamento ( $fl(x)=0.343 \cdot {10}^0$). Facciamo notare che la somma precedente può dal luogo ad overflow.
Riassumendo:
troncamento:

\begin{displaymath}fl(x)=tronc(x)={\beta}^p \sum_{i=1}^t d_i {\beta}^{-i}\end{displaymath}


arrotondamento:

\begin{displaymath}fl(x)=arr(x)={\beta}^p tronc \left( \sum_{i=1}^{t+1} d_i {\beta}^{-i}
\pm \frac{\beta}{2} {\beta}^{t+1} \right)\end{displaymath}

Il significato del $\pm$ è che, nel caso $x>0$ deve essere utilizzato il ``$+$'', mentre per $x<0$ si deve utilizzare ``$-$''.

Proposizione 2   Sia:

\begin{displaymath}x= \left( \sum_{i=1}^{+ \infty} d_i {\beta}^{-i} \right)
{\beta}^p \quad d_1 \neq 0, \mbox{ } x \neq 0\end{displaymath}

allora, se non si verifica overflow, si ha

\begin{displaymath}\left\vert \frac{fl(x)-x}{x} \right\vert < k {\beta}^{(1-t)} ...
...
\frac{1}{2} & \mbox{se } fl(x)=arr(x)
\end{array}
\right.
\end{displaymath}

Il numero $k {\beta}^{(1-t)}=eps$ è detto precisione di macchina, ed è il più piccolo numero positivo tale che:

\begin{displaymath}fl(1+eps)>1\end{displaymath}


\begin{displaymath}fl(1+\varepsilon)=1, \quad 0<\varepsilon<eps\end{displaymath}

infatti si verifica facilmente che, nel caso si utilizzi come metodo di approssimazione l'arrotondamento, si ha

\begin{displaymath}1+eps = 1+ \frac{1}{2}{\beta}^{1-t}=\beta \left( {\beta}^{-1} +
\frac{\beta}{2} {\beta}^{-(t+1)} \right) \quad \{p=1\}\end{displaymath}

\begin{eqnarray*}
arr(1+eps) & = & \beta tronc \left( {\beta}^{-1} + \frac{\bet...
...ative}} = \beta \left(
{\beta}^{-1} + {\beta}^{-t} \right) > 1
\end{eqnarray*}


Per verificare $ fl(1+\varepsilon)=1$ scegliendo $\varepsilon <
\frac{\beta}{2} {\beta}^{-(t+1)}$ si otterrà, alla fine di una sequenza di espressioni simili a quelle sopra, un qualcosa di minore di ${\beta}^{-t}$ che verrà scartato dall'operazione di troncamento.

Morpheus 2004-01-04