Sei sulla pagina 1di 28

See

discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/45627395

Matematica Numerica

Article · January 1998


Source: OAI

CITATIONS READS

2 2,067

3 authors, including:

Alfio Quarteroni Riccardo Sacco


École Polytechnique Fédérale de Lausanne Politecnico di Milano
705 PUBLICATIONS 20,548 CITATIONS 184 PUBLICATIONS 1,380 CITATIONS

SEE PROFILE SEE PROFILE

Some of the authors of this publication are also working on these related projects:

Personalised Computational Cardiac Physiology for Diagnosis and Interventional Planning View
project

Numerical simulation of the cardiovascular system View project

All content following this page was uploaded by Riccardo Sacco on 22 May 2014.

The user has requested enhancement of the downloaded file.


Calcolo Numerico A - a.a. 2008/09

Giovedı̀ 12 marzo 2009

() Calcolo Numerico A - a.a. 2008/09 Giovedı̀ 12 marzo 2009 1 / 27


Testi Consigliati
Testo adottato:
titolo: Matematica numerica
autori: Quarteroni, A. M., Sacco, R., Saleri, F.

Per approfondimenti si suggerisce la lettura di


titolo: Introduzione all’analisi numerica 1
autori: Stoer, J.

() Calcolo Numerico A - a.a. 2008/09 Giovedı̀ 12 marzo 2009 2 / 27


Algebra sul calcolatore

Il seguente teorema è ben noto.

Teorema (di rappresentazione)


Data una base β > 1 ed un qualsiasi numero reale x 6= 0, esiste p ∈ Z ed un’unica
successione di numeri naturali {αi } – la rappresentazione in base β–

X
x = sign(x)β p αi β −i
i=1

tale che
(i) 0 ≤ αi < β;
(ii) α1 6= 0;
(iii) non esiste nessun intero k per cui si abbia αj = β − 1, ∀j > k.

() Calcolo Numerico A - a.a. 2008/09 Giovedı̀ 12 marzo 2009 3 / 27


Osservazione
L’ipotesi [(ii)] serve a evitare la proliferazione di scritture del tipo

0, 1 = 1 · 10−1 = 0, 001 · 102 .

Quando si usa la base β = 2,

α1 6= 0 ⇐⇒ α1 = 1

e quindi si risparmia memoria.


L’ipotesi [(iii)] tiene conto del fatto che
9
0, 9 = 10
+ 1092 + . . . 109n + . . .
9 1
+ . . . + 101n + . . .
` ´
= 10
1 + 10
9 1
= 10 1− 1
=1
10

() Calcolo Numerico A - a.a. 2008/09 Giovedı̀ 12 marzo 2009 4 / 27


La numerazione binaria
Il sistema di numerazione interno al computer è quello binario, ovvero in base β = 2.

(Cambiamento di base)
Se vogliamo rappresentare in base 2 il numero 147, si procede come segue

147 : 2 = 73 con resto 1


73 : 2 = 36 con resto 1
36 : 2 = 18 con resto 0
18 : 2 = 9 con resto 0
9:2=4 con resto 1
4:2=2 con resto 0
2:2=1 con resto 0
1:2=0 con resto 1

e pertanto si trova
(147)10 = (10010011)2 .

Esempio
(2, 25)10 = (10, 01)2
(0, 625)10 = (0, 101)2
...

() Calcolo Numerico A - a.a. 2008/09 Giovedı̀ 12 marzo 2009 5 / 27


Domanda
Un numero reale ha uno sviluppo decimale
finito: (0, 25)10 , (0, 7564)10 etc.
illimitato periodico: (0, 3)10 = (1/3)10 , (0, 2)10 = (2/9)10 , etc

illimitato non periodico (numero irrazionale): 2 = 1, 414213..., π = 3, 141592...,
etc
Se un numero reale x ha sviluppo finito (infinito periodico) in base 10 (in base 2) allora
ha sviluppo binario finito (infinito periodico) in base 2 (in base 10)?

() Calcolo Numerico A - a.a. 2008/09 Giovedı̀ 12 marzo 2009 6 / 27


Risposta
Se un numero è irrazionale in base 10, allora resta irrazionale in base 2 e viceversa.
L’essere irrazionale è indipendente dalla base che si sceglie.
Se un numero ha sviluppo binario finito, allora ha sviluppo decimale finito. Infatti le
frazioni del tipo 21n hanno sviluppi decimali finiti, e la somma di un numero finito di
sviluppi decimali finiti è finito!
La periodicità non si conserva cambiando la base: infatti si ha, per esempio

(0, 001100)2 = (0, 1100 · 2−2 )2 = (0, 2)10 = (1/5)10

infatti
(0, 1100 · 2−2 )2 1
`1
+ 212 + 215 + 216 + . . .
´
= 4 2
1 1
1 + 21 + 215 1 + 12 + . . .
` ` ´ ` ´ ´
= 4 2
1 3 1
+ 215 + . . .
` ´
= 4 2 2
3 1
1 + 214 + 218 . . .
` ´
= 8 2
3 1
= 16 1− 1
24
1
= 5

Quindi, in generale, numeri che sono periodici in binario possono non esserlo più nel
sistema decimale. E il viceversa?

() Calcolo Numerico A - a.a. 2008/09 Giovedı̀ 12 marzo 2009 7 / 27


Esempio
Rappresentare in base 2 il numero la cui rappresentazione decimale è 0, 6.

0, 6 × 2 = 1, 2 = 0, 2 +1
0, 2 × 2 = 0, 4 = 0, 4 +0
0, 4 × 2 = 0, 8 = 0, 8 +0
0, 8 × 2 = 1, 6 = 0, 6 +1
...

e quindi
(0, 6)10 = (0, 1001)2 .

Osservazione
Il passaggio da base 2 a base 8 è assai semplice, basta raggruppare a 3 a 3 i termini dello
sviluppo binario
(0, 6)10 = (0, 1001)2
= (0, 100110011001...)2
= (0, 4631 . . .)8
= (0, 4631)8
...
e quindi
(0, 6)10 = (0, 4631)8 .
() Calcolo Numerico A - a.a. 2008/09 Giovedı̀ 12 marzo 2009 8 / 27
Esempio
Rappresentare in base 8 il numero la cui rappresentazione decimale è 0, 6.

0, 6 × 8 = 4, 8 = 4, 8 +8 × 0
4, 8 × 8 = 38, 4 = 6, 4 +8 × 4
6, 4 × 8 = 51, 2 = 3, 2 +8 × 6
3, 2 × 8 = 25, 6 = 1, 6 +8 × 3
1, 6 × 8 = 12, 8 = 4, 8 +8 × 1
...

e quindi
(0, 6)10 = (0, 4631)8 .

() Calcolo Numerico A - a.a. 2008/09 Giovedı̀ 12 marzo 2009 9 / 27


Floating points

Il computer lavora con un insieme finito di numeri, detti numeri macchina.


Quindi non si lavora con numeri reali, ma neppure con i razionali (che sono entrambi
insiemi aventi cardinalità infinita).
Nei primi computer si utilizzavano i numeri in virgola fissa, ovvero i numeri su cui il
computer operava erano quelli aventi N = N1 + N2 cifre di cui
N1 che rappresentano la parte intera
N2 che rappresentano la mantissa, ovvero la parte che segue la virgola.
Questo tipo di rappresentazione è stato abbandonato a favore dei numeri con virgola
mobile, detti anche Floating Points

() Calcolo Numerico A - a.a. 2008/09 Giovedı̀ 12 marzo 2009 10 / 27


Definizione
L’insieme dei numeri macchina – Floating Points – con
base β > 1
t ∈ N \ {0} cifre significative
range [L, U], con L < 0 < U
è l’insieme F (β, t, L, U) dei numeri della forma
t
X
x = sign(x)β p di β −i
i=1

dove
d1 6= 0
0 ≤ di ≤ β − 1 i = 1, ..., t
L≤p≤U

Osservazione
In un moderno calcolatore, l’insieme dei Floating Points è F (2, 53, −1021, 1024), ovvero
un insieme di cardinalità 2 · 253−1 · (1024 − (−1021) + 1) + 1 = 253 · 2046 + 1, molto
grande ma finita!

() Calcolo Numerico A - a.a. 2008/09 Giovedı̀ 12 marzo 2009 11 / 27


Esempio
Andiamo a costruire F (2, 3, −1, 1). Questo insieme, per costruzione, è simmetrico
rispetto all’origine, dunque studieremo solo i numeri positivi. Si ha
1
4
= (0, 100) · 2−1 ; 5
16
= (0, 101) · 2−1 ; 3
8
= (0, 110) · 2−1 ; 7
16
= (0, 111) · 2−1
1
2
= (0, 100) · 20 ; 5
8
= (0, 101) · 20 ; 3
4
= (0, 110) · 20 ; 7
8
= (0, 111) · 20

1 = (0, 100) · 21 ; 5
4
= (0, 101) · 21 ; 3
2
= (0, 110) · 21 ; 7
4
= (0, 111) · 21

0 0,25 0,5 0,75 1 1,25 1,5 1,75 2 2,25

Non è difficile riconoscere che tali punti non sono uniformemente spaziati tra loro.
Preso un numero x ∈ [ 41 , 74 ] \ F (2, 3, −1, 1),
può accadere che x ∈ [ 14 , 7
16
] e in tal caso trovo q ∈ [ 14 , 47 ] tale che |x − q| ≤ 2−5
ma posso avere x = 98 (uno dei casi più sfortunati): in tal caso qualunque sia
q ∈ F(2, 3, −1, 1) si ha |x − q| ≥ 2−3

() Calcolo Numerico A - a.a. 2008/09 Giovedı̀ 12 marzo 2009 12 / 27


Consideriamo F (β, t, L, U), esaminando al solito solo i numeri positivi. Si prova che
xmin = β L−1 = min F (β, t, L, U) ∩ {x > 0}
xmax = β U (1 − β −t ) = max F (β, t, L, U) ∩ {x > 0}
Preso x > 0, può accadere che
x < xmin : in tal caso il numero è approssimato a 0 – UNDERFLOW;
x > xmax : in tal caso la macchiana segnala errore – OVERFLOW;
x ∈ [xmin , xmax ] \ F (β, t, L, U): in tal caso si presenta il problema di approssimare il
numero x.

Definizione (Arrotondamento)
Preso x ∈ [xmin , xmax ] \ F (β, t, L, U), diciamo arrotondamento di x, e lo indichiamo
con rd(x), un numero di F (β, t, L, U) tale che

|x − rd(x)| ≤ |x − g |, ∀g ∈ F(β, t, L, U).

() Calcolo Numerico A - a.a. 2008/09 Giovedı̀ 12 marzo 2009 13 / 27


Esempio
Sia F (10, 4, −5, 5), allora

rd(0, 14285 · 100 ) = 0, 1429 · 100


rd(3, 14159 · 100 ) = 0, 3142 · 101
rd(0, 142842 · 102 ) = 0, 1428 · 102

(Come costruire rd(x))


Si consideri x 6∈ F(10, t, L, U) compreso tra il massimo ed il minimo,

x = 0, d1 d2 . . . dt · 10p = a · 10p

con p ∈ [L, U]. Si costruisce


(
0, d1 d2 . . . dt se 0 ≤ dt+1 ≤ 4
a=
0, d1 d2 . . . dt + 10−t se 5 ≤ dt+1

Si pone fl(x) = a · 10p , e si ha che fl(x) = rd(x), ovvero è l’arrotondamento introdotto in


precedenza

() Calcolo Numerico A - a.a. 2008/09 Giovedı̀ 12 marzo 2009 14 / 27


Osservazione
Per come abbiamo definito fl(x), si ha che
|x − fl(x)| ≤ 12 10−t+p ≤ 5 · 10−t−1+p Errore assoluto arrotondamento
|x − fl(x)| 1 1 5 · 10−t−1
≤ 10−t+p ≤ ≤ 5 · 10−t Errore relativo
|x| 2 |a| · 10p |a|
arrotondamento

Osservazione
Preso x ∈ [xmin , xmax ] \ F (10, t, L, U), dove xmin = 10L−1 e xmax = 10U (1 − 10−t ), in
luogo dell’arrotondamento si può operare, meno accuratamente, usando il cosidetto
troncamento alla t−esima cifra decimale, ovvero, se p ∈ [L, U],

X t
X
x = 10p di 10−i −→ tronc(x) = 10p di 10−i .
i=1 i=1

Risulta chiaro che l’errore commesso è maggiore (doppio!) rispetto all’arrotondamento,


infatti
|x − tronc(x)| ≤ 10−t+p Errore assoluto troncamento
|x − tronc(x)| 1 10−t
≤ 10−t+p ≤ ≤ 101−t Errore relativo troncamento
|x| |a| · 10p |a|

() Calcolo Numerico A - a.a. 2008/09 Giovedı̀ 12 marzo 2009 15 / 27


Operazioni sui Floating Points

Definizione
Dato F (β, t, L, U), il numero
1 1−t
εM = β
2
viene detto precisione di macchina

Osservazione
La caratterizzazione di εM è la seguente:

εM = inf{z ∈ F(β, t, L, U) ∩ {x > 0} : fl(1 + z) > 1}

() Calcolo Numerico A - a.a. 2008/09 Giovedı̀ 12 marzo 2009 16 / 27


Osservazione
L’insieme F (β, t, L, U) non è chiuso rispetto alle operazioni di somma e prodotto.
Ad esempio se x = 0, 11 · 100 e y = 0, 11 · 10−2 , allora x + y = 0, 1111 · 100

x, y ∈ F(10, 2, L, U), mentre x + y 6∈ F(10, 2, L, U)

Definizione
Dati x, y ∈ R, possiamo definire le operazioni di macchina come segue

x ⊕y := fl(fl(x) + fl(y ))
x y := fl(fl(x) − fl(y ))
x y := fl(fl(x) · fl(y ))
x y := fl(fl(x)/fl(y ))

() Calcolo Numerico A - a.a. 2008/09 Giovedı̀ 12 marzo 2009 17 / 27


Ha senso andare a valutare come si opera in F , un sistema di cardinalità finita.

Esempio
In F , ⊕ non soddisfa la proprietà associativa Infatti, presi a, b, c ∈ F(10, 4, −10, 10) dati
da
a = 0, 19 · 107 , b = −0, 19 · 107 , c = 0, 9 · 101
si ha che
(a ⊕ b) ⊕ c = 0 ⊕ 0, 9 · 101 = 0, 9 · 101
mentre
a ⊕ (b ⊕ c) = 0, 19 · 107 ⊕ fl(−0, 19 · 107 + 0, 9 · 101 )
= 0, 19 · 107 ⊕ fl(−0, 19 · 107 + 0, 0000009 · 107 )
= 0, 19 · 107 ⊕ fl(−0, 1899991 · 107 )
= 0, 19 · 107 − 0, 19 · 107
= 0

Osservazione
Si può mostrare che in F non vale neppure la proprietà associativa del prodotto e la
propietà distributiva del prodotto sulla somma ⊕.

() Calcolo Numerico A - a.a. 2008/09 Giovedı̀ 12 marzo 2009 18 / 27


Problema
Andiamo a vedere la propagazione degli errori, ovvero un errore commesso sulle variabili
in ingresso x, y quale errore genera sulla somma, prodotto, quoziente, differenza?

Esempio (Propagazione errori nella somma)


Poniamo
|x − fl(x)|
εx = , al variare di x ∈ R;
|x|
|(x + y ) − fl(x + y )|
ε⊕
x,y = , al variare di x, y ∈ R.
|x + y |
Vogliamo provare che
„ «
|x| |y |
ε⊕
x,y ≤ ε M + (1 + ε M ) ε x + ε y
|x + y | |x + y |

() Calcolo Numerico A - a.a. 2008/09 Giovedı̀ 12 marzo 2009 19 / 27


Poniamo A = |(x + y ) − (fl(x) + fl(y ))|

|(x + y ) − (x ⊕ y )| ≤ A + |(fl(x) + fl(y )) − fl(fl(x) + fl(y ))|


≤ A + εM |fl(x) + fl(y )|
≤ A + εM |fl(x) + fl(y ) + (x + y ) − (x + y )|
≤ A + εM |x + y | + εM A

Ne segue che „ «
A A
ε⊕
x,y ≤ εM 1+ +
|x + y | |x + y |
Essendo
A |x − fl(x)| |y − fl(y )| |x| |y |
≤ + ≤ εx + εy
|x + y | |x + y | |x + y | |x + y | |x + y |
si ottiene
„ «
|x| |y | |x| |y |
ε⊕
x,y ≤ εM 1 + εx + εy + εx + εy
|x + y | |x + y | |x + y | |x + y |
cioè „ «
|x| |y |
ε⊕
x,y ≤ εM + (1 + εM ) εx + εy
|x + y | |x + y |

() Calcolo Numerico A - a.a. 2008/09 Giovedı̀ 12 marzo 2009 20 / 27


Un risultato analogho vale per il prodotto (trascurando i termini di ordine superiore al
primo): posto
|(x · y ) − fl(x · y )|
ε x,y :=
|x · y |
si ha che
ε
x,y = εM + εx + εy , ∀x, y ∈ R.

Per quanto riguarda il quoziente (trascurando i termini di ordine superiore al primo):


posto
|(x/y ) − fl(x/y )|
ε
x,y :=
|x/y |
si ha che
ε
x,y = εM + εx − εy , ∀x, y ∈ R.

() Calcolo Numerico A - a.a. 2008/09 Giovedı̀ 12 marzo 2009 21 / 27


Data una funzione x → f (x) = y , quando la si vuole implementare nel computer diventa

x̃ → f (x̃) = ỹ

Supponendo che la funzione f sia derivabile con continuità , lo sviluppo di Taylor ci dà

f (x̃) = f (x) + f 0 (x)(x̃ − x) + o(|x̃ − x|)

e trascurando i termini di ordine superiore al primo

|ỹ − y | ' |f 0 (x)||x̃ − x| (errore assoluto)

come pure
|f 0 (x)| |x̃ − x|
„ «
|ỹ − y |
' |x| (errore relativo)
|y | |f (x)| x
|f 0 (x)|
Il numero C (f , x) = |x| è detto indice di condizionamento.
|f (x)|

() Calcolo Numerico A - a.a. 2008/09 Giovedı̀ 12 marzo 2009 22 / 27


|f 0 (x)|
L’indice di condizionamento C (f , x) = |x| prima introdotto misura la ”bontà ” di
|f (x)|
un algoritmo in quanto
se C (f , x) è grande, un piccolo errore relativo nei dati x in ingresso diventa un
grande errore relativo nel risultato y = f (x)
se C (f , x) è piccolo, un piccolo errore relativo nei dati x in ingresso porta ad un
piccolo errore relativo nel risultato y = f (x).

Definizione
I problemi per cui C (f , x) è piccolo vengono detti ben condizionati, mentre quelli per
cui C (f , x) è grande vengono detti mal condizionati.

Osservazione
Prendendo in esame le operazioni di somma e prodotto, si ha che
la somma (differenza) è mal condizionata: quando |x ± y | ' 0, piccoli errori nei dati
in ingresso danno luogo a grandi errori nel risultato.
il prodotto (quoziente) è ben condizionato: piccoli errori sui dati in ingresso dallo
luogo a piccoli errori nel risultato.

() Calcolo Numerico A - a.a. 2008/09 Giovedı̀ 12 marzo 2009 23 / 27


Quanto visto in precedenza suggerisce che l’errore viene amplificato molto quando la
derivata della funzione risulta avere valore assoluto grande.

Esempio

Dato il polinomio x 2 − 4x + α = 0, vediamo come varia la radice xα = 2 + 4 − α al
variare di α ∈]4 − ε, 4 + ε[.
Intanto osserviamo che quando α = 4, si ha x4 = 2. Consideriamo α̃ = 4 − 10−6 : si ha
p
xα̃ = 2 + 4 − α + 10−6 = 2 + 10−3 .

Ne segue che
|α̃ − α| 10−6
εα = =
|α| 4
|xα̃ − xα | 10−3
εxα = =
|xα | 2
e quindi una pertubazione in ingresso dell’ordine di 10−6 è stata amplificata di un fattore
103 .

() Calcolo Numerico A - a.a. 2008/09 Giovedı̀ 12 marzo 2009 24 / 27


Osservazione

Il risultato dell’esempio precedente era prevedibile in quanto f (x) = 2 + 4 − x e si ha
che
|f 0 (x)|
˛ ˛˛ ˛
˛ 1 ˛˛ 1 ˛
C (f , x) = |x| = |x| ˛˛ √ ˛˛ √ ˛
|f (x)| 2 4 − x 2 + 4 − α˛
˛ ˛
e dunque ˛ ˛˛ ˛
1 1
C (f , 4 − 10−6 ) = |4 − 10−6 | ˛˛ ˛ ' 103
˛ ˛˛ ˛
˛˛
2 · 10−3 ˛ ˛ −3
2 + 10 ˛

() Calcolo Numerico A - a.a. 2008/09 Giovedı̀ 12 marzo 2009 25 / 27


La cancellazione

Esempio
Consideriamo le radici del polinomio

x 2 − 2px + q = 0

con p 2 − q ≥ 0 (radici reali). Le radici sono date da


p p
x1 = p + p 2 − q, x2 = p − p 2 − q

Quando p 2 >> q, può intervenire il fenomeno della cancellazione, ovvero può accadere
che x2 si annulli a causa degli arrotondamenti.
Per ovviare a questo problema si osserva che q = x1 · x2 , e quindi
p
x1 = p + p 2 − q

mentre p q q
x2 = p − p2 − q = p =
p+ p −q
2 x1

ovvero p q
x1 = p + p 2 − q, x2 =
x1

() Calcolo Numerico A - a.a. 2008/09 Giovedı̀ 12 marzo 2009 26 / 27


Esempio
Quando si tratta di valutare la funzione
p
f (x) = x( 1 + x 2 − x)

quando x > 0, per evitare fenomeni di cancellazione può risultare opportuno esprimere la
funzione come
x
f (x) = √
1 + x2 + x
ovvero 8 p
<x( 1 + x − x) se x ≤ 0
> 2

f (x) = x
:√
> se x > 0
1 + x2 + x

() Calcolo Numerico A - a.a. 2008/09 Giovedı̀ 12 marzo 2009 27 / 27