Metodi numerici e Teoria degli errori

Metodi numerici
e
Teoria degli errori
2
Metodi numerici e Teoria degli errori
0
Sommario degli argomenti
• Modelli matematici
• Conoscenza numerica di numeri e funzioni: generalit`a
• Successioni definite per ricorrenza. Esempi:
– Somma e prodotto di n numeri.
– Progressioni aritmetiche e geometriche.
• Procedimenti di successive approssimazioni
– Il calcolo della derivata
• Conoscenza numerica di un numero
– Il calcolo di π.
• Conoscenza numerica di una funzione
– Il calcolo di sin x
– Il calcolo di ln x.
• Teoria degli errori
–
–
–
–
–
–
Errore assoluto e errore relativo
Errore di troncamento
Errore di arrotondamento
Errore di propagazione: schema NONOR
Stima degli indici di condizionamento mediante il calcolo delle derivate parziali.
Propagazione dell’errore: esempi
∗ Propagazione dell’errore nella somma e nel prodotto di n numeri.
∗ Propagazione dell’errore nel calcolo del polinomio di secondo grado.
– Condizionamento e stabilit`a
• Analisi di un metodo numerico: convergenza ed errore
– Analisi della convergenza e stima dell’errore nel calcolo di π
3
4
1
Introduzione
Con il termine “Analisi Numerica” si intende lo sviluppo e lo studio di procedure che
permettono di risolvere un problema mediante una sequenza di operazioni aritmetiche.
In genere `e coinvolta una gran quantit`a di calcoli, che rende di fatto inattuabili le procedure in assenza di opportuni strumenti di calcolo.
La realizzazione di un metodo numerico richiede quindi l’ausilio di uno strumento di
calcolo.
La sequenza ordinata di operazioni che conducono alla soluzione del problema prende il
nome di “algoritmo”.
2
Modello matematico
In presenza di un problema che trova origine nella realt`a sensibile, il primo passo da
affrontare nella ricerca di una soluzione `e la traduzione del problema stesso in “modello
matematico”.
Con tale termine si intende il processo che, attraverso l’interpretazione del problema porta
alla riformulazione dello stesso mediante linguaggio e formule puramente matematici.
Realizzata tale formulazione si procede a definire delle strategie risolventi o degli algoritmi,
che a partire dalla situazione iniziale producano una soluzione matematica del problema
stesso.
I problemi creati nell’ambito della modellistica matematica non sono quasi mai risolvibili per via analitica, per tanto `e necessario formulare per essi opportune procedure che
determinano la soluzione per via approssimata.
Nella maggior parte dei casi la soluzione di un modello porta alla stesura di diverse procedure risolventi; l’analista numerico non si limita alla realizzazione dell’algoritmo risolvente
ma studia quale tra gli algoritmi sia il pi`
u “efficiente”. L’efficienza di un algoritmo si stabilisce sulla base del numero di operazioni richieste, del tempo necessario ad arrivare alla
soluzione, della quantit`a di memoria usata (nel caso di uso di un computer), mentre altri
importantissimi parametri nella definizione del miglior algoritmo sono la “stabilit`a” e la
“convergenza”, parametri strettamente connessi al concetto di “errore”
Metodi numerici sono utilizzati anche nei casi in cui esiste la soluzione analitica del modello
formulato, ma risultano particolarmente importanti quando il problema, anche semplice,
non ammette una soluzione analitica.
Ad esempio `e noto che la lunghezza di una arco della curva y = sin(x), si ottiene dal
calcolo dell’integrale definito
Z πp
1 + cos2 (x) dx,
0
per il quale non esiste una soluzione in forma chiusa.
Per calcolare la lunghezza dell’arco si applicano tecniche standard che permettono di
calcolare il valore di un integrale definito qualunque sia la funzione integranda purch`e
sia integrabile e sia noto il valore che essa assume in opportuni punti dell’intervallo di
2. Modello matematico
5
definizione. Le sole operazioni richieste sono le quattro operazioni aritmetiche e precedure
di confronto, cio`e esattamente le operazioni che un computer `e in grado di effettuare.
Una soluzione fornita in analisi numerica `e sempre numerica; una soluzione analitica in
genere `e data in termini di funzioni matematiche di cui `e di solito immediato analizzare
il comportamento; ci`o in generale non `e vero per soluzioni numeriche.
Una soluzione numerica `e accettabile quando teoricamente l’approssimazione pu`o essere
resa accurata quanto si vuole e quando `e possibile in ogni istante sapere di quanto la
soluzione approssimata differisca dalla soluzione esatta.
Normalmente per raggiungere un elevato livello di accuratezza `e necessario coinvolgere
una gran mole di calcoli, poich`e ciascuna operazione effettuata `e generalmente affetta da
“errore”, in eleborazioni molto complesse l’effetto di tali errori pu`o essere pesante e influire
sulla bont`a della soluzione, pertanto lo studio degli errori e le varie fonti di errori in un
calcolo costituiscono un capitolo fondamentale per avvicinarsi alle tecniche dell’Analisi
Numerica.
Di fronte a un problema scientifico da risolvere, di norma si procede attraverso i seguenti
passi:
• definizione del problema;
• formulazione di un modello matematico;
• stesura di un algoritmo risolvente il modello stesso;
• esecuzione dell’algoritmo (in genere questo passo consiste nella traduzione dell’algoritmo stesso in un linguaggio di programmazione e nell’esecuzione del codice ottenuto);
• analisi e interpretazione dei risultati ottenuti.
Esempio 1.
• Definizione del problema
Si vuole calcolare la lunghezza di una arco della curva y = sin(x);
• formulazione di un modello matematico
Il modello `e rappresentato dall’integrale
Z πp
I=
1 + cos2 (x) dx;
0
• stesura di un algoritmo risolvente il modello stesso;
Nell’intervallo [0, π] si considerano i punti xj = 0 + jh, h = 0, 1, . . . , n, equidistanti
a passo h e il valore dell’integrale `e approssimato dal valore
I¯ = h
n−1
X
f (xk+1 ) + f (xk )
k=0
2
n−1
i
X
hh
f (xk ) ;
f (x0 ) + f (xn ) + 2
=
2
k=1
6
• esecuzione dell’algoritmo
traduzione dell’algoritmo in un linguaggio di programmazione ed esecuzione del
codice;
• analisi e interpretazione dei risultati ottenuti;
si controlla il risultato ottenuto e se ne analizza l’attendibilit`a. Ad esempio si pu`
o
¯
pensare di calcolare pi`
u valori di I per valori diversi di h, sempre pi`
u piccoli, e
confrontare i risultati ottenuti.
Lo studio completo di un metodo numerico, oltre ai passi descritti nel paragrafo precedente, deve comprendere uno studio teorico della convergenza. Tale studio `e connesso alla
definizione di “errore”.
3
Conoscenza numerica di numeri e funzioni
Scopo del Calcolo Numerico `e la conoscenza numerica di
numeri e funzioni.
Tale conoscenza si acquisisce attraverso
gli strumenti del calcolo numerico
• metodi numerici o algoritmi (software)
• mezzi di calcolo (hardware)
I due strumenti non sono indipendenti: spesso gli algoritmi sono in funzione dei mezzi di
calcolo.
Un metodo numerico `e un procedimento che, con un numero finito di operazioni elementari, fornisce teoricamente la soluzione esatta, o la soluzione approssimata con indicazione
della precisione, del problema.
Gli strumenti alla base di un metodo numerico sono
• formule ricorrenti;
• procedimenti di successive approssimazioni.
4. Formule ricorrenti
4
7
Formule ricorrenti
Una formula ricorrente `e un legame tra termini successivi di una particolare sequenza di
elementi (numeri, funzioni, polinomi, etc.), che consente il calcolo di quantit`a successive
in funzione di quantit`a precedentemente calcolate.
(
t0 assegnato
ricorrente a un passo
tk = f (tk−1 )
(
t0 , t1 , . . . , tp−1
assegnati
tk = f (tk−1 , tk−1 , . . . , tk−p )
k = p, p + 1, . . .
ricorrente a p passi
Esempio 2. Formula ricorrente ad un passo

a

a>0

 t0 = 2
a
1


tk−1 +
k = 1, 2, . . .
 tk =
2
tk−1
tk →
√ a
Esempio 3. Formula ricorrente a 2 passi (sequenza di Fibonacci)
(
F0 = F1 = 1
Fk = Fk−1 + Fk−2
k = 2, 3, . . .
Esempio 4. Somma di n numeri.
Si vuole calcolare la somma
S = a1 + a2 + . . . + an =
n
X
ai
i=1
ai ∈ R.
Si trasforma il problema in forma ricorrente, ponendo
S1 = a1
S2 = a1 + a2 = S1 + a1
..
.
Sk = (a1 + a2 + . . . + ak−1 ) + ak = Sk−1 + ak ,
k = 2, . . . , n
da cui si ricava
S = Sn ,
si calcola cio`e la somma S richiesta mediante la sequenza ricorrente ad un passo
S1 = a1
Sk = Sk−1 + ak k = 2, . . . , n
8
Se inoltre si pone S0 = 0, la sequenza diventa
S0 = 0
Sk = Sk−1 + ak
k = 1, . . . , n
L’algoritmo espresso dalla precedente formula ricorrente presenta il vantaggio di essere
facilmente programmabile
5
Procedimenti di successive approssimazioni
Un procedimento di successive approssimazioni consiste nel sostituire il problema originario con una sequenza di problemi approssimanti, facilmente e comunque risolvibili. In
sostanza il procedimento di successive approssimazioni `e l’analogo del passaggio al limite,
quando si lavora con variabile discreta anzich´e continua. L’enorme mole di calcoli coinvolta rende un procedimento di successive approssimazioni di fatto eseguibile solo con
opportuni mezzi di calcolo.
Esempio 5. Derivata di una funzione reale.
Sia y = f (x) una funzione derivabile in x. La sua derivata nel punto x `e data da
f (x + h) − f (x)
dy
= lim
.
h→0
dx
h
Si vuole ora trasformare questo calcolo in un procedimento di successive approssimazioni,
facendo uso cio`e di variabili discrete.
Si indica con hk una successione di incrementi (variabili discrete) e si calcolano i relativi
rapporti incrementali
(∆y)k
f (x + hk ) − f (x)
=
∆xk
hk
xk = x + hk .
(∆y)k
dy
sono successive approssimazioni della derivata
. Se f (x)
∆xk
dx
`e continua nell’intervallo che contiene x, per k sufficientemente grande si pu`o ritenere
(∆y)k
che
sia una “buona” approssimazione della derivata.
∆xk
Se hk+1 < hk , i termini
Esempio 6. Il metodo di Archimede per il calcolo di π (discusso in seguito).
6
Conoscenza numerica di numeri
Un numero `e conosciuto numericamente, se si dispone della sua scrittura decimale, ossia
della sua rappresentazione in base 10. Da questo punto di vista, potrebbero essere noti
6. Conoscenza numerica di numeri
9
solo i numeri razionali, per cui, in generale, ci si accontenta della conoscenza di un certo
numero di cifre decimali, con indicazione della precisione
e = 2.7183 ± 10−4 ,
π = 3.14 ± 10−2
ma, ricordando che π ≈ 3.14159265, sar`a anche vero
π = 3.142735 ± 10−2 .
Diremo quindi che un numero `e conosciuto numericamente se `e noto il numero di cifre
decimali esatte, supponendo di disporre di un procedimento che teoricamente consente di
calcolare un numero qualsiasi di cifre decimali con indicazione della precisione raggiunta
(nel secondo esempio sei cifre decimali con un errore sulla terza (10−2 )).
Esempi:
• Radici di equazioni o di sistemi di equazioni: data una funzione f , trovare x ∈ C
I
tale che f (x) = 0;
• Sistemi lineari: dati A ∈ IRn×n e b ∈ IRn trovare x ∈ IRn tale che Ax = b;
• Polinomi: dato x¯ ∈ IR calcolare P (¯
x) = a0 x¯n + a1 x¯n−1 + . . . + an ;
• Autovalori: trovare λ ∈ C
I per il quale esiste x ∈ IRn , x 6= 0, tale che Ax = λx,
n×n
A ∈ IR ;
1
1
• Successioni e serie: γ = lim 1 + + . . . + − log n ;
n→∞
2
n
α=
∞
X
(−1)n
n=0
1
;
(2n + 1)!
∞
X
1
;
β=
n2
n=1
• Integrali:
1
α1 =
Z
2.7
α2 =
Z
1.2
α3 =
Z
√
1 + x3 dx;
0
2
e−x dx;
1
ex sin 3xdx;
0.5
α4 =
Z Z
D
x2 + y 2 dxdy.
10
6.1
Il metodo di Archimede per il calcolo di π
Il simbolo π indica il rapporto costante tra la lunghezza della circonferenza e il suo diametro.
Uno dei primi risultati significativi sul calcolo effettivo di π `e dovuto ad Archimede. Egli
riusc`ı a dimostrare che
10
1
22
223
=3+
<π <3+ =
71
71
7
7
approssimando la lunghezza della circonferenza con il perimetro di poligoni regolari iscritti
e circoscritti.
Il perimetro di un poligono inscritto `e sempre minore della lunghezza della circonferenza
che a sua volta `e minore del perimetro del poligono circoscritto. Quindi se pi , pc , C indicano rispettivamente le misure dei perimetri del poligono inscritto, circoscritto e della
circonferenza si ha
pi < C < pc
C
, dove r `e la misura del raggio si trova la relazione
2r
pc
pi
<π<
= πc
πi =
2r
2r
cio`e πi `e un’approssimazione per difetto di π, cos`ı come πc lo `e per eccesso.
Naturalmente l’approssimazione sar`a tanto migliore, quanto pi`
u grande `e il numero dei
lati del poligono.
Il problema quindi si riconduce a calcolare il perimetro dei poligoni inscritti e circoscritti
al cerchio, in funzione del raggio.
Sostituendo nella formula π =
Teorema 1 Se ln indica il lato del poligono regolare di n lati inscritto in una circonferenza
di raggio 1 (per semplicit`a) il lato del poligono di 2n lati, l2n , `e dato da
q
p
l2n = 2 − 4 − ln2
(6.1)
Dimostrazione. In riferimento alla figura 1, dato AB = ln si vuole ricavare BH = l2n .
H
l
2n
A
B
C
l
n
1
O
Figura 1
Applicando il teorema di Pitagora al triangolo BHC
2
2
BH = BC + HC
2
⇒
2
l2n
2
ln
+ HC 2
=
2
6. Conoscenza numerica di numeri
11
D’altra parte
HC 2 = (OH − OC)2 = (1 − OC)2 = 1 + OC 2 − 2OC
2
ln
2
2
2
OC = AO − AC = 1 −
2
quindi
2
l2n
2
2
ln
ln
2
=
+ HC =
+ 1 + OC 2 − 2OC =
2
2
2
2
p
ln
ln
=
+1+1−
− 2OC = 2 − 2OC = 2 − 4 − ln2
2
2
da cui la tesi.
Il teorema 1, noto il lato di un qualsiasi poligono inscritto (poligono iniziale), consente di
calcolare il lato di tutti i poligoni inscritti, il cui numero dei lati `e multiplo, secondo una
potenza di 2, del numero di lati del poligono iniziale. Ad esempio, ricordando che il lato
dell’esagono inscritto in una circonferenza `e uguale al raggio della circonferenza stessa, si
ha (per semplicit`a di calcolo scegliamo di lavorare con la circonferenza di raggio 1)
l6
l12
l24
l48
=1
p
√
= 2− 3
q
p
√
= 2− 2+ 3
r
q
p
√
= 2 − 2 + 2 + 3.
Se π1,n `e l’approssimazione di π relativa al poligono inscritto di n lati si trova
π1,n =
nln
<π
2
Per calcolare il lato del poligono circoscritto vale il seguente
Teorema 2 Se ln indica il lato del poligono regolare di n lati inscritto in una circonferenza
di raggio 1, il lato Ln del poligono circoscritto di uguale numero di lati `e dato da
Ln = p
2ln
4 − ln2
(6.2)
Dimostrazione. In riferimento alla figura 2, dato AB = ln si vuole ricavare T V = Ln
(si considera sempre la circonferenza di raggio 1).
12
B
T
Ln
ln
H
A
O
V
C
Figura 2
Considerando il triangolo OAT si ha
AT · OA = AH · OT
da cui ponendo x = AT e ricordando che OA = 1
OT =
2x
x
AT · OA
=
.
=
ln
AH
ln
2
D’altra parte applicando ancora il teorema di Pitagora al triangolo OAH e osservando
ln
che AH = , si trova
2
s
2
ln
OH = 1 −
2
e quindi
2x
T H = OT − OH =
−
ln
s
2
ln
.
1−
2
In riferimento ora al triangolo rettangolo AT H
AT 2 = AH 2 + T H 2 ⇒ x2
da cui


s
2 2
2
2x
ln 
ln
+ − 1−
=
=
2
ln
2
s
2
ln2
4x
4x2
ln2
ln
−
= + 2 + 1−
1−
4
ln
4
ln
2
4
2x p
− 1 x2 −
4 − ln2 + 1 = 0
2
ln
ln
Moltiplicando per ln2 ambo i membri l’espressione diventa
p
2
p
2
2
2
2
2
4 − ln x − 2xln 4 − ln + ln = x 4 − ln − ln = 0
da cui
x= p
ln
,
4 − ln2
7. Conoscenza numerica di funzioni
13
ed essendo Ln = 2x la tesi
Ln = p
2ln
.
4 − ln2
Segue dal teorema 2 che, se π2,n `e l’approssimazione di π relativa al poligono circoscritto
di n lati, si ha
π < π2,n =
nLn
nln
=p
2
4 − ln2
Dalle espressioni ricavate per π1,n e π2,n si trova
π1,n =
nln
nln
= π2,n
<π< p
2
4 − ln2
Su tale relazione si pu`o costruire un algoritmo che calcola π, teoricamente con la precisione
voluta, ma in pratica dipendente dalla precisione di macchina e da problemi di instabilit`a
numerica.
7
Conoscenza numerica di funzioni
Diremo che una funzione `e conosciuta numericamente se `e noto, nel senso precisato
riguardo ai numeri, il valore che essa assume in ogni punto dell’insieme di definizione.
Esistono, nella pratica, tre situazioni familiari:
• funzione assegnata mediante una tavola o un algoritmo gi`a disponibile in macchina:
`e il caso delle funzioni ”elementari”, xα α ∈ IR, log x, sin x, cos x, . . .e in tal caso si
dir`a che si dispone di una pseudo-conoscenza esplicita;
• funzione assegnata mediante uno sviluppo in serie di funzioni elementari:
f (x) =
∞
X
an un (x)
n=0
(es. sviluppo in serie di Taylor se le derivate successive di f (x) sono funzioni elementari oppure sviluppi trigonometrici etc.) allora f (x) `e conosciuta numericamente se
`e noto un numero finito di f (x) = an (supponendo di poterne conoscere un numero
qualsiasi).
• funzione assegnata per punti: in tal caso per il calcolo della funzione in un punto
diverso da quelli noti si proceder`a per interpolazione.
14
Accanto a queste funzioni, che possono ritenersi pi`
u o meno note esplicitamente, esistono
numerosi esempi di funzioni assegnate implicitamente, il cui calcolo `e da analizzare:
funzioni speciali:
1
• funzione errore erf (x) = √
2π
Z
x
2
e−t dt;
0
• funzione Γ (x);
• funzioni di Bessel ;
• funzioni di Legendre, etc.;
equazioni differenziali;
equazioni a derivate parziali;
equazioni integrali;
problemi di minimizzazione.
7.1
Un metodo numerico per il calcolo di sin t (Algoritmo A)
Si vuole ora costruire un metodo numerico che dato l’angolo t, calcoli il valore approssimato di sin t. Tale metodo `e denominato algoritmo A per distinguerlo da un altro algoritmo, presentato in seguito, che risolve lo stesso problema e che sar`a indicato come
algoritmo T.
A
s
t
B
H
O
1
D
S
C
Figura 3
Si considera l’arco corrispondente all’angolo t, identificato anche con t; il metodo consiste
nel passare dalla corda s sottesa all’arco t, alla corda S sottesa all’arco 2t. In tal modo se
si immagina di dividere l’arco 2t in 2n parti uguali, con n sufficientemente grande, si pu`o
considerare la lunghezza dell’arco “uguale” alla lunghezza della corda. Usando questa
come corda di partenza si itera il procedimento “di raddoppio” fino a calcolare la corda
S, che risulta essere 2 sin t e che si ottiene esattamente dopo n “raddoppi”.
Dalla figura 3, applicando il teorema di Pitagora al triangolo BAD, si trova
√
√
AB = BD 2 − s2 = 4 − s2 ,
inoltre
√
2 areaABD = AD · AB = s 4 − s2
7. Conoscenza numerica di funzioni
15
(per semplicit`a di calcolo si considera una circonferenza di raggio 1). D’altra parte
2 areaABD = 2AH = 2 sin t = S,
quindi in definitiva
7.2
√
S = 2 sin t = s 4 − s2
Un metodo numerico per il calcolo di sin t (Algoritmo T)
Questo algoritmo (dovuto a Tolomeo) si basa su considerazioni analoghe al precedente,
solo che in questo caso si divide l’arco t in 3n parti uguali, e si passa dalla corda s sottesa
all’arco t, alla corda S sottesa all’arco 3t.
A
s
D
S
d
t
O
1
C
H
B
Figura 4
Si considera l’arco corrispondente all’angolo t, identificato anche con t; il metodo consiste
nel passare dalla corda s sottesa all’arco t, alla corda S sottesa all’arco 3t. In tal modo se
si immagina di dividere l’arco 3t in 3n parti uguali, con n sufficientemente grande, si pu`o
considerare la lunghezza dell’arco “uguale” alla lunghezza della corda. Usando questa
come corda di partenza si itera il procedimento “di triplicazione” fino a calcolare la corda
S, che risulta essere 2 sin t e che si ottiene esattamente dopo n “triplicazioni”.
L’algoritmo T si basa sul seguente
Teorema 3 (di Tolomeo) In un trapezio isoscele il prodotto delle diagonali `e pari alla
somma dei prodotti dei lati opposti.
In riferimento alla figura 4, il teorema di Tolomeo afferma che
d2 = s2 + sS.
Dimostrazione.
AB + DC
S+s
=
2
2
Applicando il teorema di Pitagora al triangolo AHC
2
S+s
2
2
2
2
d = AC = AH + HC =
+ HC 2,
2
AH =
Osservando che
HB =
S−s
AB − DC
=
2
2
16
e applicando il teorema di Pitagora al triangolo BHC
2
S−s
2
2
2
2
HC = BC − HB = s −
2
quindi
2
d =
S+s
2
2
+ HC
2
=
=
S+s
2
2
2
+s −
S−s
2
2
=
S 2 sS s2
S 2 sS s2
+
+
+ s2 −
+
−
4
2
4
4
2
4
cio`e in definitiva
d2 = s2 + sS
D’altra parte d risulta essere la corda sottesa all’arco 2s e quindi, ricordando l’algoritmo
A,
d 2 = s2 4 − s2 .
Uguagliando i due risultati si trova
s2 + sS = s2 4 − s2 .
cio`e
3s2 − s4
= 3s − s3
s
che `e la formula che permette di passare dalla corda s, sottesa all’arco t, alla corda S,
sottesa all’arco 3t.
S=
8
Teoria degli errori
La presenza di errori numerici dipende dall’uso dell’approssimazione per rappresentare
operazioni e quantit`a matematiche ”esatte“, e ci`o `e dovuto prevalentemente all’uso di
un’aritmetica finita, propria degli strumenti di calcolo.
Altre fonti di errore possono verificarsi a prescindere da quelli dovuti all’uso del calcolatore.
8.1
Sorgenti di errore
I risultati numerici possono essere influenzati da diversi tipi di errori
• Errori inerenti:
– errori nei dati iniziali: i dati iniziali di un problema sono generalmente il
risultato di misurazioni sperimentali. Essi possono essere dovuti alla sensibilit`a
dello strumento di misurazione o al verificarsi di eventi “imprevedibili” nel corso
della misurazione. Possono essere controllati sottoponenedo il modello a molti
test e verificando la sensibilit`a della soluzione rispetto a variazioni degli input;
8. Teoria degli errori
17
– semplificazioni introdotte nel modello: il modello di norma non rappresenta esattamente la situazione reale.
• Errori acquisiti:
– errori di troncamento: sono relativi al metodo di approssimazione usato e
generalmente corrispondono al troncamento di un procedimento di successive
approssimazioni. In ogni caso vanno analizzati relativamente ad ogni metodo
utilizzato;
– errori di arrotondamento: sono dovuti alla rappresentazione dei numeri in
macchina;
– errori di propagazione: sono dovuti alla rappresentazione dei numeri e
dipendono dall’accumulo degli errori di arrotondamento nel corso di un processo di calcolo.
8.2
Errore assoluto e errore relativo
Dati due numeri reali α e β, se β `e un’approssimazione di α, si definisce in prima istanza
come errore la quantit`a
E = |α − β| .
Tale definizione non `e per`o sufficiente a dare un’indicazione della bont`a dell’approssimazione
ricavata.
Infatti siano
a) α = 1986
b) α = 10
β = 1985
β=9
E = |α − β| = 1
E = |α − β| = 1.
In entrambi i casi l’errore vale 1, ma l’approssimazione nel secondo caso `e molto meno
accettabile che nel primo, (l’errore `e dello stesso ordine di grandezza dei dati).
Per avere una stima pi`
u significativa si rende necessaria una definizione di errore che tenga
conto del rapporto tra l’errore stesso e i dati in esame.
Definizione 1. Siano α, β ∈ IR e β ≈ α. Si definisce errore assoluto la quantit`a
Eα = |α − β| .
Si definisce invece errore relativo la quantit`a
REα =
|α − β|
|α|
o equivalentemente, poich´e in generale non `e noto |α| ed essendo β un’approssimazione
di α, quindi dello stesso ordine di grandezza,
REα =
|α − β|
.
|β|
18
Tali definizione hanno un valore puramente teorico essendo generalmente non noto il
valore esatto.
Negli esempi considerati per l’errore relativo si ottengono le quantit`a
a) RE = 1/1986 ' 5 ∗ 10−4
b) RE = 1/10 = 1 ∗ 10−1 .
Risulta ora chiaro che nel secondo caso l’errore relativo `e molto pi`
u grande che nel primo.
8.3
Errore di troncamento
L’errore di troncamento `e caratteristico del particolare metodo utilizzato, e dipende dal
troncamento di un processo infinito.
Esempio 7. Si vuole approssimare ex mediante il polinomio cubico
p3 (x) = 1 +
x
x2 x3
+
+ .
1! 2!
3!
Il calcolo esatto di ex richiede il calcolo di una serie infinita
x
e = p3 (x) +
∞
X
xk
k=4
k!
.
L’errore commesso `e dovuto al troncamento della serie infinita e pu`o essere ridotto aumentando il numero di termini coinvolti nell’approssimazione, ma mai annullato.
8.4
Numeri e calcoli in virgola mobile
La natura stessa dei numeri impone di operare con un numero finito di cifre. Al fine di
poter esprimere la precisione con la quale `e stato effettuato un calcolo, conviene fissare a
priori l’aritmetica finita, secondo cui operare.
A tal proposito si osserva che ogni numero decimale pu`o essere espresso nella forma
x = a · 10c
con |a| < 10.
354 = 3.54 · 102 ;
254.7 = 2.547 · 102 ;
50.78 = 5.078 · 10
0.0071 = 7.1 · 10−3.
Inoltre si pu`o scegliere opportunamente il valore di c in modo tale che risulti
10−1 =
1
≤ |a| < 100 = 1.
10
354 = 0.354 · 103 ;
−50.78 = −0.5078 · 102
0.0095 = 0.95 · 10−2 ;
−0.00295 = −0.295 · 10−2 .
(8.1)
8. Teoria degli errori
19
Tale operazione pu`o essere definita in un sistema di numerazione in base b qualsiasi.
Infatti, ogni numero pu`o essere espresso, in base b, sempre nella forma
x = a · bc
(8.2)
con |a| < b, e si pu`o fare in modo che b−1 ≤ |a| < 1.
Ci`o consente di dare la seguente definizione:
Definizione 2. Un numero espresso nella forma
x = a · 10c
o pi`
u in generale, nella forma
x = a · bc
con |a| < b, dicesi in virgola mobile (floating point).
Se inoltre b−1 ≤ |a| < 1 il numero dicesi in virgola mobile normalizzata; a si dice
mantissa e c caratteristica del numero dato.
Utilizzando la rappresentazione in virgola mobile, normalmente, si fissa a priori il numero,
m, di cifre della mantissa, ed il numero, n, di cifre per la caratteristica, cio`e
|a| = 0.α1 α2 . . . αm
0 ≤ αi ≤ 9,
c
k ∈ {1, . . . , n} .
= β1 . . . βk
α1 6= 0,
in base b = 10
Fissati i numeri m ed n, cio`e il numero di cifre della mantissa e della caratteristica, e quindi
rappresentando i numeri in virgola mobile, si fissa l’aritmetica finita in cui operare.
Lavorando in aritmetica finita sorge il seguente problema. Sia, ad esempio, m = 4, cio`e 4
cifre di mantissa, si eseguono i seguenti calcoli (nel sistema decimale)
a) x = 0.4326 · 103 , y = 0.5129 · 102 ,
b) x = 0.6123 · 104 , y = 0.5243 · 104 ,
z =x·y
= 0.22188054 · 105
z = x + y = 0.11366 · 105 .
In entrambi i casi il risultato contiene pi`
u di quattro cifre di mantissa. Qual `e allora il
risultato nell’aritmetica finita considerata (m = 4 cifre di mantissa)? La risposta sar`a
data nel prossimo paragrafo.
8.5
Errore di arrotondamento
Nei calcolatori digitali i numeri sono rappresentati in virgola mobile normalizzata con
un numero fissato di cifre per la mantissa e la caratteristica; ne segue che l’insieme dei
numeri rappresentabili esattamente in una macchina calcolatrice `e finito. Tale insieme
sar`a indicato con A.
Se un numero reale x non appartiene ad A, occorrer`a considerare un valore che sar`a
indicato con f l (x), tale f l (x) ≈ x e f l (x) ∈ A.
20
Si suppone di disporre di una macchina con m cifre di mantissa e c di caratteristica. Sia
x ∈ IR e x ∈
/ A (x ha un espressione decimale con pi`
u di m cifre di mantissa). x pu`o
essere scritto come
x = a · bt ,
b−1 < |a| < 1
e
a = ±0.α1 α2 . . . αm αm+1 . . .
0 ≤ αi ≤ b − 1, ∀i e α1 6= 0.
Sia a0 definito da


 ±0.α1 α2 . . . αm
b
0 < αm+1 ≤ b c − 1
2
a0 =
b

 ±0.α1 α2 . . . αm + b−m
αm+1 ≥ b c
2
cio`e si considerano solo le prime m cifre del numero con la m-esima inalterata o aumentata
di 1, a seconda del valore della m + 1-esima.
Ad esempio, in base b = 10, l’m-esima cifra di mantissa αm rimane inalterata se αm+1 < 5
ed `e aumentata di 1 se αm+1 ≥ 5.
Se si pone
`e evidente che f l (x) ∈ A.
f l (x) = a0 · bt
Esempio 8. Supponendo di lavorare in virgola mobile con 4 cifre di mantissa
x1 = 0.789435
f l (x1 ) = 0.7894
x2 = 4.59431 · 102
f l (x2 ) = 0.4594 · 103
x3 = 0.968781
f l (x3 ) = 0.9688
x4 = 86943.8
f l (x4 ) = 0.8694 · 105
L’errore che si commette sostituendo al valore esatto x, il valore “arrotondato” ad m cifre
di mantissa, f l (x), `e detto errore di arrotondamento
Ricordando la definizione di errore relativo si verifica che
b
b
x − f l (x) b c b−(m+1)
b c b−(m+1)
b
≤ 2 −1
= b c b−m
< 2
x
|a|
b
2
Se si pone ν = b 2b c b−m , si ottiene
f l (x) = x (1 + ε) ,
con
|ε| < ν.
Il numero ν `e detto precisione di macchina e nel sistema decimale vale 5 · 10−m .
In base 10 quindi l’arrotondamento induce un errore relativo per il quale vale la maggiorazione
x − f l (x) (m cifre di mantissa)
(8.3)
≤ 5 · 10−m
REx = x
In alcuni casi casi, pu`o verificarsi che anche dopo l’arrotondamento f l (x) ∈
/ A.
8. Teoria degli errori
21
Esempio 9. Dato x = 0.999998 · 1099 (base decimale), si vuole determinare f l (x) in
un’aritmetica finita con 5 cifre di mantissa e 2 di caratteristica.
x = 0.999998 · 1099
=⇒
f l (x) = 0.10000 · 10100 ∈
/ A.
f l (x) ∈
/ A, essendo espresso con 3 cifre di caratteristica.
In questi casi si ha un fenomeno di sovraesponenziazione detto (overflow). In modo
analogo si possono avere casi di sottoesponenziazione (underflow)
Sull’insieme dei numeri macchina, sottoinsieme dei numeri reali, si devono ridefinire le
operazioni aritmetiche, infatti anche se gli operandi sono numeri macchina il risultato
pu`o non esserlo.
Definiamo le quattro operazioni elementari macchina
x ⊕ y = f l (x + y) ,
x y = f l (x − y) ,
x ⊗ y = f l (x ∗ y) ,
x y = f l (x/y) .
dove f l indica l’arrotondamento floating-point.
` importante osservare che
E
Osservazione 1. Per le operazioni in aritmetica finita (virgola mobile e numero di cifre
fissato per la mantissa e la caratteristica) gran parte delle propriet`a dell’aritmetica nel
campo reale, ad esempio la propriet`a associativa o distributiva, possono non essere pi`
u
valide.
Esempio 10. Eseguendo i calcoli in virgola mobile non valgono le consuete leggi associative della somma e del prodotto
(a + b) + c =
6
a + (b + c)
a · (b · c)
6
=
(a · b) · c.
Dati a = 17.6, b = 3.81, c = 2.736, si vuole calcolare
s =a+b+c
con tre cifre di mantissa.
e
z = a·b·c
22
a + b = 17.6 + 3.81 = 21.41 ≈ 0.214 · 102
s = (a + b) + c = 0.214 · 102 + 0.274 · 10 ≈ 0.241 · 102
b + c = 3.81 + 2.736 = 6.546 ≈ 0.655 · 10
s = a + (b + c) = 17.6 + 6.55 = 24.15 ≈ 0.242 · 102 .
s = 0.241 · 102 6= 0.242 · 102 = s.
a · b = 17.6 · 3.81 ≈ 0.671 · 102
z = (a · b) · c = 67.1 · 2.736 ≈ 0.184 · 103
b · c = 3.81 · 2.736 ≈ 0.104 · 102
z = a · (b · c) = 17.6 · 10.4 ≈ 0.183 · 103 .
z = 0.184 · 103 6= 0.183 · 103 = z.
8.6
Errore di propagazione
L’errore di propagazione `e il pi`
u pericoloso, esso `e generato dal “propagarsi” di errori
esistenti quando il dato `e coinvolto in ulteriori operazioni.
Se un errore sui dati iniziali tende a crescere quando il metodo procede, anche di fronte
alla convergenza teorica del metodo, il risultato finale sar`a del tutto inattendibile.
Quando un metodo tende ad amplificare gli errori, esso `e detto instabile, di contro ad
un metodo stabile che mantiene costante il limite dell’errore nel corso dell’esecuzione.
Si suppone di dover eseguire un calcolo i cui dati di partenza siano affetti da errori inerenti
o acquisiti e si analizzano gli effetti di tali errori nel calcolo successivo.
Innanzi tutto si esamina il caso delle quattro operazioni elementari: addizione, sottrazione, moltiplicazione, divisione.
A tale proposito, siano x e y due numeri reali e x1 , y1 le relative approssimazioni e si
suppone, inizialmente, che le operazioni +,−,·,/ si effettuino senza arrotondamento.
Dopo le operazioni, per l’errore assoluto si ha
8. Teoria degli errori
23
Addizione
Ex+y = (x + y) − (x1 + y1 ) = (x − x1 ) + (y − y1 ) = Ex + Ey
Sottrazione
Ex−y = (x − y) − (x1 − y1 ) = (x − x1 ) − (y − y1 ) = Ex − Ey
Moltiplicazione
Exy = xy − x1 y1 = (x1 + Ex )(y1 + Ey ) − x1 y1 =
= x1 y1 + Ex y1 + Ey x1 + Ex Ey − x1 y1 ∼
= Ex y1 + Ey x1
dove, essendo Ex e Ey quantit`a molto piccole, si suppone che il loro prodotto sia trascurabile rispetto alle quantit`a stesse
Divisione
Ex/y =
xy1 − yx1
(x1 + Ex ) y1 − (y1 + Ey ) x1
x x1
−
=
=
=
y
y1
yy1
(y1 + Ey ) y1
x1 y1 + Ex y1 − x1 y1 − x1 Ey ∼ Ex y1 − Ey x1
Ey
1
se
=
2
Ey
y1
y1
2
y1 1 +
y1
Molto spesso, per`o, dopo l’operazione il risultato dovr`a essere arrotondato. Basta pensare
che lavorando con m cifre di mantissa, il numero di cifre del prodotto di due numeri `e
compreso tra 2m − 1 e 2m, e analogamente per le altre operazioni. Pertanto, le
formule precedenti devono essere modificate con l’aggiunta di un termine che esprima
l’errore di arrotondamento nell’operazione effettuata. Se si indica con α, σ, β, δ gli errori
di arrotondamento rispettivamente per le operazioni +,−,·,/ si ottengono le formule
=
Addizione
Ex+y =
Ex + Ey + α
Sottrazione
Ex−y =
Ex − Ey + σ
Moltiplicazione
Exy
=
Ex y1 + Ey x1 + β
Divisione
Ex/y
=
1
[Ex y1 − Ey x1 ] + δ.
y12
` utile osservare che l’errore di arrotondamento non dipende dalla particolare operazione,
E
nel senso che l’arrotondamento deve essere effettuato indipendentemente da come `e stato
ottenuto il numero.
Poich´e l’errore relativo `e spesso pi`
u significativo dell’errore assoluto, occorre determinarne
le formule per le quattro operazioni.
Usando la relazione
REx⊕y =
Ex⊕y
x1 ⊕ y1
ove ⊕ indica una qualsiasi delle quattro operazioni, che lega l’errore assoluto all’errore
24
relativo, si possono facilmente scrivere le formule per l’errore relativo.
(1)
(2)
REx+y = REx
REx−y = REx
RExy
(3)
(4)
(5)
(6)
y1
x1
+ REy
+
x1 + y1
x1 + y1
x1
−y1
+ REy
+
x1 − y1
x1 − y1
α
addizione
σ
sottrazione
= REx
1
+ REy
1
+
β
moltiplicazione
REx/y = REx
1
+ REy
(−1)
+
δ
divisione
N
O
N
O
R
Le colonne (2), (3), (4), (5), (6), sono state indicate con le lettere N,O,N,O,R per indicare
Numero, Operazione, Numero, Operazione, Rounding (arrotondamento).
• La colonna (1) contiene l’errore nell’operazione x ⊕ y;
• le colonne (2) e (4) contengono, rispettivamente l’errore relativo su x e su y;
• le colonna (3) e (5) contengono i termini che si riferiscono all’operazione che si sta
compiendo (indici di condizionamento);
• la colonna (6) contiene l’errore di arrotondamento relativo all’operazione x ⊕ y.
Osservando le colonne (3) e (5) si constata che nell’addizione, nella moltiplicazione e nella
divisione il fattore moltiplicativo (detto anche indice di condizionamento) non supera in
modulo l’unit`a. Quindi gli errori relativi su x e y non sono amplificati nell’operazione.
Ci`o non avviene nella sottrazione, in cui almeno uno dei fattori `e, in modulo, maggiore
di 1. Conseguentemente, uno degli errori relativi sar`a aumentato dall’operazione. Tale
aumento `e tanto maggiore quanto pi`
u x `e vicino ad y.
Esempio 11. Dati x = 0.5628 · 104 e y = 0.5631 · 104 , si vuole calcolare z = x − y con
quattro cifre di mantissa e dare anche un limite per l’errore relativo RE.
La soluzione `e
z = −0.0003 · 104
Da
REz =
passando al valore assoluto si ha
|REz | ≤ |
x
y
REx −
REy ,
x−y
x−y
y
x
||REx | + |
||REy |.
x−y
x−y
Supponendo x e y arrotondati a cinque cifre di mantissa, cio`e,
(8.4)
8. Teoria degli errori
25
REx ≤ 0.5 · 10−4 = 0.005%
REy ≤ 0.5 · 10−4 = 0.005%
e sostituendo nella (8.4) si trova
5628 + 5631
≤ 5 · 10−5 · 4 · 103 = 0.2 = 20%.
REz ≤ 5 · 10−5
3
Quindi anche se x e y hanno limiti dell’errore relativo molto piccoli, il risultato z = x − y
pu`o avere un limite dell’errore relativo molto grande.
Conseguentemente supponendo di proseguire i calcoli moltiplicando z per 0.7259 · 104 , si
ottiene come risultato 0.21777 · 105 che sembra avere cinque cifre di precisione; in realt`
a
solo due sono significative, come si pu`o vedere effettuando con cinque cifre di mantissa il
calcolo
x · 0.7259 · 104 − y · 0.7259 · 104 .
Per stimare l’andamento dell’errore di propagazione in una generica operazione si considera un problema tipo definito da y = ϕ(x), con


ϕ1 (x1 , . . . , xn )


..
1
n
ϕ : D → Rm , ϕ(x) = 
 , ϕ ∈ C (D), D ∈ R .
.
ϕm (x1 , . . . , xn )
Se x˜ ≈ x, cio`e x˜ `e un’approssimazione di x, si definiscono
y˜ = ϕ(˜
x)
soluzione sui dati approssimati
∆xi = x˜i − xi , ∆yi = y˜i − yi
errore assoluto su ciascuna componente
δxi =
errore relativo per ciascuna componente.
x˜i − xi
y˜i − yi
, δyi =
xi
yi
Sviluppando in serie con arresto ai termini del primo ordine si trova l’espressione dell’errore
assoluto su ciascuna componente della soluzione
n
X
n
∂ϕi (x) X ∂ϕi (x)
∆yi = y˜i − yi = ϕi (˜
x) − ϕ(x) ≈
(˜
xj − xj )
=
∆xj .
∂xj
∂xj
j=1
j=1
∂ϕi (x)
indicano come l’errore sulla componente xj del dato si amplifica sulla
∂xj
componenete yi del risultato.
Se yi 6= 0, i = 1, . . . , m e xj 6= 0, i = 1, . . . , n, le quantit`a
Le quantit`a
δyi ≈
n
X
xj ∂ϕi (x)
δxj .
ϕ
(x)
∂x
i
j
j=1
26
rappresentano gli errori relativi su ciascuna componente della soluzione.
I fattori moltiplicativi presenti nella formula sono detti indici di condizionamento del
problema.
Se l’indice di condizionamento risulta, in modulo, < 1, l’errore sull’operando non viene
amplificato.
Nel caso delle quattro operazioni aritmetiche, gli indici di condizionamento sono sempre
< 1, tranne che nella sottrazione.
Questo fenomeno `e noto come cancellazione numerica, esso rende di fatto la sottrazione l’operazione numericamente pi`
u instabile, cio`e pi`
u pericolosa relativamente alla
propagazione dell’errore.
Nella realizzazione di un algoritmo `e necessario evitare la sottrazione di numeri quasi
uguali, riscrivendo quando possibile le espressioni in una forma, matematicamente equivalente, che non contiene operazioni di tale tipo; ad esempio, espressioni del tipo a(b − c)
o (a − b)/c possono essere scritte rispettivamente come ab − ac e a/c − b/c, se b ≈ c e
a≈b.
8.7
Propagazione degli errori in semplici espressioni aritmetiche
Si analizza, ora, attraverso degli esempi, la propagazione degli errori in semplici espressioni
aritmetiche applicando i risultati del paragrafo precedente.
Esempio 12. Si vuole calcolare la somma dei numeri reali a0 , a1 , a2 , a3 che hanno errori
relativi RE0 , RE1 , RE2 , RE3 . L’errore di arrotondamento nella k−esima somma verr`
a
indicato con αk . Si calcola la somma richiesta, S, facendo uso dell’espressione seguente
S = {[(a0 + a1 ) + a2 ] + a3 }
Per ottenere l’espressione dell’errore relativo in S, si applica lo schema NONOR, visto
nel paragrafo precedente, iniziando dalle parentesi pi`
u interne.
REs =
RE0
|
a0
a1
+ RE1
+ α1
a0 + a1
a0 + a1
N
O
·
|N
{z N
O
R }
a0 + a1
a2
·
+ RE2
+ α2 ·
a0 + a1 + a2
a0 + a1 + a2
O
{z
N
O
N
a0 + a1 + a2
a3
+ RE3
+ α3
a0 + a1 + a2 + a3
a0 + a1 + a2 + a3
O
N
O
R }
R
Questa espressione pu`o assumere un aspetto pi`
u semplice usando le somme parziali
S1 = a0 + a1 ,
Infatti
S2 = a0 + a1 + a2 ,
S3 = a0 + a1 + a2 + a3 .
8. Teoria degli errori
REs =
27
RE0 a0 + RE1 a1 + α1 S1
S1
S1 RE2 a2 + α2 S2 S2 RE3 a3 + α3 S3
+
+
S2
S2
S3
S3
Per calcolare l’errore assoluto, tenendo conto che Es = S · REs e che S3 = S, si ottiene
Es = RE0 a0 + RE1 a1 + α1 S1 + RE2 a2 + α2 S2 + RE3 a3 + α3 S3 =
=
3
X
REk ak +
3
X
αk Sk
(8.5)
k=1
k=0
Se |REk | < k · 10−m con k ≥ 5 e |αk | ≤ 5 · 10−m , dalla (8.5)
!
3
3
X
X
|Es | ≤ k
|ak | +
|Sk | 10−m
k=0
k=1
Generalizzando questo risultato si pu`o affermare che l’errore che si commette calcolando
n
X
la somma S =
ak con errori relativi REk nel termine ak ed errore di arrotondamento
k=0
αk nella k−esima addizione `e espresso da
Es =
n
X
k=0
REk ak +
n
X
αk Sk
k=1
ove Sk = a0 + a1 + · · · + ak .
Tale errore soddisfa certamente la relazione seguente
|Es | ≤
n
X
k=0
|REk ||ak | +
n
X
k=1
|αk ||Sk |
(8.6)
Siano i numeri ak tutti dello stesso segno e siano ordinati in uno dei seguenti modi
(1) |a0 | ≤ |a1 | ≤ |a2 | ≤ · · · ≤ |an |
(2) |a0 | ≥ |a1 | ≥ |a2 | ≥ · · · ≥ |an |,
allora le somme parziali Sk , in modulo, sono pi`
u piccole per il primo ordinamento rispetto
al secondo; conseguentemente anche il limite (8.6) `e pi`
u piccolo per il primo ordinamento.
Per questa ragione, dovendo sommare una sequenza di numeri di grandezza variabile (ma
dello stesso segno) conviene sommarli in ordine di grandezza dal pi`
u piccolo al pi`
u grande.
Esempio 13. Siano a0 , a1 , a2 i coefficienti del polinomio
P2 (x) = a0 x2 + a1 x + a2 .
Se RE0 , RE1 , RE2 , REx , sono rispettivamente gli errori relativi in a0 , a1 , a2 , x,si vuole
calcolare l’espressione dell’errore per P2 (x).
28
Il polinomio P2 (x) pu`o essere scritto nella forma
P2 (x) = {[a0 x + a1 ]x + a2 }
(8.7)
Se con αk e µk si indicano rispettivamente gli errori relativi di arrotondamento nella
k−esima addizione e moltiplicazione, l’espressione dell’errore per la (8.7) secondo lo
schema NONOR `e
a1
a0 x
+ RE1
+ α1 ) · 1+
REP =
((RE0 · 1 + REx · 1 + µ1 ) ·
a0 x + a1
a0 x + a1
(a0 x + a1 )x
a2
+REx · 1 + µ2 ]
+ RE2
+ α2 } .
P2 (x)
P2 (x)
Eseguendo i calcoli si trova
(RE0 + REx + µ1 )a0 x + RE1 a1 + (α1 + REx + µ2 )(a0 x + a1 )
·
a0 x + a1
(a0 x + a1 )x RE2 a2 + α2 P2 (x)
·
+
P2 (x)
P2 (x)
REP =
e quindi moltiplicando per P2 (x) e raccogliendo i termini simili
EP = a0 x2 (RE0 + REx + µ1 + α1 + REx + µ2 + α2 ) + a1 x(RE1 + α1 + REx + µ2 + α2 )+
+a2 (RE2 + α2 ) .
Se |REk |, |αk | e |µk | sono limitati da 5 · 10−m si ottiene il limite
|EP | ≤ 7|a0 x2 | + 5|a1 x| + 2|a2 | · 5 · 10−m .
(8.8)
Si nota che il limite (8.8) `e tanto pi`
u piccolo quanto pi`
u piccolo `e |x|.
9
Condizionamento e stabilit`
a
Dato un problema, per quanto riguarda la propagazione degli errori si pu`o distinguere in:
• comportamento del problema;
• comportamento dell’algoritmo risolvente.
Nel primo caso, nell’ipotesi di essere in grado di risolvere esattamente il problema, si
studia come eventali perturbazioni nei dati iniziali si ripercuotono sui risultati.
La caratterizzazione di un problema rispetto ad un tipo di comportamento `e indicata con
il termine condizionamento; in particolare parleremo di problema bencondizionato se
le perturbazioni sui dati non influenzano significativamente i risultati, malcondizionato
altrimenti.
Per caratterizzare il comportamento di un algoritmo invece si usa il termine stabilit`
a; un
algoritmo sar`a detto stabile se la successione delle operazioni non amplifica eccessivamente
gli errori di arrotondamento, instabile altrimenti.
La distinzione tra condizionamento e stabilit`a `e fondamentale:
9. Condizionamento e stabilit`a
29
• per un problema bencondizionato `e possibile in generale costruire algoritmi stabili;
• la stabilit`a di un algoritmo `e inutile in presenza di un problema malcondizionato.
Esempio 14. Un tipico problema malcondizionato `e il calcolo delle radici di un polinomio. Dato il polinomio di grado n
Pn (x) = xn + a1 xn−1 + . . . + an−1 x + an ,
se z `e una radice di Pn , si ha
Pn (z) = z n + a1 z n−1 + . . . + an−1 z + an = 0
Considerando il primo membro come funzione dei coefficienti ai , si pu`o scrivere
Pn (z) = f (a1 , a2 , . . . , an ) .
In corrispondenza di una variazione dei coefficienti ∆ai , i = 1, 2, . . . , n si avr`a
!
n
X
∂f ∂z
∂z
∂f
∆ai +
∆a1 + . . . +
∆an
∆f ≈
∂ai
∂z ∂a1
∂an
i=1
in cui i coefficienti sono stimati nel punto a = a1 + ∆a1 , . . . , an + ∆an .
Indicando con
∂z
∂z
∆z =
∆a1 + . . . +
∆an
∂a1
∂an
la variazione complessiva della radice, prodotta dall’alterazione dei coefficienti, soddisfa
la relazione
n
X
∂f
∆z = 0
z n−i ∆ai +
∂z
i=1
Se si varia un solo coefficiente, ad esempio il k−esimo, di una quantit`a ∆ak , si ha una
variazione sulle radici di
∆z
∆ak
=A
z
ak
con
A=−
ak z n−k
∂f
z
∂z
Il coefficiente A pu`o essere grande se, ad esempio,
• z `e grande;
∂f
∂f
`e piccolo, come nel caso di radici “vicine” (
= 0 nel caso di radici multiple).
∂z
∂z
Nel caso in cui A `e grande, a piccole variazioni di un solo coefficiente possono corrispondere grandi variazioni delle radici.
•
Definizione 3. Un procedimento numerico, o algoritmo, si dice numericamente stabile
quando, al crescere del numero dei passi, l’errore si mantiene limitato. Se questo non
succede l’algoritmo si dir`a (numericamente) instabile
30
L’instabilit`a numerica `e una caratteristica dell’algoritmo: per la soluzione dello stesso
problema possono esistere procedimenti stabili ed altri instabili.
Esempio 15. Gli integrali
In =
Z
1
xn ex dx,
n = 0, 1, . . .
0
possono essere calcolati tramite la formula ricorrente

 I0 = e − 1
e

In = 1 − nIn−1 ,
(9.1)
n = 1, 2, . . .
Indicando con Ik il valore esatto, con Ik0 il valore calcolato e con ek = Ik0 − Ik il corrispondente errore, si ha


I00 = I0 + e0




 I 0 = 1 − I 0 = 1 − (I0 + e0 ) = I1 − e0
1
0
 I 0 = 1 − 2I 0 = 1 − 2I1 + 2e0 = I2 + 2e0

2
1



 ...
quindi e1 = −e0 , e2 = 2e0 , e3 = −3!e0 , e in generale
en = (−1)n n!e0 ,
n > 0.
Il fattoriale cresce molto rapidamente, perci`o, anche se e0 `e piccolo, l’errore aumenta
rapidamente al crescere di n, lim |en | = +∞ e lo schema risulta instabile.
n→∞
Non `e detto per`o che per questo si debba rinunciare a calcolare il valore dell’integrale con
un formula ricorrente! Osservando che lim In = 0, si pu`o porre
n→∞
IN0 = 0,
commettendo un errore e0N , per N abbastanza grande, ad esempio N = 10 o N = 15, e
ricavare lo schema seguente
 0
 IN = 0
0
1 − Im+1
0
 Im
=
,
m = N, N − 1, . . . , 1
m+1
Per l’errore, con le stesse convenzioni di prima, si ha Ik0 = Ik + eN .
Poich´e
1 − (IN + eN )
1 − IN
eN
1 − IN0
=
=
−
,
IN0 −1 =
N
N
N
N
10. Precisione di macchina
eN
= IN0 − IN
eN −1 = IN0 −1 − IN −1 =
eN
eN −2 =
N (N − 1)
..
.
31
1 − IN
eN
−
− IN −1
N
N
= −IN
eN
=
,
N
(cfr. (9.1))
In questo caso l’errore viene rapidamente abbattuto e lo schema risulta stabile. Se il valore
ottenuto per I0 `e sufficientemente accurato, tutti i valori precedenti vengono accettati,
altrimenti si ricomincia ponendo IN0 0 = 0, con N 0 > N.
10
Precisione di macchina
Quando si lavora in aritmetica finita `e importante sapere qual `e la pi`
u piccola differenza
tra due numeri che la macchina `e in grado di riconoscere, o qual `e il pi`
u piccolo numero
considerato diverso da zero.
Tale quantit`a `e detta ε macchina o precisione di macchina. Esso fornisce una misura
precisa di quante cifre significative sono possibili nella rappresentazione floating-point di
un numero.
L’ε macchina varia da calcolatore a calcolatore, cio`e dipende dall’aritmetica finita che
ciascuna macchina usa.
11
Analisi di un metodo numerico: convergenza, errore di troncamento e di arrotondamento
Lo studio completo di un metodo numerico, oltre alla descrizione ed eventuale codifica
dell’algoritmo, necessita, se basato su un procedimento di successive approssimazioni, di
una accurata analisi del comportamento. In particolare si devono realizzare:
a) analisi della convergenza teorica;
b) analisi della convergenza numerica;
c) analisi dell’errore (detto di troncamento, perch´e si riferisce al troncamento di un
processo di successive approssimazioni). Tale analisi si articola nei seguenti passi
fondamentali:
c1) ordine dell’errore;
c2) maggiorazione dell’errore;
c3) sviluppo asintotico dell’errore.
32
Esempio 16. (Calcolo numerico di π, algoritmo di Archimede)
Nel caso dell’algoritmo di Archimede per il calcolo approssimato di π, una prima analisi
superficiale consente di ottenere facilmente la maggiorazione:
p
nln (2 − 4 − ln2 )
p
.
π − π1,n < π2,n − π1,n =
2 4 − ln2
Un’analisi pi`
u accurata coinvolge tutti gli aspetti legati alla convergenza, alla stabilit`a e
alla stima dell’errore.
a) convergenza teorica
` stato gi`a verificato “geometricamente” che
E
lim π1,n = lim π2,n = π
n→∞
n→∞
osservando che per n → ∞ il perimetro dei poligoni inscritti e circoscritti ad una
circonferenza tende alla lunghezza della circonferenza stessa.
B
α
ln
A
α
1
β
O
Figura 10
Per uno studio analitico della convergenza si considera il triangolo isoscele AOB in
figura 10, costruito su ln , lato del poligono inscritto di n lati (si considera sempre
una circonferenza di raggio 1).
Applicando il teorema dei seni al triangolo AOB si trova
OA
1
ln
=
=
sin β
sin α
sin α
=⇒
ln =
sin β
.
sin α
Essendo ln il lato di un poligono regolare, vale
β=
2π
n
da cui
e
2π
n
2α = π − β
π π
−
2 n
π
− α = cos α
e quindi, ricordando che sin 2α = 2 sin α cos α e sin
2
2α = π −
=⇒
α=
11. Analisi di un metodo numerico
33
π
π
2π
2 sin cos
sin
sin β
n
n = 2 sin π .
π n π =
ln =
=
π
sin α
n
cos
−
sin
n
2 n
In definitiva si ottiene
ln = 2 sin
π
n
=⇒
π1,n =
nln
π
= n sin .
2
n
Facendo uso dello sviluppo in serie di Mc-Laurin (sviluppo di Taylor di punto iniziale
x0 = 0) per la funzione sin x, si trova
sin x = sin 0 + x sin0 0 +
x3
x2
sin00 0 +
sin000 0 + . . . =
2!
3!
∞
X
x2k+1
x3 x5 x7
+
−
+ ... =
(−1)k
= x−
3!
5!
7!
(2k + 1)!
k=0
quindi
π1,n
!
nln
π
1 π 3 1 π 5
1 π 7
π
=
= n sin = n
−
+
−
+ ...
2
n
n 3! n
5! n
7! n
e
lim π1,n = lim
n→∞
n→∞
1 π5
1 π7
1 π3
+
−
+ ...
π−
3! n2 5! n4 7! n6
!
=π
cio`e
lim π1,n = π
n→∞
che garantisce la convergenza teorica del metodo di Archimede.
b) convergenza numerica
Il metodo di Archimede per il calcolo di π presenta problemi di convergenza numerica,
infatti calcolando π1,n dalla (6.1) con sedici cifre decimali si hanno i risultati di
tabella 1.
34
π1,n
π1,6
π1,12
π1,1536
π1,3072
π1,6144
π1,12288
π1,24576
π1,49152
π1,98304
π1,196608
π1,393216
π1,786432
π1,1572864
π1,3145728
π1,6291456
π1,12582912
π1,25165824
π1,50331648
π1,100663296
π1,201326592
π1,402653184
π1,805306368
π1,1610612736
π1,3221225472
π1,6442450944
π1,12884901888
doppia precisione (16 cifre)
3.(000000000000000)
3.1(05828541230248)
3.14159(0463228050)
3.141592(105999243)
3.141592(516692049)
3.1415926(19365120)
3.1415926(45032004)
3.14159265(1438954)
3.141592653(033526)
3.141592653(325343)
3.141592653(325343)
3.141592653(325343)
3.1415926(45321215)
3.1415926(45321215)
3.1415926(45321215)
3.141592(303811737)
3.1415(89571734577)
3.1415(75911313137)
3.1415(43126059329)
3.141(324548956220)
3.14(0974793953303)
3.1(37475099502783)
3.1(26249750099949)
3.(092329219213245)
3.(000000000000000)
(0.000000000000000)
Tabella 1.Calcolo di π1,n con l2n =
q
2−
p
4 − ln2
Si constata facilmente che a partire da un certo n in poi π1,n si discosta anzich`e
avvicinarsi a π.
Per analizzare tale fenomeno bisogna studiare l’errore di arrotondamento, dalla cui
propagazione dipende la convergenza numerica del metodo. Infatti anche se teoricamente un metodo converge, a causa della propagazione dell’errore di arrotondamento
si possono avere risultati falsati, come visto in tabella 1.
Non sempre `e possibile arginare gli effetti di tale fenomeno, in alcuni casi basta
modificare opportunamente l’algoritmo sostituendo operazioni computazionalmente
“pericolose” con operazioni matematicamente equivalenti ma pi`
u “stabili”.
Per quanto riguarda il metodo di Archimede, si osserva che le due formule
l2n
q
p
= 2 − 4 − ln2 ,
l2n = q
2+
ln
p
(11.1)
4 − ln2
sono matematicamente equivalenti (la prima si ottiene dalla seconda per razionalizzazione) ma utilizzando la seconda al posto della prima nel calcolo di π1,n o (π2,n ) si
11. Analisi di un metodo numerico
35
ottengono i risultati di tabella 2, da cui non risulta l’effetto devastante dell’errore di
arrotondamento. Si pu`o osservare facilmente che per n → ∞, ln → 0 e nella prima
delle 11.1 si genera un problema di cancellazione numerica.
doppia precisione (16 cifre)
3.(000000000000000)
3.1(05828541230248)
3.14159(0463228049)
3.141592(105999271)
3.141592(516692156)
3.1415926(19365383)
3.1415926(45033690)
3.14159265(1450767)
3.141592653(055036)
3.141592653(456103)
3.1415926535(56371)
3.14159265358(1437)
3.14159265358(7704)
3.141592653589(271)
3.141592653589(663)
3.1415926535897(61)
3.1415926535897(85)
3.14159265358979(1)
3.141592653589793
3.141592653589793
3.141592653589793
3.141592653589793
3.141592653589793
3.141592653589793
3.141592653589793
3.141592653589793
π1,n
π1,6
π1,12
π1,1536
π1,3072
π1,6144
π1,12288
π1,24576
π1,49152
π1,98304
π1,196608
π1,393216
π1,786432
π1,1572864
π1,3145728
π1,6291456
π1,12582912
π1,25165824
π1,50331648
π1,100663296
π1,201326592
π1,402653184
π1,805306368
π1,1610612736
π1,3221225472
π1,6442450944
π1,12884901888
ln
Tabella 2. Calcolo di π1,n con l2n = q
p
2 + 4 − ln2
c) studio dell’errore di troncamento
c1) |π − π1,n | = O (nα ) ,
Dalla relazione
α ∈ IR
(ordine);
π1,n = π −
1 π5
1 π7
1 π3
+
−
+ ...
3! n2 5! n4 7! n6
π − π1,n =
1 π5
1 π7
1 π3
−
+
−...
3! n2 5! n4 7! n6
si ricava
cio`e
π − π1,n = O n−2
che `e l’ordine del metodo di Archimede.
36
k ∈ IR+ , β ∈ IR
c2) |π − π1,n | ≤ k nβ ,
Per x > 0
sinx = x −
(maggiorazione);
x3 x5 x7
x3
+
−
+ ... > x−
3!
5!
7!
6
e quindi
π1,n
π3
π
π
> n
− 3
= n sin
n
n 6n
da cui
!
=π−
π3
6n2
3
22
5.17
7
≈ 2
2
6n
n
π3
<
6n2
dove si `e usata la limitazione di Archimede
1
22
10
< π < 3+
=
.
3+
71
7
7
Si ottiene cos`ı una limitazione dell’errore nel metodo di Archimede.
π − π1,n <
c3) |π − π1,n | = g (n) + O (nσ ) , σ ∈ IR, g nota
Dalla relazione
π1,n = π −
(svil. asintot.).
1 π3
1 π5
1 π7
+
−
+ ...
3! n2 5! n4 7! n6
si ricava
π − π1,n =
∞
X
(−1)k+1
k=1
π 2k+1
1
(2k + 1)! n2k
cio`e lo sviluppo asintotico dell’errore.
Con le informazioni ricavate, `e possibile studiare la velocit`a di convergenza, cio`e
il comportamento dell’errore al passo (n + 1)-esimo in relazione all’errore al passo
n-esimo.
Da
π1,n
= n sin
π
n
π1,2n = 2n sin
= π−
1 π3
1 π5
1 π7
+
−
+ ...
3! n2 5! n4 7! n6
1 π3
π
1 π5
1 π7
= π−
+
−
+ ...
2n
3! (2n)2 5! (2n)4 7! (2n)6
si ricava
π − π1,n
π − π1,2n
#
1 π 7
1 π 3 1 π 5
+
−
+ ...
= n
3! n
5! n
7! n
#
"
1 π 7
1 π 3 1 π 5
+
−
+ ...
= 2n
3! 2n
5! 2n
7! 2n
"
11. Analisi di un metodo numerico
37
e quindi
π − π1,2n
n→∞ π − π1,n
lim
"
#
1 π 3
1 π 5
2n
−
+ ...
3! 2n
5! 2n
"
# =
= lim
n→∞
1 π 3
1 π 5
n
−
+ ...
3! n
5! n
"
#
3! π 2
1 π 3
1−
+ ...
2
3! 2n
5! 2n
1
"
# =
= lim
n→∞
4
1 π 3
3! π 2
1−
+ ...
3! n
5! n
cio`e
1 π − π1,n π − π1,2n ≈
4
che d`a la velocit`a di convergenza del metodo di Archimede. La relazione trovata
1
esprime che ad ogni passo l’errore di troncamento si riduce di un fattore .
4