You are on page 1of 25

Ezio Venturino

Appunti ragionati
di calcolo numerico
Copyright © MMIX
ARACNE editrice S.r.l.

www.aracneeditrice.it
info@aracneeditrice.it

via Raffaele Garofalo, 133 A/B


00173 Roma
(06) 93781065

ISBN 978–88–548–2357–0

I diritti di traduzione, di memorizzazione elettronica,


di riproduzione e di adattamento anche parziale,
con qualsiasi mezzo, sono riservati per tutti i Paesi.

Non sono assolutamente consentite le fotocopie


senza il permesso scritto dell’Editore.

I edizione: marzo 2009


Indice

1 CONCETTI FONDAMENTALI 11
1.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . 11
1.1.1 Obiettivi del corso . . . . . . . . . . . . . . 11
1.1.2 L’analisi numerica nella scienza . . . . . . . 12
1.1.3 Classificazione dei problemi . . . . . . . . . 15
1.1.4 Problemi lineari e non lineari . . . . . . . . 16
1.2 Il sistema numerico del calcolatore . . . . . . . . . . 20
1.2.1 Sistemi di numerazione . . . . . . . . . . . . 20
1.2.2 Cambiamenti di base di numerazione . . . . 20
1.2.3 Valutazione di polinomi . . . . . . . . . . . 28
1.2.4 Altri sistemi di numerazione . . . . . . . . . 29
1.2.5 Rappresentazione dei numeri in macchina . . 31
1.2.6 Serie . . . . . . . . . . . . . . . . . . . . . . 36
1.2.7 Implementazione del segno . . . . . . . . . . 37
1.3 Errore . . . . . . . . . . . . . . . . . . . . . . . . . 39
1.3.1 Somme . . . . . . . . . . . . . . . . . . . . . 43
1.3.2 Errore di cancellazione . . . . . . . . . . . . 43
1.3.3 Backward error analysis . . . . . . . . . . . 47

2 PROBLEMI DIRETTI 53
2.1 Problemi base . . . . . . . . . . . . . . . . . . . . . 53
2.1.1 Un problema di interpolazione . . . . . . . . 54
2.2 Interpolazione . . . . . . . . . . . . . . . . . . . . . 56
2.2.1 Interpolazione di Lagrange . . . . . . . . . . 56
2.2.2 Interpolazione di Newton . . . . . . . . . . . 64

5
Indice

2.2.3 Interpolazione di Hermite . . . . . . . . . . 69


2.2.4 Interpolazione polinomiale a tratti. . . . . . 69
2.2.5 Splines . . . . . . . . . . . . . . . . . . . . . 72
2.3 Teoria dell’approssimazione . . . . . . . . . . . . . 77
2.3.1 Metodo di Frobenius . . . . . . . . . . . . . 78
2.3.2 Alcuni risultati importanti . . . . . . . . . . 79
2.3.3 Matrice di Hilbert . . . . . . . . . . . . . . . 82
2.4 Polinomi ortogonali . . . . . . . . . . . . . . . . . . 84
2.4.1 Minimi quadrati nel continuo . . . . . . . . 84
2.4.2 Condizionamento di un problema . . . . . . 85
2.4.3 Algoritmo di Gram-Schmidt nel discreto . . 89
2.4.4 Procedimento di Gram-Schmidt . . . . . . . 92
2.4.5 Equioscillazione dell’errore . . . . . . . . . . 95
2.4.6 Proprietà dei polinomi di Chebyshev . . . . 97
2.5 Quadrature . . . . . . . . . . . . . . . . . . . . . . 99
2.5.1 Metodi statistici . . . . . . . . . . . . . . . . 99
2.5.2 Metodi numerici classici . . . . . . . . . . . 100
2.5.3 Regola di Simpson . . . . . . . . . . . . . . 103
2.5.4 Formule di Newton - Cotes . . . . . . . . . . 105
2.5.5 Errore asintotico . . . . . . . . . . . . . . . 106
2.5.6 Estrapolazione di Aitken . . . . . . . . . . . 106
2.5.7 Estrapolazione di Richardson . . . . . . . . 108
2.5.8 Implementazione di quadrature . . . . . . . 109
2.5.9 Il metodo di Romberg . . . . . . . . . . . . 110
2.5.10 Integrazione Gaussiana . . . . . . . . . . . . 112

3 PROBLEMI INDIRETTI 117


3.1 Calcolo di zeri di funzioni . . . . . . . . . . . . . . 117
3.1.1 Linearizzazione analitica . . . . . . . . . . . 117
3.1.2 Adimensionalizzazione . . . . . . . . . . . . 119
3.1.3 Radici di funzioni non lineari . . . . . . . . 122
3.1.4 Algoritmo di divisione . . . . . . . . . . . . 123
3.1.5 Zeri di funzioni non lineari . . . . . . . . . . 123
3.1.6 Bisezione . . . . . . . . . . . . . . . . . . . 124
3.1.7 Algoritmo di bisezione . . . . . . . . . . . . 125

6
Indice

3.1.8 Convergenza per bisezione. . . . . . . . . . . 126


3.1.9 Metodi iterativi . . . . . . . . . . . . . . . . 126
3.1.10 Convergenza del metodo di Newton . . . . . 128
3.1.11 Criteri di arresto . . . . . . . . . . . . . . . 129
3.1.12 Convergenza per il metodo della secante . . 130
3.1.13 Costruzione di equazioni differenziali . . . . 130
3.1.14 Equazione alle differenze . . . . . . . . . . . 132
3.1.15 Velocità di convergenza . . . . . . . . . . . . 133
3.1.16 Metodi di ordine più elevato . . . . . . . . . 135
3.1.17 Altri metodi . . . . . . . . . . . . . . . . . . 136
3.1.18 Metodo dei punti fissi . . . . . . . . . . . . . 137
3.1.19 Radici multiple . . . . . . . . . . . . . . . . 138
3.2 Autovalori . . . . . . . . . . . . . . . . . . . . . . . 139
3.2.1 Un’idea che non funziona . . . . . . . . . . . 141
3.2.2 Digressione sulle norme . . . . . . . . . . . . 142
3.2.3 Metodo delle potenze . . . . . . . . . . . . . 146
3.2.4 Metodo delle potenze inverse . . . . . . . . . 152
3.3 Algebra lineare . . . . . . . . . . . . . . . . . . . . 153
3.3.1 Metodo di Gauss - Jacobi . . . . . . . . . . 154
3.3.2 Metodo di Gauss - Seidel . . . . . . . . . . . 154
3.3.3 Metodo del rilassamento . . . . . . . . . . . 155
3.3.4 Metodo di eliminazione . . . . . . . . . . . . 156
3.3.5 Implementazione dell’algoritmo di Gauss . . 158
3.3.6 Condizionamento . . . . . . . . . . . . . . . 162
3.3.7 Il teorema fondamentale . . . . . . . . . . . 164
3.3.8 Costo dell’algoritmo di riduzione . . . . . . 165
3.3.9 Interpretazione matriciale . . . . . . . . . . 168
3.3.10 Metodi di decomposizione diretta . . . . . . 172
3.3.11 Analisi dell’errore . . . . . . . . . . . . . . . 174
3.4 Derivazione numerica . . . . . . . . . . . . . . . . . 177
3.4.1 Metodo dei coefficienti indeterminati . . . . 179
3.4.2 Il problema dell’asta . . . . . . . . . . . . . 183
3.4.3 Problema della piastra . . . . . . . . . . . . 186
3.5 Equazioni differenziali . . . . . . . . . . . . . . . . 190
3.5.1 Equazioni alle derivate parziali: classificazione 191

7
Indice

3.5.2 Separazione delle variabili . . . . . . . . . . 193


3.5.3 Trasformata rapida di Fourier . . . . . . . . 201
3.6 Equazioni differenziali ordinarie . . . . . . . . . . . 208
3.6.1 Equazioni evolutive . . . . . . . . . . . . . . 208
3.6.2 Il metodo di Euler . . . . . . . . . . . . . . 209
3.6.3 Altre derivazioni del metodo di Euler . . . . 210
3.6.4 Errore locale e globale . . . . . . . . . . . . 212
3.6.5 Stabilità . . . . . . . . . . . . . . . . . . . . 213
3.6.6 Trasformata di Laplace . . . . . . . . . . . . 217
3.6.7 Metodi a un passo. . . . . . . . . . . . . . . 218
3.6.8 Metodi Runge Kutta. . . . . . . . . . . . . . 220
3.6.9 Metodi Multistep . . . . . . . . . . . . . . . 223
3.6.10 Confronto dei vari metodi . . . . . . . . . . 230
3.6.11 Cenni sull’analisi di stabilità . . . . . . . . . 230
3.6.12 Problemi sul bordo a 2 punti . . . . . . . . . 231
3.6.13 Metodo di shooting . . . . . . . . . . . . . . 232
3.7 Equazioni alle derivate parziali . . . . . . . . . . . . 235
3.7.1 Differenze finite . . . . . . . . . . . . . . . . 235
3.7.2 Metodi di collocazione e Galerkin . . . . . . 236
3.7.3 Una prospettiva più generale . . . . . . . . . 240
3.7.4 Problemi multidimensionali . . . . . . . . . 251
3.7.5 Equazioni paraboliche . . . . . . . . . . . . 255
3.7.6 Sistemi di grandi dimensioni non lineari . . 259
3.7.7 Metodo di Newton nel multidimensionale . . 263
3.7.8 Metodi numerici per equazioni paraboliche . 264
3.7.9 Equazioni alle derivate parziali iperboliche . 267
3.7.10 Metodi numerici . . . . . . . . . . . . . . . 272
3.7.11 Shocks . . . . . . . . . . . . . . . . . . . . . 276

4 PROBLEMI INVERSI 277


4.1 Esempi . . . . . . . . . . . . . . . . . . . . . . . . . 277
4.2 Metodi numerici . . . . . . . . . . . . . . . . . . . . 285
4.2.1 Metodo dei nuclei degeneri . . . . . . . . . . 285
4.2.2 Metodo di regolarizzazione di Tichonov . . . 288
4.2.3 Metodo iterativo di Landweber-Fridman . . 289

8
Indice

4.2.4 Una considerazione finale . . . . . . . . . . . 290

5 ESERCITAZIONI 291
5.1 Esempi svolti . . . . . . . . . . . . . . . . . . . . . 291
5.1.1 Minimi quadrati . . . . . . . . . . . . . . . . 291
5.1.2 Aritmetica di macchina . . . . . . . . . . . . 294
5.1.3 Interpolazione . . . . . . . . . . . . . . . . . 297
5.1.4 Quadrature . . . . . . . . . . . . . . . . . . 307
5.1.5 Approssimazione . . . . . . . . . . . . . . . 315
5.1.6 Zeri di funzioni . . . . . . . . . . . . . . . . 323
5.1.7 Algebra Lineare . . . . . . . . . . . . . . . . 327
5.1.8 Autovalori . . . . . . . . . . . . . . . . . . . 337
5.1.9 Derivazione numerica . . . . . . . . . . . . . 339
5.1.10 Equazioni differenziali ordinarie . . . . . . . 342
5.1.11 Equazioni alle derivate parziali . . . . . . . 357
5.2 Esercizi proposti . . . . . . . . . . . . . . . . . . . 385
5.2.1 Aritmetica di macchina . . . . . . . . . . . . 385
5.2.2 Interpolazione . . . . . . . . . . . . . . . . . 387
5.2.3 Quadrature . . . . . . . . . . . . . . . . . . 388
5.2.4 Approssimazione . . . . . . . . . . . . . . . 390
5.2.5 Zeri di funzioni . . . . . . . . . . . . . . . . 391
5.2.6 Algebra Lineare . . . . . . . . . . . . . . . . 391
5.2.7 Autovalori . . . . . . . . . . . . . . . . . . . 392
5.2.8 Derivazione numerica . . . . . . . . . . . . . 393
5.2.9 Equazioni differenziali ordinarie . . . . . . . 393
5.2.10 Equazioni alle derivate parziali . . . . . . . 395

9
Prefazione

Queste note contengono una rassegna, che non ha la pretesa di


essere completa, di alcuni argomenti di analisi numerica. Di questi
non si nascondono gli aspetti da cui originano. Per questo a volte si
affronta anche la presentazione di qualche argomento di matematica
applicata. Sono appunti, come dice il titolo, con tutte le limitazioni
di questa affermazione.
Nella presentazione ho privilegiato l’aspetto costruttivo nella solu-
zione dei problemi, rinunciando spesso a dettagliare l’implementa-
zione degli algoritmi e la formalità delle dimostrazioni. Non sono
completamente soddisfatto del risultato, in quanto avrei voluto più
tempo per rivedere ulteriormente la presentazione, ma l’imminen-
za dell’inizio del corso mi ha impedito una rielaborazione più det-
tagliata. In una seconda edizione, con più tempo a disposizione,
mi riservo di riesaminare questo materiale e correggerne gli errori,
certamente presenti.
Desidero ringraziare tutti coloro che mi sono stati di guida, a co-
minciare dall’insegnamento elementare e superiore, in particolare
R. Freccero e D. Palladino, per continuare con chi mi ha introdot-
to all’analisi numerica e alla matematica applicata, e a cui diverse
delle idee qui presentate risalgono: W. Gautschi, B. Conolly, J. Ly-
ness, E. Beltrami, J.C. Frauenthal, R.P. Srivastav, R. Tewarson;
o da cui più avanti ho imparato molto interagendo: K.E. Atkin-
son, H. Hethcote, F. Potra, C. Grabbe, V. Didenko, W. Sprössig,
G. Chandler, D. Elliott, D. Paget, J.C. Mason, P. Graves-Morris,
A. Medvinsky, S. Petrovskii, H. Malchow, U.Feudel. Ringrazio in-
fine i colleghi G. Allasia, C. Dagnino, B. Gabutti, G. Monegato;
V. Demichelis, R. Besenghi, I. Cravero, A. De Rossi, P. Lamberti,
D. Delbosco; e ancora P. Lepora, G. Pittaluta, L. Sacripante. Un
ringraziamento particolare per il supporto tecnico a G. Ghibò.

Torino, 31 gennaio 2009

10
Capitolo 1

CONCETTI
FONDAMENTALI

1.1 Introduzione
1.1.1 Obiettivi del corso
Il corso ha come scopo la costruzione di algoritmi per la risoluzione
di problemi concreti. Ciò implica lo studio di alcuni aspetti di base
1. La definizione di un metodo, che deve funzionare e comporta
l’analisi del problema che si deve risolvere.
2. L’analisi dell’errore insito nel metodo, che essendo approssi-
mato, non può fornire la soluzione analitica; in questo conte-
sto si deve dimostrare la convergenza di ciascun algoritmo.
3. Per risolvere uno stesso problema è possibile avere diverse
idee, che portano a metodologie differenti; è allora importan-
te poter e saper confrontare i metodi sulla base di proprietà
quali velocità di esecuzione, legata al numero di operazio-
ni da svolgere, occupazione di memoria, precisione del risul-
tato. In generale non esiste il metodo migliore in assoluto,
ma tra i tanti disponibili nella situazione contingente occorre
determinare quello che meglio serve allo scopo.

11
Introduzione

4. Ciascun metodo inoltre può essere più o meno sensibile a va-


riazioni nei dati del problema; in questo caso si deve conside-
rare la stabilità dell’algoritmo.

Nel corso affronteremo per ciascuna classe di problemi, quindi in


ogni capitolo, le questioni sopra delineate determinando risposte
adeguate.

1.1.2 L’analisi numerica nella scienza


Consideriamo per linee generali il processo scientifico illustrato dal
grafo in figura 1.1.2. Un’indagine scientifica parte dall’osservazione
di un fenomeno, ad esempio il sorgere e tramontare giornaliero del
sole, su cui si raccolgono dati. Su questa base sono ipotizzate le
leggi che stanno alla sua base e lo governano. Per loro tramite si
costruisce poi il modello, che è sinonimo di equazione o sistema di
equazioni, in generale non lineari.

Fenomeno Teoria, modello

d l

o Equazioni nonlineari Equazioni lineari


discretizzate nel continuo

L D

Dati Equazioni lineari algebriche

c s

Soluzione

Figura 1.1: Il ruolo dell’analisi numerica nel contesto scientifico

Alcuni tra i vari tipi possibili di modello possono essere i seguenti

12
L’analisi numerica nella scienza

• equazioni algebriche

• equazioni differenziali ordinarie

• equazioni differenziali alle derivate parziali, cioè le equazioni


differenziali in cui l’incognita non è funzione di una unica
variabile

• equazioni integrali

• equazioni integro-differenziali, combinazioni di quelle dei tipi


precedenti

Molto spesso la soluzione analitica di un problema non è determi-


nabile, ma allo scienziato interessa comunque poter inferire conclu-
sioni a partire dal modello formulato. A questo scopo, per ottenere
informazioni di natura quantitativa o qualitativa, si può procedere
a una approssimazione del modello originale, che consiste essenzial-
mente nel ridurlo a una successione di problemi lineari, più facili da
risolvere. Si può procedere in due modi alternativi: linearizzazio-
ne seguita da discretizzazione, oppure discretizzazione seguita da
linearizzazione.

• Dal modello originale non lineare la linearizzazione (l) (lo-


cale, cioè vicino a una situazione ritenuta di possibile inte-
resse) porta a un modello lineare nel continuo e poi la sua
discretizzazione (D) dà un sistema algebrico lineare.

• Viceversa, discretizzando (d) il modello non lineare continuo,


si ottiene un sistema di equazioni alle differenze non lineari che
per essere risolte devono essere linearizzate (L), eventualmen-
te più volte iterativamente e ciò porta a una serie di sistemi
algebrici lineari.

In entrambi i casi si giunge alla necessità di risolvere un sistema


algebrico lineare. Questo passo quindi è la base di tutti i metodi
numerici, per cui l’algebra lineare numerica ha un ruolo centrale in

13
Introduzione

un corso base della materia e pure in corsi avanzati, ad esempio nel-


la soluzione numerica di equazioni alle derivate parziali, soprattutto
di tipo ellittico. La soluzione del sistema va poi confrontata con i
dati provenienti da esperimenti effettuati sul fenomeno. Se le due
cose sono in accordo, ciò costituisce una verifica contemporanea-
mente della procedura sperimentale e della teoria. Se invece si ha
discordanza si ha un errore. E’ importante notare che questo errore
può verificarsi in un qualunque arco o vertice del grafo. Potrebbe
ad esempio annidarsi nella procedura sperimentale, come però an-
che nel procedimento di linearizzazione, (errore di tipo “analitico”)
oppure nella discretizzazione (errore di ambito “numerico”). Persi-
no la legge ipotizzata potrebbe essere “sbagliata”. In effetti, anche
se raramente, ciò può verificarsi, ma in generale non si tratta di un
“errore” vero e proprio nella legge, quanto di un suo raffinamento,
come ad esempio è successo per la teoria della relatività ristretta,
che generalizza la teoria galileiana, la quale rimane valida come ca-
so limite della precedente, per velocità molto basse rispetto a quella
della luce. Un esempio di vero “errore” è costituito dalla teoria ari-
stotelica del moto che prevedeva l’azione di una forza costante nel
tempo agente sull’oggetto in moto, rinnegata poi 2000 anni dopo
dal principio di inerzia. Notiamo infine che anche nella soluzione
del sistema o equazione lineare finale si può incorrere in errori, e
incidentalmente, nella scuola inferiore ciò costituisce lo strumento
principale per la verifica dell’apprendimento!
Come esempio di linearizzazione analitica consideriamo l’equazione
del pendolo. Scomponendo la forza di gravità nelle direzioni lon-
gitudinale e tangenziale al moto, la prima ha per risultato solo di
tendere il filo a cui il grave è sospeso; la seconda, detta x l’ascissa
curvilinea della posizione del grave, dà luogo a una componente tan-
genziale sin x. Pertanto, in opportune unità di misura, l’equazione
che regge il moto sarà

ẍ − sin x = 0.

Essendo non lineare, la soluzione non è possibile con i metodi ele-


mentari dell’analisi. Una linearizzazione, come si sa dalla fisica,

14
Classificazione dei problemi

sostituisce la variabile al seno, ma ciò vale solo per angoli inferiori


a 5o . Per angoli più grandi occorre considerare un’approssimazio-
ne del seno tramite la formula di Taylor. Prendendo i primi due
termini significativi, si ottiene

1 3
ẍ − x + x = 0.
3!
Questa equazione ha una soluzione analitica in termini della fun-
zione ipergeometrica, che è rappresentata da una serie, [34].

1.1.3 Classificazione dei problemi


La formulazione generale di un problema nella forma

Ax = b (1.1)

riassume molti dei tipi di problemi che si possono incontrare in ma-


tematica applicata. Qui A rappresenta un operatore. Notiamo che
altre riformulazioni possibili sono quella matematica y = f (x) dove
f rappresenta una funzione non lineare, quella informatica, in cui x
sono i dati, A rappresenta l’algoritmo, y l’output del programma,
quella ingegneristica, in cui x e y sono input e output, mentre A è
il dispositivo, la scatola nera se ignoto, la scatola “trasparente” se
noto.
Ricordiamo che un sottoinsieme del prodotto cartesiano di due in-
siemi X e Y , quindi un sottoinsieme costituito da coppie ordinate
(xi , yj ) ∈ X × Y , è una relazione. Una funzione è un sottoinsieme
di una relazione, per cui ad ogni elemento del primo insieme X è
associato al più un elemento del secondo insieme Y . Questa ope-
razione di associazione tra elementi di due insiemi si chiama anche
mappa, in generale. Ora è possibile effettuare questa operazione
anche tra insiemi di funzioni. Ad esempio se prendo come insie-
me le funzioni infinitamente differenziabili, a sin x posso associare
cos x. Notiamo che la seconda è la derivata della prima funzione.
L’operazione che eseguiamo è la stessa che otteniamo associando

15
Introduzione

numeri, come (5, 10), (20, 40), (100, 200) cioè in generale la funzio-
ne y = 2x. Siccome però in questo caso le coppie sono sostituite
da funzioni, non possiamo parlare di funzione, ma diamo all’asso-
ciazione un nuovo nome, quello di operatore. Gli operatori sono
pertanto mappe che operano su insiemi di funzioni invece che su
insiemi numerici. Pertanto, la derivata è un operatore, in quanto
D sin x = cos x. Un altro esempio elementare di operatore (lineare)
è costituito dalle matrici.
I problemi quindi possono essere classificati a seconda di dove si
trova l’incognita in (1.1)
• il problema è diretto se i dati sono A e x e l’incognita è b

• il problema è indiretto se i dati sono A e b e l’incognita è x

• il problema dell’identificazione prevede che siano dati b e x e


l’incognita sia A; questo è un tipico problema di ingegneria
che non trattiamo.
Studieremo infatti i problemi diretti, in cui occorre “calcolare” qual-
cosa, per esempio un’approssimante di una funzione, come la formu-
la di Taylor che rappresenta pertanto un esempio già noto di questo
tipo di problema, e soprattutto quelli indiretti, che sono rappresen-
tati per esempio dalle equazioni: algebriche, differenziali, integrali.
In questi tipi di problemi occorre “risolvere” qualcosa. Il problema
dell’identificazione è il più complesso in quanto ho relativamente
pochi dati e ho molte incognite.

1.1.4 Problemi lineari e non lineari


La natura è non lineare, ma come visto in precedenza i problemi
non lineari sono risolti riconducendoli in generale a una successione
di problemi lineari. Pertanto la necessità dello studio dell’algebra
lineare numerica è evidente, quando si pensi di dover risolvere si-
stemi di centinaia o migliaia di equazioni. Il metodo di sostituzione
imparato nella scuola superiore in tali casi evidentemente non è
praticabile.

16
Problemi lineari e non lineari

Figura 1.2: Costo lineare, per l’acquisto al dettaglio, non lineare


per il grossista.

L’esempio più semplice di funzione lineare è costituito dal costo:


P
C = ni=1 ci qi . Nella formula ci rappresentano i costi unitari e qi
le quantità. La formula dice che se compro una quantità q1 della
merce 1 al prezzo unitario c1 , e una quantità q2 della merce 2 al
prezzo unitario c2 , pago il costo della prima, c1 q1 più il costo della
seconda c2 q2 . Ma ad un esame più approfondito, il costo non risulta
una funzione lineare, infatti per grosse quantità di merce, i grossisti
non pagano quanto gli acquirenti al dettaglio. La differenza tra le
due curve di figura 1.2 rappresenta il guadagno del commerciante:
se G è il prezzo all’ingrosso di tutta la merce, che viene venduta
in n “porzioni” al prezzo unitario p, quindi ciò corrisponde a fare
n passi lundo la retta, il guadagno sarà G − np. In realtà questo
poi sarà ancora inferiore, in quanto ci sono costi aggiuntivi per il
commerciante, come quelli di stoccaggio, trasporto ...
Esempio. Problema diretto e sua risoluzione.
√ 1
Dato e = 2, 7183 con 5 cifre corrette, calcolare e = e 2 . Ora
1
0 < 21 < 1 per cui e0 < e 2 < e1 in quanto l’esponenziale è crescente

17
Introduzione

per argomenti positivi. Per la risposta vogliamo la stessa precisione


di partenza. Lo strumento che usiamo è una formula costruttiva
nota dai corsi di analisi, la formula di Taylor.
Sappiamo che per x ≈ x0 vale la formula

f (x) = f (x0 ) + f ′ (x0 )(x − x0 ) + . . .


(x − x0 )n n (x − x0 )n+1 n+1
+ f (x0 ) + f (ξ)
2! (n + 1)!

dove x0 rapprenenta un punto di riferimento in cui la funzione è


calcolabile elementarmente, mentre il punto ξ nel termine di errore
è ignoto ma soddisfa le diseguaglianze x < ξ < x0 se x < x0 e
x0 < ξ < x se x0 < x, più in generale x ∈ H, dove H rappresen-
ta l’inviluppo convesso dell’insieme {x0 , x}, cioè il minimo insieme
convesso che lo contiene.
Il problema è quello di determinare quanti termini devo considerare
per ottenere la precisione richiesta: non devo eccedere, perchè in
tal caso avrei una perdita di tempo macchina, né avere un numero
di cifre inferiore a 5, in quanto non soddisferei la richiesta e ciò
potrebbe comportare problemi in eventuali calcoli successivi.
Ora siamo nella situazione di aver trovato un metodo per risolve-
re il problema, la formula di Taylor, abbiamo quindi ottenuto il
primo scopo dell’analista numerico; devo però passare al secondo
scopo, cioè fare l’analisi dell’errore per determinare la convergenza
del metodo proposto.
Notiamo che richiedere 5 cifre corrette equivale ad avere un resto
massimo pari a Rn ≤ 5 · 10−5 , dove

(x − x0 )n+1 n+1
Rn = f (ξ).
(n + 1)!

Ricordiamo che la formula di Taylor è locale, vale, o meglio risulta


migliore per punti vicini a x0 , in quanto meno termini saranno
necessari per una valutazione accurata.
Devo calcolare la quota dell’esponenziale nel punto di ascissa 12 . Per
prima cosa cerco un punto di riferimento in cui sia facile calcolare

18
Problemi lineari e non lineari

l’esponenziale: i punti vicini a 12 che soddisfano tale richiesta sono


0 e 1. E meglio prendere 0, infatti il calcolo è più facile. Pongo
pertanto x0 = 0. L’errore allora diventa stimabile,

(x − x0 )n+1 x n+1 xn+1 ξ
Rn = (e ) ≡ e
(n + 1)! (n + 1)!
x=ξ

in cui
1 xn+1 xn+1
0 = x0 < ξ < x = < 1, < Rn < e
2 (n + 1)! (n + 1)!

A questo punto è sufficiente imporre



xn+1
e < 5 · 10−5
(n + 1)! x= 1
2

cioè
e · 105 < 5 · 2n+1 (n + 1)!
Per soddisfare questa condizione, si prova per diversi valori di n via
via crescenti finchè non si ottiene il più piccolo valore che soddisfa
la condizione.

n 1 ... 4 5 6
n+1
5·2 (n + 1)! 40 ... 120 · 32 · 5 5 · 64 · 720 5 · 128 · 5040
Ora n = 6 è sufficiente per soddisfare la diseguaglianza, pertanto
nello sviluppo della formula di Taylor dovrò utilizzare 6 termini:
     
1 1 1 2 1 1 3 1 1 6 1
e = 1+ +
2 + +...+ = 1, 648719 ≈ 1, 6487
2 2 2! 2 3! 2 6!

Per verifica, e calcolata col calcolatore dà come risultato 1, 6487.

Esercizio: Determinare nello stesso modo il valore di ( 3 e)−1 con
5 cifre corrette.
Esercizio: Ripetere l’esercizio con altre funzioni a scelta.

19
Il sistema numerico del calcolatore

1.2 Il sistema numerico del calcolatore


1.2.1 Sistemi di numerazione
Tutti sappiamo che i calcolatori usano il sistema binario. Il proble-
ma è come passare dal nostro sistema di numerazione decimale a
quello binario. Ad esempio dobbiamo essere in grado di determinare
una sequenza binaria corrispondente al numero decimale (17.03)10 .
Per rispondere a questo problema consideriamo il significato dei
sistemi di numerazioni.
In quello latino, che usava la notazione addizionale, il significato di
ciascun simbolo dipende da quelli che gli stanno intorno, pertanto
il numero XIX romano corrisponde a 10 + (10 − 1).
Nella notazione araba le cifre hanno un significato che dipende dalla
posizione che occupano nel numero stesso, perchè il numero è scritto
tramite potenze decrescenti della base del sistema di numerazione,
per cui

1784.3 = 1 × 103 + 7 × 102 + 8 × 101 + 4 × 100 + 3 × 10−1

Notiamo altresı̀ che nel sistema decimale le cifre disponibili sono 10,
tante quante la base del sistema, ma vanno da zero al numero imme-
diatamente precedente la base, cioè {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. Una
cosa analoga vale nel sistema binario in cui le cifre sono pertanto
{0, 1}.

1.2.2 Cambiamenti di base di numerazione


I problemi ora sono due: tradurre dal decimale al binario e vicever-
sa. Cominciamo ad esaminare i numeri interi, poi considereremo i
numeri frazionari. Il secondo problema è di facilissima risoluzione,
pensando alla definizione del sistema di numerazione posizionale,
per cui

(11010011)2 = 1 · 27 + 1 · 26 + 0 · 25 + 1 · 24 + 0 · 23 + 0 · 22 + 1 · 21 + 1 · 20

con il risultato di (211)10

20
Cambiamenti di base di numerazione

Ora esaminiamo il problema opposto, la traduzione in binario di un


numero espresso nel sistema decimale. A questo proposito vogliamo
determinare un algoritmo costruttivo.
Supponiamo di avere 6 oggetti

X X X X X X

Per contarli, avendo solo 0 e 1 a disposizione, osservo che quan-


do trovo una coppia non so come “contarla”, per cui la “elimino”
scrivendole sotto un altro segno.

X X X X X X
C C C

Alla fine non mi rimane nessun oggetto, ma posso contare nella


linea successiva i segni aggiuntivi che denotano le coppie incontrate,
avendo anche qui solo 0 e 1 a disposizione. Nuovamente ogni coppia
di segni C viene eliminata, segnandovi sotto un altro segno D.
Otteniamo pertanto

X X X X X X 0
C C C 1
D 1

Il procedimento può essere iterato finchè a un certo punto riuscirò


a contare il segno rimasto, che ovviamente non potrà essere più di
uno! I segni rimasti in ogni passo della procedura, cioè in ogni riga
della tabella, mi danno, iterativamente, il numero di oggetti presenti
nell’insieme, il numero di coppie, il numero di coppie di coppie, il
numero di coppie di coppie di coppie, e cosı̀ via. Pertanto passando
alla rappresentazione aritmetica ho 20 ·0+1·21 +1·22 = 0+2+4 = 6
oggetti. Ho ottenuto una rappresentazione in potenze di due, in
notazione standard devo andare da sinistra a destra per potenze
decrescenti di 2, per cui avrò 1 · 22 + 1 · 21 + 0 · 20 = (110)2 . Si può
ovviamente verificare che questo risultato è corretto per esercizio,
trasformando (110)2 in notazione decimale.

21
Il sistema numerico del calcolatore

Abbiamo pertanto trovato un algoritmo empirico che consiste nel


raggruppare gli oggetti a coppie, occorre ora tradurlo in forma arit-
metica facendo uso delle 4 operazioni. A questo scopo bisogna
derminare a quale di queste corrisponde il raggruppamento in sot-
toinsiemi. L’operazione corretta che permette il raggruppamento
degli oggetti in sottoinsiemi è la divisione, per ovvia esclusione delle
altre operazioni aritmetiche.
Pertanto dato un numero decimale, lo dividiamo iterativamente per
2, come segnavamo sopra le coppie, e poi le coppie di coppie e cosı̀
via, facendo operazioni tra interi e segnandoci a parte ad ogni passo
i resti interi:
6 : 2
3 0
1 ↑

1
1
0

Dal momento che a mano a mano che procediamo contiamo prima


gli oggetti, poi le coppie, poi le coppie di coppie e cosı̀ via, i resti
corrispondono a potenze crescenti di 2, per cui il risultato della
divisione si legge dal basso verso l’alto, ciò, come detto sopra, perchè
l’ordinamento naturale del sistema di numerazione corrisponde a
potenze decrescenti della base.
Esempio: Determinare l’equivalente binario di (73)10

73 : 2
1
36
0
18

0
9
1 ↑
4

0
2
0
1
1
0

Pertanto (73)10 = (1001001)2.

22
Cambiamenti di base di numerazione

Esempio: Determinare l’equivalente binario di (53)10

53 : 2
1
26
0
13
1
6

0
3
1
1

1
0

Pertanto (53)10 = (1101101)2. Verifica: (1101101)2 = 2 × 25 + 2 ×


24 + 2 × 22 + 2 × 20 = 32 + 16 + 4 + 1 = 53
Consideriamo ora i numeri decimali, notando che sono numeri ra-
zionali e quindi sono espressi dalle frazioni.
Di nuovo, passare dal binario al decimale è piuttosto semplice,

(.1101)2 = 1 × 2−1 + 1 × 2−2 + 0 × 2−3 + 1 × 2−4


1 1 1 1 8+4+1 13
= + +0× + = =
2 4 8 16 16 16
13
per cui (.1101)2 = 16 = (0.8125)10 .
Il problema, come per gli interi, è il passaggio dal decimale al bina-
rio. Nuovamente vogliamo un metodo costruttivo. Consideriamo il
problema concreto di rappresentare in binario (0.3)10 .
Occorre trovare un metodo pratico per la misura di questa frazione.
Le frazioni nella scuola elementare sono introdotte normalmente con
il modello classico della torta divisa in fette. Algoritmicamente, do-
vrò contare, anzichè le coppie come nel metodo per gli interi, il loro
equivalente frazionario, cioè le metà: posso pertanto raffrontare la
frazione con la metà della torta e dedurne che è minore di questa
metà. Iterando il processo e traducendo sotto forma di algoritmo,
detta f la frazione da misurare, trovo f < 12 . A questo punto, scar-
to la metà della torta che non contiene la fetta, ed essendo vuota mi
segno 0. Itero poi il procedimento confrontando la fetta “corrente”
con la metà di quanto rimasto, qui la metà della metà, cioè il quarto
di torta. Al passaggio successivo la frazione è superiore al quarto

23
Il sistema numerico del calcolatore

Figura 1.3: Frazione da misurare, rappresentata dalla fetta di torta


tratteggiata

di torta. Qui dovrò scartare il quarto di torta pieno, segnandomi


questa volta 1, e continuare con il rimanente della fetta, che non ho
ancora misurato. Iterando il procedimento grafico diventa impossi-
bile da seguire, ma per ovviare all’incoveniente possiamo tradurlo
in un procedimento algebrico. Osserviamo che chiederci se f > 12
significa domandarci se 2f > 1. Siccome 2 × 0.3 = 0.6 è inferiore
a 1, abbiamo segnato 0. Continuando, f > 41 equivale a 4f > 1 e
ancora abbiamo 4 × 0.3 = 1.2 e mi sono segnato 1. Evidentemente,
continuando, lavoro con la frazione F che rimane, cioè F = f − 14 ,
qui F = 0.2. Per calcolarla, osserviamo che 4F = 4f − 1 quindi
F = 41 (4f − 1) = 14 (1.2 − 1) = .24 = 0.05. Ne segue che 8F > 1
diventa 8 × 0.05 = 2 × 0.2 > 1 dove abbiamo messo in evidenza il
ruolo della frazione “corrente”, rimasta dal passo precedente, qui
0.2. Il risultato dà 0.4 che è inferiore a 1, per cui segnamo ancora
una volta 0. Dovrebbe essere chiaro ora che ogni volta che ci se-
gnamo il risultato, questo coincide con la parte intera del calcolo
con la frazione corrente 2F . La frazione corrente viene a sua volta
aggiornata tramite la differenza F ← 2F − 1, dove la freccia indica
il passaggio allo stadio successivo.
Traducendo questa procedura in un algoritmo aritmetico, dobbia-
mo estrarre la parte intera del risultato del raddoppio della frazione

24
Cambiamenti di base di numerazione

corrente, e continuare a lavorare con la parte frazionaria rimanente.


Osservando che la moltiplicazione per 2 corrisponde a una divisione
per 21 , evidentemente possiamo utilizzare lo stesso algoritmo usato
per la parte intera, questa volta non dividendo per la base del si-
stema numerico, ma per la base del sistema numerico frazionario,
1
2
appunto. Occorre però notare che in questo caso la progressione
nell’effettuare i calcoli procede verso frazioni via via più piccole,
cioè verso potenze decrescenti di 2, per cui l’insieme delle parti in-
tere costituiranno sı̀ i coefficienti dell’espansione di 0.3 in binario,
ma essendo associati a potenze decresenti, andranno letti dall’alto
in basso!
.3 : 12 = ×2
.6 0


1.2 1

.4 0
Nel calcolo, abbiamo interrotto la determinazione dei coefficienti
binari, per cui in questo caso non si può fare l’equivalenza del ri-
sultato binario con la frazione originale, l’unica verifica consiste nel
tradurre in decimale e osservare che il risultato della conversione
non deve mai eccedere la frazione originale: qui abbiamo 14 < 10 3
.
1
Osserviamo ora che cosa succede alla base frazionaria 2 del nostro
sistema di numerazione quando la convertiamo:
1
.1 : 2
= ×2
0
.2
0
.4

0
.8
1 ↓
1.6

1
1.2
0
.4
0
.8

A questo punto la sequenza si ripete! Abbiamo pertanto trova-


to (0.1)10 = (0.0001100)2 cioè un numero binario con espansione
infinita e periodica!

25
Il sistema numerico del calcolatore

Il risultato che (0.1)10 che è una frazione decimale finita equivale ad


una frazione binaria periodica infinita ha importanti conseguenze.
La rappresentazione nel calcolatore va terminata dopo un numero
di cifre fissato, in quanto la memoria è finita, ci sono solo n bit a
disposizione, ad esempio, non realisticamente, 8 bits.
A questo punto ci sono due modi possibili per realizzare quello che
chiamiamo “rounding”, cioè la trascrizione in memoria di macchina
del risultato: sono il troncamento e l’arrotondamento. Da notare
che ciò è fatto automaticamente dal computer, secondo come è stato
progettato, e l’utente non può influire su queste operazioni.
Il numero reale ottenuto, oppure il risultato di eventuali operazioni,
cade in un intervallo tra due numeri successivi rappresentabili in
macchina, ricordiamo infatti che l’insieme dei numeri in macchina
è discreto e non denso come R, come segue
1
0.00011010 ≥ = 0.00011001 | 100 > 0.00011001 .
10
L’operazione di troncamento consiste nell’associare a questo risul-
tato l’estremo sinistro dell’intervallo, mentre quella di arrotonda-
mento gli associa l’estremo più vicino.
Algoritmicamente, per troncamento il calcolatore prende solo i pri-
mi n bits, per l’arrotondamento guarda se il primo bit che deve tra-
scurare, l’n + 1-esimo, e se è 1 aggiunge uno al bit immediatamente
precedente, l’ultimo rappresentabile, l’n-esimo.
L’errore è sempre definito come valore vero - valore approssimato

E = v−a

ed ha quindi sempre un segno. Dall’espressione precedente provia-


mo a calcolarlo:

(0, 000110011001100...)2−(0, 00011001)2 = (0, 0000000010011001100...)2

Il risultato può essere interpretato osservandone i termini

0 · 2−1 + 0 · 2−2 + 0 · 2−3 + ... + 1 · 2−9 + 1 · 2−12 + 1 · 2−13


+1 · 2−16 + 1 · 2−17 + 1 · 2−20 + 1 · 2−21 .

26
Cambiamenti di base di numerazione

L’espressione è una serie di potenze sparse, ma per dare una regola-


rità posso riordinarla e pensare questa serie come somma delle due
serie
(2−9 + 2−13 + 2−17 + ...) + (2−12 + 2−16 + ...)
che sono serie geometriche con ragione a = 2−4 . Allora l’errore é la
somma di due serie geometriche di ragione 2−4 , la prima che parte
con il primo bit nonzero, cioè da 2−9 , e la seconda dal secondo, cioè
2−12 . Le loro somme sono pertanto calcolabili, come segue.
Ricordiamo come per calcolare la somma della serie geometrica
P n
x . Si procede prendendone una ridotta, con un numero finito di
termini, qui per esempio
S8 = 1 + x + x2 + x3 + x4 + ... + x8
e moltiplicando S8 per x ottengo
xS8 = x + x2 + x3 + x4 + ... + x8 + x9
e sottraendo membro a membro,
S8 − S8 x = (1 − x)S8 = 1 − x9 ,
e più in generale,
1 − xN +1
SN = .
1−x
Se |x| < 1 passando al limite per N → ∞ si ha xN +1 → 0
1
S∞ = lim Sn = .
N →∞ 1−x
1
Nel nostro caso, l’errore di ”rounding” risulta S = 1−a = 1−21 −4 =
0.002, per cui con 8 bits, (0.1)10 sarebbe rappresentato in macchina
come 0.098.
Notiamo anche che l’errore non può mai essere calcolato esattamen-
te perchè ciò implica lavorare con infinite cifre, oppure fare tutti i
calcoli a mano.
Possiamo quindi enunciare l’unico assioma dell’analisi numerica.
“Assioma”: l’errore non è mai noto in forma esatta!
Lo possiamo solo stimare da disuguaglianze del tipo |E| < t0 .

27

You might also like