Salta al contenuto
Note per Studenti Esercizio - Numeri di macchina di F(2,3,-1,2), arrotondamento e somma non associativa

Esercizio - Numeri di macchina di F(2,3,-1,2), arrotondamento e somma non associativa

In questa pagina 3

Teoria: Aritmetica di macchina - floating point, precisione di macchina e cancellazioneUn calcolatore rappresenta solo un insieme finito di numeri F(β,t,L,U); ogni numero reale viene arrotondato con errore relativo al più u = ½β^(1−t) (u ≈ 1,1·10⁻¹⁶ in doppia precisione) e ogni operazione è esatta più un errore (1+δ), |δ| ≤ u. Conseguenze: overflow e underflow, somma non associativa, assorbimento, e soprattutto la cancellazione numerica nella differenza di numeri quasi uguali, che si evita riformulando l'espressione.Aritmetica di macchina - floating point, precisione di macchina e cancellazione →.

Testo

Si consideri il sistema di numeri di macchina F(2,3,−1,2)F(2,3,-1,2) con arrotondamento al numero più vicino (a parità, al numero con ultima cifra binaria 00).

  • (a) Quanti numeri contiene? Quanto valgono xmin⁡x_{\min}, xmax⁡x_{\max}, la precisione di macchina εM\varepsilon_M e l'unità di arrotondamento uu?
  • (b) Calcolare fl(0,6)\mathrm{fl}(0{,}6), fl(4,4)\mathrm{fl}(4{,}4) e fl(5,5)\mathrm{fl}(5{,}5) e l'errore relativo commesso in ciascun caso, confrontandolo con uu.
  • (c) Calcolare (4+0,5)+0,5(4 + 0{,}5) + 0{,}5 e 4+(0,5+0,5)4 + (0{,}5 + 0{,}5) in aritmetica di macchina e commentare.
  • (d) Domanda teorica: perché si dice che l'arrotondamento limita l'errore relativo e non quello assoluto?

Soluzione

(a) Struttura del sistema

I numeri positivi sono (1,m1m2)2⋅2e=(1+m4)2e(1{,}m_1m_2)_2 \cdot 2^e = \left(1 + \frac m4\right)2^e con m∈{0,1,2,3}m \in \{0,1,2,3\} ed e∈{−1,0,1,2}e \in \{-1,0,1,2\}, quindi 4⋅4=164 \cdot 4 = 16 numeri positivi. Con gli opposti e lo zero: #F=2(β−1)βt−1(U−L+1)+1=2⋅1⋅22⋅4+1=33.\#F = 2(\beta-1)\beta^{t-1}(U-L+1) + 1 = 2\cdot 1\cdot 2^{2}\cdot 4 + 1 = 33.

  • xmin⁡=1⋅2−1=0,5x_{\min} = 1 \cdot 2^{-1} = 0{,}5 (mantissa minima, esponente minimo).
  • xmax⁡=1,75⋅22=7x_{\max} = 1{,}75 \cdot 2^{2} = 7 (mantissa (1,11)2=1,75(1{,}11)_2 = 1{,}75, esponente massimo).
  • εM=β1−t=2−2=0,25\varepsilon_M = \beta^{1-t} = 2^{-2} = 0{,}25 (da 11 al successivo 1,251{,}25) e u=εM/2=0,125u = \varepsilon_M/2 = 0{,}125.

(b) Arrotondamento

I numeri di macchina vicini e le distanze:

  • 0,60{,}6 sta tra 0,50{,}5 e 0,6250{,}625 (passo 0,1250{,}125): distanze 0,10{,}1 e 0,0250{,}025, quindi fl(0,6)=0,625\mathrm{fl}(0{,}6) = 0{,}625. Errore relativo 0,0250,6≈0,0417≤u\frac{0{,}025}{0{,}6} \approx 0{,}0417 \le u.
  • 4,44{,}4 sta tra 44 e 55 (passo 11): distanze 0,40{,}4 e 0,60{,}6, quindi fl(4,4)=4\mathrm{fl}(4{,}4) = 4. Errore relativo 0,44,4≈0,0909≤u\frac{0{,}4}{4{,}4} \approx 0{,}0909 \le u.
  • 5,55{,}5 è esattamente a metà tra 5=(1,01)2⋅225 = (1{,}01)_2\cdot 2^2 e 6=(1,10)2⋅226 = (1{,}10)_2\cdot 2^2. Si sceglie quello con ultima cifra binaria 00: è 66. Errore relativo 0,55,5≈0,0909≤u\frac{0{,}5}{5{,}5} \approx 0{,}0909 \le u.

In tutti i casi l'errore relativo è ≤u=0,125\le u = 0{,}125, come garantisce il teorema.

(c) La somma non è associativa

  • (4+0,5)+0,5(4 + 0{,}5) + 0{,}5: 4+0,5=4,54 + 0{,}5 = 4{,}5 è a metà tra 4=(1,00)2⋅224 = (1{,}00)_2\cdot 2^2 e 55; vince il numero con ultima cifra 00, cioè 44. Poi 4+0,5=4,5→44 + 0{,}5 = 4{,}5 \to 4 ancora. Risultato 44.
  • 4+(0,5+0,5)4 + (0{,}5 + 0{,}5): 0,5+0,5=10{,}5 + 0{,}5 = 1 (esatto, è di macchina); 4+1=54 + 1 = 5, di macchina. Risultato 55.

Il valore esatto è 55: la prima via ha assorbito due volte il 0,50{,}5 (a 44 il passo è 11, quindi aggiungere meno di 0,50{,}5 non cambia nulla e 0,50{,}5 cade proprio sul pareggio). Le due espressioni sono uguali in matematica ma diverse in aritmetica di macchina: conviene sommare prima i termini piccoli.

(d) Errore relativo e non assoluto

I numeri di macchina con esponente ee sono equispaziati con passo βe+1−t\beta^{e+1-t}, che cresce con ee: qui 0,1250{,}125 vicino a 0,50{,}5 e 11 vicino a 77. L'errore assoluto massimo è mezzo passo, quindi dipende da ee e può essere grande per numeri grandi. Dividendo per ∣x∣≥βe|x| \ge \beta^e il fattore βe\beta^e si semplifica e resta 12β1−t=u\frac12\beta^{1-t} = u, uguale per ogni ee.

Risultati. #F=33\#F = \mathbf{33}, xmin⁡=0,5x_{\min} = \mathbf{0{,}5}, xmax⁡=7x_{\max} = \mathbf{7}, εM=0,25\varepsilon_M = \mathbf{0{,}25}, u=0,125u = \mathbf{0{,}125}; fl(0,6)=0,625\mathrm{fl}(0{,}6) = \mathbf{0{,}625}, fl(4,4)=4\mathrm{fl}(4{,}4) = \mathbf{4}, fl(5,5)=6\mathrm{fl}(5{,}5) = \mathbf{6}; (4+0,5)+0,5=4(4+0{,}5)+0{,}5 = \mathbf{4}, 4+(0,5+0,5)=54+(0{,}5+0{,}5) = \mathbf{5}.

Errori tipici

  • Dimenticare che le mantisse partono da 11: xmin⁡=0,5x_{\min} = 0{,}5, non 0,1250{,}125.
  • Nei pareggi arrotondare "per eccesso" invece che al numero con ultima cifra pari.
  • Pensare che εM\varepsilon_M sia il più piccolo numero positivo: è la distanza tra 11 e il successivo.

Versione ripasso

(a) Numeri positivi (1+m4)2e(1+\frac m4)2^e, m=0..3m=0..3, e=−1..2e=-1..2: 1616; #F=2⋅1⋅22⋅4+1=33\#F=2\cdot1\cdot2^2\cdot4+1=33. xmin⁡=0,5x_{\min}=0{,}5, xmax⁡=1,75⋅4=7x_{\max}=1{,}75\cdot4=7, εM=2−2=0,25\varepsilon_M=2^{-2}=0{,}25, u=0,125u=0{,}125.

(b)

  • 0,60{,}6 tra 0,50{,}5 e 0,6250{,}625 (passo 0,1250{,}125): fl=0,625\mathrm{fl}=0{,}625, errore relativo 0,0250,6≈0,042\frac{0{,}025}{0{,}6}\approx0{,}042.
  • 4,44{,}4 tra 44 e 55 (passo 11): fl=4\mathrm{fl}=4, 0,44,4≈0,091\frac{0{,}4}{4{,}4}\approx0{,}091.
  • 5,55{,}5 è un pareggio tra 5=(1,01)2⋅45=(1{,}01)_2\cdot4 e 6=(1,10)2⋅46=(1{,}10)_2\cdot4: vince l'ultima cifra 00, fl=6\mathrm{fl}=6, errore 0,0910{,}091. Tutti ≤u=0,125\le u=0{,}125.

(c) (4+0,5)+0,5(4+0{,}5)+0{,}5: 4,54{,}5 è un pareggio tra 44 e 55, vince 44; di nuovo 44. Invece 0,5+0,5=10{,}5+0{,}5=1 e 4+1=54+1=5. Esatto: 55. La somma non è associativa (assorbimento): prima i termini piccoli.

(d) Il passo βe+1−t\beta^{e+1-t} cresce con ee; l'errore assoluto ≤\le mezzo passo; dividendo per ∣x∣≥βe|x|\ge\beta^e resta 12β1−t=u\frac12\beta^{1-t}=u per ogni ee.

Errori tipici: xmin⁡=0,125x_{\min}=0{,}125 (le mantisse partono da 11); pareggi arrotondati per eccesso; εM\varepsilon_M scambiato con il minimo positivo.

Teoria collegata