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) con arrotondamento al numero più vicino (a parità, al numero con ultima cifra binaria 0).
- (a) Quanti numeri contiene? Quanto valgono xmin, xmax, la precisione di macchina εM e l'unità di arrotondamento u?
- (b) Calcolare fl(0,6), fl(4,4) e fl(5,5) e l'errore relativo commesso in ciascun caso, confrontandolo con u.
- (c) Calcolare (4+0,5)+0,5 e 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+4m)2e con m∈{0,1,2,3} ed e∈{−1,0,1,2}, quindi 4⋅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.
- xmin=1⋅2−1=0,5 (mantissa minima, esponente minimo).
- xmax=1,75⋅22=7 (mantissa (1,11)2=1,75, esponente massimo).
- εM=β1−t=2−2=0,25 (da 1 al successivo 1,25) e u=εM/2=0,125.
(b) Arrotondamento
I numeri di macchina vicini e le distanze:
- 0,6 sta tra 0,5 e 0,625 (passo 0,125): distanze 0,1 e 0,025, quindi fl(0,6)=0,625. Errore relativo 0,60,025≈0,0417≤u.
- 4,4 sta tra 4 e 5 (passo 1): distanze 0,4 e 0,6, quindi fl(4,4)=4. Errore relativo 4,40,4≈0,0909≤u.
- 5,5 è esattamente a metà tra 5=(1,01)2⋅22 e 6=(1,10)2⋅22. Si sceglie quello con ultima cifra binaria 0: è 6. Errore relativo 5,50,5≈0,0909≤u.
In tutti i casi l'errore relativo è ≤u=0,125, come garantisce il teorema.
(c) La somma non è associativa
- (4+0,5)+0,5: 4+0,5=4,5 è a metà tra 4=(1,00)2⋅22 e 5; vince il numero con ultima cifra 0, cioè 4. Poi 4+0,5=4,5→4 ancora. Risultato 4.
- 4+(0,5+0,5): 0,5+0,5=1 (esatto, è di macchina); 4+1=5, di macchina. Risultato 5.
Il valore esatto è 5: la prima via ha assorbito due volte il 0,5 (a 4 il passo è 1, quindi aggiungere meno di 0,5 non cambia nulla e 0,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 e sono equispaziati con passo βe+1−t, che cresce con e: qui 0,125 vicino a 0,5 e 1 vicino a 7. L'errore assoluto massimo è mezzo passo, quindi dipende da e e può essere grande per numeri grandi. Dividendo per ∣x∣≥βe il fattore βe si semplifica e resta 21β1−t=u, uguale per ogni e.
Risultati. #F=33, xmin=0,5, xmax=7, εM=0,25, u=0,125; fl(0,6)=0,625, fl(4,4)=4, fl(5,5)=6; (4+0,5)+0,5=4, 4+(0,5+0,5)=5.
Errori tipici
- Dimenticare che le mantisse partono da 1: xmin=0,5, non 0,125.
- Nei pareggi arrotondare "per eccesso" invece che al numero con ultima cifra pari.
- Pensare che εM sia il più piccolo numero positivo: è la distanza tra 1 e il successivo.
Versione ripasso
(a) Numeri positivi (1+4m)2e, m=0..3, e=−1..2: 16; #F=2⋅1⋅22⋅4+1=33. xmin=0,5, xmax=1,75⋅4=7, εM=2−2=0,25, u=0,125.
(b)
- 0,6 tra 0,5 e 0,625 (passo 0,125): fl=0,625, errore relativo 0,60,025≈0,042.
- 4,4 tra 4 e 5 (passo 1): fl=4, 4,40,4≈0,091.
- 5,5 è un pareggio tra 5=(1,01)2⋅4 e 6=(1,10)2⋅4: vince l'ultima cifra 0, fl=6, errore 0,091.
Tutti ≤u=0,125.
(c) (4+0,5)+0,5: 4,5 è un pareggio tra 4 e 5, vince 4; di nuovo 4. Invece 0,5+0,5=1 e 4+1=5. Esatto: 5. La somma non è associativa (assorbimento): prima i termini piccoli.
(d) Il passo βe+1−t cresce con e; l'errore assoluto ≤ mezzo passo; dividendo per ∣x∣≥βe resta 21β1−t=u per ogni e.
Errori tipici: xmin=0,125 (le mantisse partono da 1); pareggi arrotondati per eccesso; εM scambiato con il minimo positivo.