Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.

26
Aritmetica finita & Propagazione dell’errore Di Parola Umberto e Pani La

Transcript of Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.

Page 1: Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.

Aritmetica finita &

Propagazione dell’errore 

Di Parola Umberto e Pani Lara

Page 2: Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.

Aritmetica di macchina

Numeri di macchina

Operazioni di macchina

Page 3: Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.

Numeri di macchina

Rappresentazione in virgola mobile o Floating-point?Spazio limitato sul calcolatore

Approssimazione

Errore assoluto (Ea) |(x - x°)| Errore relativo (Er) |(x - x°)/x|

Precisione di macchina o ε di macchina (eps)

Page 4: Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.

Troncamento Arrotondamento

Data una mantissa di t cifre, l’approssimazione può avvenire per

• Escludo la parte destra della t-esima cifra

• Errore relativo elevato• Errore assoluto: |x - x°| <

β-t

• eps=N1-t

• Aggiungo ½ N-t alla mantissa in questione e poi tronco quest’ultima alla t-esima cifra

• Errore relativo basso• Errore assoluto: |x - x°| <

½ β-t

• eps= ½ N1-t

t = 6

1,2659298 1,26592Er = (1,2659298 -

1,26592)/1,2659298 = 7,74 *10-6

1,2659298 1,26593 Er = (1,2659298 - 1,26593)/1,2659298

= -1,58*10-8

Page 5: Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.

Sia ε l’errore relativo della rappresentazione di x (ε = (fl(x) – x)/x ⇒ fl(x) = x (1 + ε))

eps, |ε| ≤ eps

fl(x) = x(1 + ε), |ε| ≤ eps

fl(x) l’operazione di approssimazione di x a numero di macchina in aritmetica floating-point

le operazioni di macchina (funzionali all’applicazione di operazioni aritmetiche ai numeri macchina), che a due numeri macchina ne associano un terzo, ottenuto arrotondando (attraverso le tecniche precedentemente viste) l’esatto risultato dell’operazione aritmetica in questione.

Page 6: Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.

a ⊕ b = fl(fl(a) + fl(b)) = (fl(a) + fl(b))(1 +ε1), |ε1| ≤ eps;a ---- b = fl(fl(a) − fl(b)) = (fl(a) − fl(b))(1 +ε2), |ε2| ≤ eps;a ⊗ b = fl(fl(a) × fl(b)) = (fl(a) × fl(b))(1 +ε3), |ε3| ≤ eps;a // b = fl(fl(a) / fl(b)) = (fl(a) / fl(b))(1 +ε4), |ε4| ≤ eps.

• Principio di equivalenza:si definiscono equivalenti due espressioni che in aritmetica finita forniscono risultati la cui distanza relativa differisce di una quantità dell’ordine della precisione di macchina.

• Proprietà

• Rappresentazione in linguaggio Java

• Overflow e underflow

Page 7: Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.

PropietàNon tutte le proprietà delle operazioni aritmetiche si conservano per le operazioni di macchina.La proprietà commutativa per somma e prodotto si conserva anche per le operazioni di macchina:a ⊕ b = b ⊕ a, a ⊗ b = b ⊗ a,Ma non valgono più le seguenti proprietà:• a ⊕ (b ⊕ c) ≠ (a ⊕ b) ⊕ c,• a ⊗ (b ⊗ c) ≠ (a ⊗ b) ⊗ c,• a ⊗ (b ⊕ c) ≠ (a ⊗ b) ⊕ (a ⊗ c),• (a ⊗ b) // b ≠ a,• (a // b) ⊗ b ≠ a,• (a ⊗ b) // c ≠ (a // c) ⊗ b.

Page 8: Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.

Rappresentazione in Java

Page 9: Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.
Page 10: Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.
Page 11: Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.
Page 12: Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.
Page 13: Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.
Page 14: Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.
Page 15: Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.
Page 16: Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.

Overflow e Underflowelaborazione eccedente, per numero di cifre rispettivamente positive e negative, il limite della capacità di una memoria.

ERRORE

Page 17: Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.

Errore Cancellazione numerica: Si dice cancellazione numerica il fenomeno di perdita di cifre significative che si verifica quando si opera una sottrazione tra due numeri di macchina “quasi uguali” tra loro (ovvero, il risultato è più piccolo di ciascuno dei due operandi). TUTTAVIA, la sottrazione non genera problemi in sé, ma amplifica errori di approssimazione già esistenti sugli operandi.

Applicazione di algoritmi: Valutando l’algoritmo nella sua stabilità numerica e nella qualità del condizionamento del problema rispetto a cui è applicato, si giunge ad ipotizzare l’incidenza di tre tipi di errori.Più nello specifico, considerando un generico problema di partenza descritto da una funzione esplicita y = f(x), si ha…

Page 18: Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.

fl(x1) = 0.191019 · 103 , fl(x2) = 0.191017 · 103

fl(x1) ----- fl(x2) = 0.000002 · 103 = 0.200000 · 10-2

fl(x1) = 0.191020 · 103 , fl(x2) = 0.191017 · 103

fl(x1) ----- fl(x2) = 0.000003 · 103 = 0.300000 · 10-2

[|(fl(x1) ----- fl(x2)) − (x1 − x2)| ]/ [|(x1 − x2)|] = 0.1363

Page 19: Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.

Nel campo pratico tali forme di errore possono essere, in certi casi, parzialmente ridotte (ma non evitate) tramite il ricorso a formulazioni alternative, dove il fenomeno della cancellazione

numerica si riduce di entità:

Esempio 1: Le radici di un equazione di secondo grado (x2 - 2ax + ε = 0) si trasformano ne

seguente modo, al fine di evitare l’applicazione della sottrazione, che produce un maggiore errore

(obbiettivo condiviso anche con i successivi esempi): x1= a + √a2 - ε e x2 = a - √a2 - ε = ε/x1.

Esempio 2: √x + ε - √ε = ε/(√x + ε + √x).

Esempio 3: cos(x+ε) – cos(x) = -2sin(ε/2) sin(x + ε/2).

Page 20: Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.

• un errore x - x°, al quale corrisponde un errore finale, dovuto non all’algoritmo, ma unicamente alla funzione f(x) (condizionamento): e1 = f(x) – f(x°).

• Un errore derivante dal fatto che spesso f viene approssimata con una funzione più semplice f1 (algoritmo); in questo caso abbiamo un ulteriore errore, detto di troncamento o discretizzazione: e2 = f(x°) – f1 (x°).

• Infine, le operazioni eseguite dal calcolatore nella valutazione di f1(x°) non sono esatte: invece del valore f1(x°) otterremo un valore f2(x°). L’errore: e3= f1 (x°) – f2(x°) , è dovuto alla propagazione degli errori di arrotondamento nel calcolo numerico f1(x°), di cui è responsabile la stabilità numerica dell’algoritmo.

Page 21: Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.

Ecco come si riscontra l’errore in Java(terzo caso)

Page 22: Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.
Page 23: Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.
Page 24: Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.
Page 25: Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.