SORGENTI DI ERRORE
Induzione
Costruire il modello
Specificare il problema
Conoscenza
Modifica del
modello
Confrontare con
la realtà
Formulare il problema
matematico
Validazione
Interpretare la
soluzione
Deduzione
Risolvere il
problema matematico
I RISULTATI NUMERICI SONO
INFLUENZATI DA ERRORI
Formulazione del problema
matematico e numerico
Costruzione del
metodo numerico
Implementazione del
metodo numerico
Algoritmo, software
Interpretazione
della soluzione
Soluzioni numeriche
1
SORGENTI DI ERRORE
• Semplificazioni introdotte nel modello
Ad es., il modello è supposto lineare, oppure si
suppongono trascurabili alcune grandezze fisiche
(inadeguatezza del modello)
•Errori nei dati
errori di misurazione (sistematici e/o random)
•Errori di troncamento
Si introducono quando un procedimento infinito è
approssimato mediante procedimento finito: ad es.
derivata è approssimata con rapporto incrementale, etc.
•Errori di arrotondamento e troncamento nei dati e
•nei calcoli
Il nostro sistema di numerazione è posizionale.
N > 1 base
a = ±amam−1 ........
a1 a0 a−1 a−2 ........ 0≤ ai ≤ N−1 =
= ±am Nm + am−1 N m−1 + ......+ a1 N + a0 N 0 + a−1 N−1 + a−2 N−2 + .....
Ad ogni numero di macchina, rappresentato nella base del
calcolatore (2 o potenza di 2), è riservato uno spazio finito.
Interi:
Ad essi viene riservato un numero massimo fissato p di cifre.
Possono essere rappresentati solo gli n tali che
|n| < 2 p -1 (se la base del sistema di numerazione è 2).
Possibili errori:
•Gli n che non soddisfano la disuguaglianza non possono essere
rappresentati (errore di overflow).
•Il risultato di una divisione tra interi può non essere un intero.
Ad es. 8:4=2, ma
4:8=0, se si memorizza il risultato in una variabile intera
2
Errori nella rappresentazione dei
numeri reali
a ∈ ℜ, a = p N q
p reale, q intero (< = > 0), N base
p=mantissa, q=caratteristica.
Ogni numero reale si può rappresentare come coppia
(mantissa, caratteristica), fissata la base N del sistema di
numerazione.
Questa rappresentazione non è unica. Infatti
p
a = p N q = ( pN ) N q−1 = N q+1
N
Ad es.
123 = 123*100 =12,3*101 = 1,23*102 =
0,123*103 = 0,0123*104
La rappresentazione adottata sul calcolatore è
quella normalizzata, ovvero tale che
N −1 ≤ p <1
Nell’esempio precedente l’unica rappresentazione
normalizzata di 123 è 0,123*103. Le altre
rappresentazioni hanno una mantissa in modulo > 1,
oppure < 0.1 (l’ultimo caso).
Ai numeri reali è riservato un numero fissato di bits, t
bits per la mantissa, r bits per la caratteristica.
Di solito
t=6 in precisione semplice,
t=14 in doppia precisione.
r soddisfa m <= q <= M, con m, M che dipendono dal
calcolatore.
3
L’insieme dei numeri di macchina A⊂ ℜ è definito da r e t.
Se il numero di bits a disposizione della caratteristica (indicato con
r) non è sufficiente, il numero non può essere memorizzato
(overflow o underflow).
I numeri reali la cui mantissa, in forma normalizzata, necessitano di
un numero di bits > t, devono essere accorciati, ovvero la mantissa
viene accorciata per troncamento o arrotondamento.
Se x è un numero reale non di macchina, esso viene rappresentato
dal numero di macchina ad esso più vicino, ovvero:
a ∈ ℜ − Α → a ∈ Α t. c . | a − a | ≤ | a − g | ∀ g ∈ Α
a = pΝq →a = pΝq
Troncamento:
| p − p | ≤ Ν −t ,
p = 0. p1 p2 ....p t pt +1 ..., p = 0. p1 p2 ....pt .
Arrotondamento:
1 −t
Ν
2
p = 0 . p 1 p 2 ..... p t
| p − p |≤
p = 0 . p 1 p 2 ..... p t + 10
se 0 ≤ p t + 1 ≤ 4 ,
−t
se p t + 1 ≥ 5
Errore nella rappresentazione di un numero
reale in virgola mobile
• Errore assoluto
x− x
Se l’errore assoluto è ≤ 1 Ν − k , si dice che x ha k decimali
2
corretti.
x−x
• Errore relativo
x
x=p Ν q numero reale,
x = p Ν q numero di macchina
1
| p − p | ≤   Ν −t ,
| x − x |≤
2
Errore relativo: | x |=| p Ν q | = | p | Ν q ≥ Ν−1 Ν q =Νq−1,
Errore assoluto:
 1  q −t
 Ν
2
1
1
≤ q−1
| x| Ν
x−x x −x  1  q−t 1− q  1 1−t
≤ q−1 ≤   Ν Ν =   Ν
x
Ν
2 
 2
 1  1 −t
 Ν
2
è la precisione di macchina = eps
4
Somme in virgola mobile (+* )
•Somma di numeri con uguale caratteristica:
si sommano le mantisse, e si arrotonda.
b1 = 0.2841*10−3 ,
b2 = 0.4212*10−3
b1 + b2 = 0.7053*10−3 = b1 +* b2
•Se la mantissa risultante non è in modulo < 1 oppure
> N-1, si normalizza e si arrotonda.
b1 = 0 . 2841 * 10 − 3 ,
b 2 = 0 . 8112 * 10 − 3
b1 + b 2 = 1 . 0953 * 10 − 3
b1 + * b 2 = 0 . 1095 * 10 − 2
Somme in virgola mobile (+* )
•Somma di numeri con diversa caratteristica:
si trasforma il numero con caratteristica minore in
modo tale da avere caratteristica uguale all’altro numero.
b1 = 0.2841*10−3 ,
b2 = 0.4813*10−2
b1 = 0.02841*10−2
b1 + b2 = 0.50971*10−2
b1 +* b2 = 0.5097*10−2
•Ecco che cosa può accadere:
b1 = 0.2841*10−3 ,
b2 = 0.1248 *10 −7
b2 = 0.00001248*10 −3
b1 + b2 = 0.28411248*10−3
b1 +* b2 = 0.2841*10 −3 = b1
5
Prodotto e divisione virgola mobile (**, :*)
•Si moltiplicano le mantisse, si sommano le
caratteristiche, si normalizza e si arrotonda.
b1 = 0.1248 * 10−3 ,
b2 = 0.3144* 105
b1 * b2 = 0.03923712 * 102
b1 ** b2 = 0.3924 * 101
•Nella divisione il dividendo viene rappresentato con
il doppio delle cifre.
b1 = 0.7814 * 102 ,
b2 = 0.3148 * 101
b1 :b2 = 2.48221092* 101
b1 :* b2 = 0.2482 * 102
•Può accadere che i risultati di un calcolo tra numeri
di macchina diano numeri non rappresentabili.
y = a ** b
Overflow:
a = p1 Ν 1 ,
q
y =a:* b,
b= p2 Ν 2 ,
q
q1 >0, q2 <0,
M
, q1 +q2 > M
2
q1 −q2 >M
q1, q2 >
•Le operazioni di macchina non godono delle usuali
proprietà tra numeri reali:
Non valgono in generale:
a+*(b+* c) ≠ (a+* b)+*c
•la proprietà associativa:
*
*
*
*
*
•la proprietà distributiva: a * ( b + c ) ≠ ( a * b ) + ( a * c )
(a **b) :*b ≠ a
•la legge di semplificazione:
eps
•Ancora:
a +* b = a se |b | <
|a|
Ν
6
Effetto smearing
Perdita di cifre amplificata da cancellazione
t=8
a = 0.23371258 * 10 − 4
b = 0.33678429 * 10 2
c = − 0.33677811 * 10 2
a + * ( b + * c ) = a + * 0.00000618 * 10 2 =
= a + * 0 .61800000 * 10 − 3 = 0.64137126 * 10 −3
( a + * b ) + * c = ( 0. 0000002337 1258 * 10 2 + * b ) + * c =
= 0.33678452 * 10 2 + * c = 0 .64100000 * 10 − 3
Il risultato esatto è
0.641371258 * 10 −3
Nel I caso l’errore risulta inferiore (poiché la somma tra numero
“grande” e numero “piccolo” è stata eseguita come ultima operazione.
Nel II caso sommando a e b, di ordine di grandezza diverso, si sono
perse subito delle cifre nell’arrotondamento, che quindi non hanno poi
contribuito al risultato.
Supponiamo la mantissa di 4 cifre.
t=4
1 +*
10. 000
∑a
k =1
k
,
a k = 10 −4 ∀ k
1 + a 1 = 0.1000 * 10 1 + 0.1000 * 10 − 3 =
*
= 0.1000 * 10 1 + 0.00001 * 101 =
= 0.1000 * 101 = 1
Pertanto
1 +*
10.000
∑a
k
=1
k =1
Se invece si calcola prima la sommatoria, e poi si aggiunge 1, si
ottiene 2, ovvero
10.000
∑
a k +* 1 = 2
k =1
Quindi non vale la proprietà associativa, e l’errore maggiore viene
commesso sommando subito numeri di ordine di grandezza diversi.
7
Cancellazione numerica
• Errore nella sottrazione di numeri quasi uguali
a = p1 Ν q , b = p 2 Ν q
Supponiamo che coincidano le prime 3 cifre di p1 e p2.
q−3
Quindi nella mantissa della differenza a − b = p Ν
Solo le prime t-3 cifre provengono da p 1 e p2,
Le altre 3 cifre non hanno significato.
a−b = 0.000xx x...x xx 10q = 0. xx x...x x hhh 10q−3
1442443
14243{
t −3
t
Es:
N = 10 , t = 6
3
p 1 = 0 . 147554326
,
p 1 = 0 . 147554
p 2 = 0 . 147251742
,
p 2 = 0 . 147252
p = p1 − p 2 = 0 .000302584
= 0 . 302584
p = p1 − p 2 = 0 . 302000
−3
* 10
* 10
−3
Esempio di cancellazione numerica
Esempio:
Le radici di
x 2 −2a x + ε = 0
x1 = a+ a 2 −ε ,
sono:
x2 = a− a2 −ε
Se | ε | << | a |, allora x 2 è differenza di due
numeri quasi uguali.
Si può evitare la cancellazione numerica ponendo:
x1 =a+sg(a) a2 −ε ,
x2 =a− a2 −ε =
(a− a2 −ε ) (a+ a2 −ε )
(a+ a2 −ε )
=
ε
x1
8
Algoritmo per la determinazione di eps
Proprietà della precisione di macchina:
eps è il più piccolo numero positivo che viene
“sentito” nella somma ad 1, ovvero
1 +* a = 1 ∀a ∈ M, 0< a < eps
1 +* eps> 1
begin
eps:=1
repeat
eps := eps/2
until 1+eps = 1
eps:= 2 * eps
end
Algoritmo per la determinazione del più
piccolo numero rappresentabile
La precisione di macchina non è lo zero della macchina.
Numeri minori di eps possono essere rappresentati, ma
non vengono “sentiti” nella somma ad 1, cioè vengono
trattati come se fossero uguali a zero.
begin
min:=1
repeat
min := min/10
until min=0
end
Il più piccolo numero rappresentabile è il penultimo della lista
9
In binario un numero reale non ammette necessariamente
una rappresentazione finita, anche se in base dieci ha una
rappresentazione finita.
Ad es. 0.1, 0.01, 0.001 necessitano di infinite cifre binarie
a =(.x
x
−1
x
−2
x
−3
−1
x
−2
........ x
−n
M
= a M 
= { a M } M 
=  { { a M } M } ,
0 .1 * 2 = 0 .2 → x
−1
0 .2 * 2 = 0 .4 → x
−2
=0
0 .4 * 2 = 0 .8 → x
−3
=0
0 .8 * 2 = 1 .6 → x
−4
=1
0 . 6 * 2 = 1 .2 → x
−5
=1
0 .2 * 2 = 0 .4 → x
−6
=0
0 . 1 = 0 . 00011
{ x}= x − x 
=0
0011 0011 ........
0 .3 * 2 = 0 .6 → x
0.3
.... )
=0
−1
0 .6 * 2 = 1 . 2 → x
−2
=1
0 .2 * 2 = 0 . 4 → x
−3
=0
0 .4 * 2 = 0 . 8 → x
−4
=0
0 .8 * 2 = 1 . 6 → x
−5
=1
0 .6 * 2 = 1 . 2 → x
−6
=1
( 0 . 3 ) 10 = 0 . 01001 1001 .... = ( 0 . 01001 ) 2
0 . 25 * 2 = 0 . 50 → x
0.25
0 .5 * 2 = 1 .0 → x
−2
−1
=0
=1
( 0 . 25 ) 10 = ( 0 . 01 ) 2
10
Errori dovuti ad un cattivo calcolo numerico
http://www.math.psu.edu/dna/disasters
http://www.ima.umn.edu/~arnold/index.html
http://www.resonancepub.com/oops.htm
•Fallimento del Missile Patriot in Dharan, Saudi Arabia, il 25
Febbraio 1991: 28 morti. Attribuito ad uno scarso
trattamento degli errori d’arrotondamento.
•Esplosione immediatamento dopo la partenza del razzo
Ariane 5 lanciato dall’Agenzia Spaziale Europea nella Guiana
Francese, il 4 Giugno 1996. Conseguenza di un semplice
overflow.
•Affondamento della piattaforma Sleipner A per la produzione
di petrolio e gas in Gandsfjorden near Stavanger, Norvegia, il
23 Agosto 1991. Causata da un’analisi inaccurata mediante
elementi finiti.
11