Sei sulla pagina 1di 21

A

Enza Pellegrino
Elisabetta Santi
Calcolo numerico
Metodi ed applicazioni
usando Matlab
Copyright © MMXIV
ARACNE editrice S.r.l.

www.aracneeditrice.it
info@aracneeditrice.it

via Raffaele Garofalo, /A–B


 Roma
() 

 ----

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: settembre 


Indice

PREFAZIONE............................................................................................ 9

ALCUNI CONCETTI DI BASE DEL CALCOLO NUMERICO ............................. 11

1.1 INTRODUZIONE ........................................................................................ 11


1.2 I SISTEMI DI NUMERAZIONE ........................................................................ 15
1.3 LA RAPPRESENTAZIONE DEI NUMERI SUL CALCOLATORE................................... 16
1.4 ARROTONDAMENTO DI UN NUMERO REALE .................................................. 21
1.5 OPERAZIONI DI MACCHINA IN ARITMETICA FLOATING POINT ............................ 25
1.6 ERRORI NELLA RISOLUZIONE DEI PROBLEMI ................................................... 29

COMPLEMENTI DI ALGEBRA LINEARE ..................................................... 47

2.1 SPAZI VETTORIALI ..................................................................................... 47


2.2 I VETTORI DI n . LE NORME VETTORIALI ..................................................... 53
2.3 LE MATRICI. LE NORME DI MATRICI .............................................................. 56
2.4 ALCUNI RICHIAMI SU AUTOVALORI ED AUTOVETTORI ...................................... 67
2.5 MATRICI CON CARATTERISTICHE PARTICOLARI ............................................... 78

SISTEMI LINEARI.................................................................................... 83

3.1 CONCETTI GENERALI ................................................................................. 83


3.2 CONDIZIONAMENTO DI UN SISTEMA LINEARE ................................................ 88
3.3 METODI DIRETTI: METODO DI GAUSS .......................................................... 96
3.4 FATTORIZZAZIONE DI UNA MATRICE ........................................................... 105
3.4.1 Fattorizzazione di Gauss: A = L U ................................................ 106
3.4.2 Fattorizzazione di Cholesky ............................................................ 110
3.4.3 Fattorizzazione Q  R ..................................................................... 112
3.4.4 Fattorizzazione SVD ........................................................................ 114
3.5 RAFFINAMENTO ITERATIVO ...................................................................... 118

5
66 Indice
Indice
Indice

3.6 SISTEMI RETTANGOLARI .......................................................................... 121


3.7 GLI OPERATORI MATLAB \ , / ................................................................ 131
3.8 METODI ITERATIVI (INDIRETTI) DI TIPO PICARD ............................................ 134
3.8.1 Generalità....................................................................................... 134
3.8.2 Criteri d’arresto .............................................................................. 139
3.8.3 I metodi di Jacobi, Gauss-Seidel e le loro generalizzazioni ............ 143
3.8.4 Altri risultati di convergenza .......................................................... 147

EQUAZIONI E SISTEMI NON LINEARI .....................................................155

4.1 CONCETTI GENERALI. CASO MONODIMENSIONALE ....................................... 155


4.2 APPROSSIMAZIONE DELLE SOLUZIONI. ORDINE DI CONVERGENZA ................... 165
4.3 METODO DELLA BISEZIONE (O DI BIPARTIZIONE O DICOTOMICO) .................... 167
4.4 METODI ITERATIVI AD UN PUNTO (O METODI DI PUNTO FISSO)....................... 171
4.5 METODO DI NEWTON O DELLE TANGENTI .................................................. 189
4.6 RADICI MULTIPLE. RADICI VICINE .............................................................. 201
4.6.1 Radici multiple................................................................................ 201
4.6.2 Radici molto vicine ......................................................................... 203
4.7 CRITERI DI ARRESTO. STIMA DELL’ORDINE E DELLA COSTANTE ASINTOTICA ....... 207
4.8 LE FUNZIONI MATLAB FZERO E ROOTS .................................................... 212
4.8.1 La function fzero ............................................................................ 212
4.8.2 La function roots ed altre function relative ai polinomi ............... 215
4.9 SISTEMI NON LINEARI ............................................................................. 218
4.9.1 Metodo del punto fisso .................................................................. 218
4.9.2 Metodo di Newton ......................................................................... 226
4.10 LA FUNZIONE DI MATLAB FSOLVE............................................................ 231

PROBLEMI DIFFERENZIALI DI CAUCHY ..................................................235

5.1 INTRODUZIONE ...................................................................................... 235


5.2 IL METODO DI EULERO ............................................................................ 254
5.3 GENERALITÀ SUI METODI NUMERICI .......................................................... 256
5.4 ERRORI DI TRONCAMENTO, CONSISTENZA, CONVERGENZA ............................ 263
5.5 I METODI DI RUNGE-KUTTA ESPLICITI A R STADI ........................................... 268
5.6 CONVERGENZA DEI METODI ONE-STEP ESPLICITI. ......................................... 273
5.7 CENNO SUI METODI DI RUNGE-KUTTA IMPLICITI A R STADI ............................ 285
Indice
Indice
Indice 77

5.8 METODI MULTISTEP LINEARI..................................................................... 286


5.9 ANALISI DEI METODI MULTISTEP................................................................ 295
5.9.1 Consistenza ..................................................................................... 296
5.9.2 Zero stabilità ................................................................................... 300
5.9.3 Propagazione dell’errore. Assoluta stabilità .................................. 304
5.10 METODI DI TIPO PREDICTOR-CORRECTOR ................................................. 310
5.11 PROBLEMI STIFF ................................................................................... 315
5.12 ODE SUITE ........................................................................................... 321

APPROSSIMAZIONE DI DATI E FUNZIONI .............................................. 329

6.1 INTRODUZIONE ...................................................................................... 329


6.2 INTERPOLAZIONE POLINOMIALE ................................................................ 333
6.3 ALCUNE PROPRIETÀ DELLE DIFFERENZE DIVISE ............................................. 343
6.4 QUESTIONI NUMERICHE ED ALGORITMI ...................................................... 347
6.5 L’ERRORE NELL’INTERPOLAZIONE POLINOMIALE ........................................... 351
6.6 FUNZIONI SPLINE INTERPOLANTI ............................................................... 360
6.7 LE FUNCTION MATLAB PER L’APPROSSIMAZIONE DI DATI E FUNZIONI ............. 371
6.8 APPROSSIMAZIONE DISCRETA AI MINIMI QUADRATI ...................................... 377
6.9 APPROSSIMAZIONE POLINOMIALE AI MINIMI QUADRATI ................................ 382

BIBLIOGRAFIA ..................................................................................... 391


Prefazione

Il Calcolo Numerico è quel ramo della Matematica che sviluppa,


analizza ed applica metodi atti a risolvere i modelli matematici propo-
sti nei tempi desiderati e con la precisione richiesta. La simulazione
matematica è divenuta infatti, nel corso degli ultimi anni, strumento
indispensabile per lo studio delle scienze applicate ed in particolare di
fenomeni fisici, a volte sostituendo la stessa sperimentazione fisica,
con notevoli vantaggi in termini di sicurezza, costi e tempi.
La risoluzione dei modelli non può prescindere dall’uso di metodi
di calcolo numerico, anche quando è nota la soluzione analitica, so-
prattutto quando il modello è complicato e la rappresentazione della
soluzione risulta inutilizzabile o troppo costosa in termini di operazio-
ni aritmetiche.
Il testo è rivolto a studenti delle lauree in Ingegneria, Matematica e
Fisica che affrontano per la prima volta lo studio del Calcolo Numeri-
co. Vengono affrontate le problematiche che ispirano la costruzione
dei metodi numerici di base che sono spesso passi intermedi nella ri-
soluzione di modelli più complessi; si esaminano le proprietà di stabi-
lità ed accuratezza degli algoritmi, i vantaggi e gli svantaggi di un me-
todo.
Ogni capitolo è corredato di esempi ed esercizi, atti a chiarire la
teoria trattata ed a permettere allo studente di acquisire le conoscenze
necessarie per decidere sulle metodologie numeriche da utilizzare. Es-
si vengono risolti utilizzando il programma MATLAB che presenta
semplicità di approccio ed ampia diffusione.

9
10 Prefazione

Il contenuto del testo si sviluppa su sei capitoli. Il primo è dedicato


all’introduzione dei concetti generali e degli elementi di base
dell’aritmetica discreta; il secondo è dedicato ai richiami di algebra li-
neare. I successivi capitoli sono dedicati alla risoluzione di sistemi li-
neari (Capitolo III), di equazioni e sistemi non lineari (Capitolo IV), di
problemi differenziali di Cauchy alle derivate ordinarie (Capitolo V);
il Capitolo VI, infine, tratta dell’approssimazione di dati e funzioni.
Chi desidera conoscere il codice MATLAB delle function utilizzate
nei vari capitoli del testo, può rivolgere la richiesta ad uno dei seguen-
ti indirizzi:
enza.pellegrino@univaq.it; elisabetta.santi@univaq.it.

L’Aquila, luglio 2014


Enza Pellegrino
Elisabetta Santi
Capitolo I

Alcuni concetti di base del Calcolo Numerico

Desideriamo porre, in questo capitolo le basi per poter comprende-


re meglio le potenzialità del Calcolo Numerico, conoscere come ana-
lizzare i risultati evidenziandone soprattutto gli errori, per capire co-
me evitarli e, se ciò non fosse possibile, come ridurli al minimo.

1.1 Introduzione

Molti problemi delle Scienze Applicate, dalla Fisica all’Economia


alla Medicina, possono essere affrontati e risolti attraverso lo studio
del corrispondente modello matematico che in generale si ottiene dan-
do una formulazione matematica del problema reale mediante oppor-
tune procedure d’astrazione e semplificazione.

Modello matematico è una relazione in termini logico-matematici


tra le variabili caratteristiche del problema in esame.

La risoluzione del problema matematico così ottenuto, fornirà in


generale, le informazioni riguardanti l’evoluzione del fenomeno dopo
avere effettuato una validazione del risultato ovvero un confronto con
la realtà.

Un operatore di Scienze Applicate procederà secondo il seguente


schema:

11
12 Calcolo Numerico: metodi ed applicazioni usando Matlab

Come si può osservare dallo schema, il Calcolo Numerico (o Ana-


lisi Numerica o Calcolo Scientifico) interviene nella risoluzione e
nell’esame della soluzione ottenuta.
Possiamo dire che:
Obiettivo del CALCOLO NUMERICO è trovare gli algoritmi che
risolvono un problema matematico nel minor tempo possibile e con la
massima accuratezza.

La necessità di operare in tal modo è determinata dal fatto che mol-


to spesso i problemi da trattare non possono essere risolti con metodi
esclusivamente analitici; a volte poi, pur possedendo la soluzione in
forma analitica essa è difficile da trattare in ulteriori operazioni quali
ad esempio l’integrazione, e molto spesso inoltre, ha notevole impor-
tanza la conoscenza dei valori numerici che essa assume per dati asse-
gnati.

Consideriamo i seguenti due esempi legati alla dinamica di una po-


polazione.
Un semplice modello di crescita di una popolazione può essere ot-
tenuto considerando tale crescita dipendente dal numero di nascite n(t)
e dal numero delle morti m(t), per unità di tempo.
Per semplificare ulteriormente, indicando con y(t) il numero di in-
dividui della popolazione al tempo t, supponiamo che n(t) e m(t) siano
proporzionali ad esso, ossia n(t) =  y(t), m(t) =  y(t) con  e  va-
lori costanti chiamati rispettivamente tasso di natalità e di mortalità.
Alcuni concetti di base del Calcolo Numerico 13
Alcuni concetti di base del Calcolo Numerico 13

Misurando quindi con y  t  la variazione del numero di individui-


nell’unità di tempo, otteniamo l’equazione differenziale lineare ed
omogenea proposta da Malthus nel 1798
y  t       y  t    y  t  ,      è detto tasso di crescita.

Si può considerare quindi, il seguente problema: conoscendo il nu-


mero di individui y(0) = y0 , al tempo t = 0, e sapendo che al tempo t
= t , tale numero è diventato y  t  , si individui il valore del tasso di
crescita  .
La soluzione si ottiene allora, risolvendo il problema di Cauchy
 y '(t )   y(t )
(1.1.1)  ;
 y (0)  y0 y0  0
essa coincide con la funzione y(t )  y0et .
Il richiesto valore di  si determina pertanto, risolvendo
l’equazione y  t   y0e la cui soluzione è:
t

1  yt  
(1.1.2)   ln  .
t  y0 
La soluzione del problema in questo caso, è ottenuta nella forma
chiusa (analitica) (1.1.2).
Si supponga ora, che la popolazione non sia isolata ma sia soggetta
a fenomeni di immigrazione od emigrazione nell’unità di tempo, la
variazione y  t  soddisfa quindi la relazione y(t )  n(t )  m(t ) s(t ),
dove s(t) indica in questo caso, il numero di individui che si aggiun-
gono nell’unità di tempo.
Consideriamo allora un problema analogo al precedente ma relativo
al diverso problema di Cauchy:
 y '(t )   y (t ) s(t )
(1.1.3)  .
 y (0)  y0 y0  0
Supponiamo anche, s(t) = d; il valore di s(t) è perciò costante.

La soluzione del problema (1.1.3) è:


14 Calcolo Numerico: metodi ed applicazioni usando Matlab
14 Calcolo Numerico: metodi ed applicazioni usando Matlab

 d   d d
 
 
y(t )  et   et  1  y0    y0   et 
   
e per determinare  , si dovrà risolvere l’equazione non lineare
y  t    y0  d  e t  d la cui soluzione, diversamente dal caso pre-
  
cedente, non può essere ottenuta in forma chiusa, come combinazione
di funzioni elementari.
Da questo semplice esempio si deduce quindi la necessità di utiliz-
zare opportune procedure basate su tecniche che risultano efficaci in
più situazioni, come ad esempio i procedimenti iterativi.
Dal momento che uno stesso problema può essere risolto con più
metodi numerici, la scelta di un metodo sarà dettata sia dalle sue carat-
teristiche (efficienza, velocità di convergenza, ecc.), che dagli obiettivi
che si vogliono raggiungere (approssimazione più o meno raffinata,
costi computazionali ecc.) ed è affidata anche all’abilità ed esperienza
di chi deve risolvere il problema.
Tale scelta è quindi il risultato di:
un’attenta analisi del problema;
un’analisi comparativa dei diversi metodi numerici disponibili,
sulla base del loro costo e della loro accuratezza.

Ai metodi numerici come si è già detto, si associano gli algoritmi:


descrizioni complete e ben definite di operazioni logiche ed aritmeti-
che che consentono di ottenere in un numero finito di passi i risultati y
dai dati x.

Infine, componente imprescindibile di un progetto di algoritmo è la


disponibilità di un calcolatore e l’uso di un linguaggio di programma-
zione.
In ciascuna delle fasi che conducono dal problema reale alla deter-
minazione dei risultati, si introducono errori che possono essere classi-
ficati e, per quanto possibile, valutati, ridotti o tenuti in debito conto
all’atto della validazione del modello (valutazione della sua attendibi-
lità).
Prima di intraprendere la loro trattazione è conveniente premettere
dei richiami sui sistemi di numerazione e rappresentazione dei numeri.
Alcuni concetti di base del Calcolo Numerico 15
Alcuni concetti di base del Calcolo Numerico 15

1.2 I sistemi di numerazione

Un qualsiasi numero intero B > 1 può essere assunto come base di


un Sistema di Numerazione S, che utilizza quindi i B simboli 0, 1, ...,
B  1.
Anche se dal punto di vista astratto tutte le basi sono tra loro equi-
valenti, tre sono le basi generalmente usate: base 2 o binaria, base 10
o decimale, base 16 o esadecimale. Potremo quindi assumere che la
base B sia un numero pari.
Nel sistema binario B = 2, si utilizzano i simboli 0, 1 in quello de-
cimale B =10, si utilizzano i simboli 0, 1,...,9; in generale, se B  11, si
utilizzano numeri e lettere. Se ad esempio B = 16, (sistema esadecima-
le) si utilizzano 0, 1, ..., 9, A, B, C, D, E, F.

In S ogni numero reale x ha la forma detta rappresentazione posi-


zionale
(1.2.1) x   cncn1...c0 .c1c2 ..., cn  0
il punto che compare tra c0 e c1 è detto punto decimale se la base è
10, punto binario se la base è 2.
La (1.2.1) si può scrivere nella forma seguente:
x    cn B n  cn 1B n 1  ...  c0 B 0  c1B 1  c2 B 2  ...
(1.2.2) 
  B n  cn i B i
i 0

e gli interi ci , con 0  ci  B  1, sono detti Cifre della Rappresenta-


zione.
In generale x   0 , eccetto il caso in cui è presente una suc-
cessione di infinite cifre ak  B  1, k  1, per x si ha un’unica rap-
presentazione in S nella forma detta normalizzata (il primo coefficien-
te della somma è diverso da 0):

(1.2.3) x  sign( x) B e  ak B  k
k 1
16 Calcolo Numerico: metodi ed applicazioni usando Matlab
16 Calcolo Numerico: metodi ed applicazioni usando Matlab

con e  intero, 0  a1  B  1 , e 0  ak  B  1, k  2.

Nella (1.2.3) la serie a B
k 1
k
k
, è una serie convergente. Le sue ridotte
n
Sn   ak B  k , per n  1, costituiscono infatti, una successione
k 1

Sn n0 non decrescente e superiormente limitata, e quindi conver-


gente.
Per l’ipotesi di positività dei coefficienti, si verifica che Sn  Sn1
n 1 n
infatti: Sn1   ak B  k   ak B  k  an1B ( n1)  Sn .
k 1 k 1

Per verificare la limitatezza basta considerare che:


n
n n
1 B
Sn  a B k
k
 ( B  1) B k
( B  1) B
 1.
1

1
 1 B
n

k 1 k 1 1  B
Il numero verso cui converge la serie B  ak B è inoltre positivo
e k

k 1
essendo a1  1 .

Osservazioni
1 - La serie di tipo (1.2.3) si riduce ad una somma finita se risulta
ak  0, per k  n , in questo caso il numero x rappresentato, ha un
numero finito di cifre.

2 - Considerando per semplicità, un numero reale x > 0, esiste un uni-


co esponente e  tale che Be1  x  Be .

1.3 La rappresentazione dei numeri sul calcolatore

Ogni operazione effettuata su calcolatore è affetta da errori di arro-


tondamento (round off).
Essi sono dovuti al fatto che su un calcolatore può essere rappre-
sentato solo un sottoinsieme finito dell’insieme dei numeri reali.
Alcuni concetti di base del Calcolo Numerico 17
Alcuni concetti di base del Calcolo Numerico 17

Ma questo non delegittima la rappresentazione dei numeri reali su


calcolatore (dunque con un numero finito di cifre) perché tutti i nume-
ri reali si possono approssimare bene con numeri aventi una rappre-
sentazione finita.
Se si fissa infatti la base B, vale la seguente proprietà
(1.3.1)   0, x  ,  y : x  y  
dove y ha rappresentazione posizionale finita.
Un numero reale x è infatti, sempre compreso tra due numeri ra-
zionali cioè:
a a a a a a 1
A  p.i.  1  22   nn  x  p.i.  1  22   n n  C ,
B B B B B B

si è indicata con p.i. la parte intera del numero.


Fissato quindi   0 , si può scegliere n in modo che C  A   e la
relazione (1.3.1) è pertanto dimostrata.
Ricordiamo anche che più piccola è la base, più lunga è la stringa
dei caratteri necessari per rappresentare lo stesso numero.
Ad esempio x = 1/10 si scrive  0.110 , nella base 2 diventa
 0.000110011....2 ; il numero x ha quindi un numero finito di cifre in
base 10 ma ne ha infinite (e periodiche) nella base binaria.
Per ogni numero reale viene resa disponibile nel calcolatore una
parola costituita da un numero finito N di bit (binary digit).
Il modo più intuitivo per utilizzare le N posizioni di memoria per la
rappresentazione di un numero x  0 sarebbe quello di fissarne una
per il segno del numero, N – k – 1 per la parte intera, e k per le cifre
dopo il punto cioè:
(1.3.2) x  sign  x   aN 2 aN 3 ak .ak 1 a0  .
Un insieme di numeri di questo tipo è detto sistema dei numeri a
virgola fissa o fixed point.
L’uso della virgola fissa limita però il valore del numero massimo e
minimo rappresentabili sul calcolatore a meno di non avere N molto
grande e quindi viene limitato alla rappresentazione dei numeri interi.
Per superare l’inconveniente suddetto, si utilizza per un numero
reale non nullo, la rappresentazione in virgola mobile o floating point
18 Calcolo Numerico: metodi ed applicazioni usando Matlab
18 Calcolo Numerico: metodi ed applicazioni usando Matlab

data da:
(1.3.3) x  sign  x  0.a1a2 at  B  sign  x  m B ,
e e t

con e, numero intero, detto esponente; il numero naturale t, fornisce il


numero consentito di cifre significative ai , 0  ai  B  1, i  1,..., t ,
con a1  0 (mantissa normalizzata).
Il numero intero m è detto infatti mantissa; esso è definito da:
m : a1a2 at  a1Bt 1  a2 Bt 2  at B0 .
t 1
1  Bt
Risulta allora: B  m   B  1  B   B  1
t 1 k
 Bt  1 .
k 0 1 B
Se non considerassimo la mantissa normalizzata, non avremmo
un’unica rappresentazione per ogni numero reale, caratteristica impor-
tante per evitare qualsiasi ambiguità.
Ad esempio, nella base B = 10, supponendo t = 4, il numero 1 po-
trebbe avere le seguenti rappresentazioni: 0.1000 101 , 0.0100 102 ,
0.0010 103 , 0.0001104 ed altre ancora.

Nella rappresentazione in virgola mobile, le N posizioni di memo-


ria, che costituiscono una parola, vengono quindi distribuite tra il se-
gno (una posizione), le cifre significative (t posizioni), e le cifre
dell’esponente (N – t – 1 posizioni).
Il numero 0 che non può esprimersi nella forma (1.3.3) ha, pertan-
to, una rappresentazione a parte.

Tipicamente sui calcolatori sono disponibili due formati per la rap-


presentazione floating point di un numero: la semplice precisione (N =
32 bit) e la doppia precisione (N = 64 bit). Il MATLAB lavora in
doppia precisione e base B=2 ma è in grado di lavorare in singola pre-
cisione utilizzando comandi opportuni.

Rappresentazione floating point in semplice precisione N= 32 bit

s e ( 8 bit) m (23 bit)


Alcuni concetti di base del Calcolo Numerico 19
Alcuni concetti di base del Calcolo Numerico 19

Rappresentazione floating point in doppia precisione N = 64 bit

s e (11 bit) m (52 bit)

Denotiamo con F(B, t, L, U) l’insieme dei numeri macchina (o nu-


meri floating point), con base B  2 e t cifre significative; si ha inol-
tre 0  ai  B  1, i  1,..., t , a1  0, esponente L  e  U , dove
L  0, U  0.
Tale insieme è definito da:
 t

      ai Bi 
s e
(1.3.4) F B , t , L, U : 0  x  : x  1 B
 i 1 
dove si è indicato con  1 , s  0,1 il segno di x.
s

Con semplici passaggi si trova che il più piccolo numero positivo


nell’insieme dei numeri macchina è xmin  B L B 1  B L1 , il più grande
t
è xmax  BU  B  1B i  BU 1  B t  .
i 1

N. B. Volendo valutare quest’ultima quantità dovremmo scrivere


BBU 1 1  B t  , questo per evitare la situazione di overflow che si
avrebbe calcolando invece la quantità BU che verrebbe scritta in
mantissa normalizzata, BU  0.1BU 1 .

I valori estremi relativamente a MATLAB, si ottengono digitando


rispettivamente:
realmin e si ottiene la risposta: ans = 2.2251e-308,
realmax la risposta in questo caso è: ans = 1.7977e+308.
Naturalmente ogni numero positivo in F ha il suo corrispondente
negativo ancora contenuto in F.
Calcoliamo allora la cardinalità dell’insieme F, cioè il numero de-
gli elementi in esso contenuti, risulta:
(1.3.5) card  F   2  B  1 B U  L 1 1,
t 1
20 Calcolo Numerico: metodi ed applicazioni usando Matlab

essendo  B  1 B le possibili configurazioni della mantissa, (U – L


t 1

+1) le possibili configurazioni dell’esponente; compare il fattore 2


perché ci sono i numeri positivi e negativi, ed infine va aggiunto 1 per
lo zero.

N. B. Il Matlab lavora di default in doppia precisione (t = 52), in


base binaria, con L=  1021 e U=1024, cioè usa l’insieme
F  2,52, 1021,1024 e visualizza i risultati in formato decimale,
F 10,16, 308, 308 , cioè con 16 cifre significative.

Esempio 1.3.1 Si determinino i numeri positivi contenuti


nell’insieme F(2, 3,  1, 2): B = 2, t = 3, L =  1, U = 2.

Nella Figura 1.3.1 sono visualizzati i punti corrispondenti ai valori


trovati per l’insieme considerato al fine di evidenziarne la distribuzio-
ne.
-0.2

0.2
0 0.5 1 1.5 2 2.5 3 3.5 4

Figura 1.3.1 Distribuzione dei valori positivi di F sulla retta reale

Tali numeri sono complessivamente  2 1 231  2  1  1  16 , il

numero più piccolo è 211 


1
4
7
ed il più grande è 22 1  23  .
2
 
Calcoliamo tutti i numeri positivi contenuti in F. Essi sono:
Alcuni concetti di base del Calcolo Numerico 21
Alcuni concetti di base del Calcolo Numerico 21

7 5
.111 22  , .110  22  3, .101 22  , .100  22  2,
2 2
7 3 5
.111 21  , .110  21  , .101 21  , .100  21  1,
4 2 4
7 3 5 1
.111 20  , .110  20  , .101 20  , .100  20  ,
8 4 8 2
7 3 5 1
.111 21  , .110  21  , .101 21  , .100  21  .
16 8 16 4

1.4 Arrotondamento di un numero reale

Su un calcolatore è quindi disponibile solo l’insieme discreto F(B,


t, L, U ) che è un sottoinsieme di ; questo pone alcuni problemi pra-
tici, primo fra tutti quello della rappresentazione interna di un generi-
co numero reale x e delle conseguenze nell’esecuzione delle operazio-
ni. Se xF (B, t, L, U ) si pone allora il problema di associare, in modo
adeguato, a x un numero macchina che indichiamo con fl  x  .
Supponiamo per semplicità x > 0 (analoghi risultati si hanno, ov-
viamente, se x < 0), e B numero pari (ipotesi verificata per le basi uti-
lizzate in questo contesto). Si possono verificare le seguenti situazioni
una volta che si sia scritto x nella forma floating point (1.2.3):
a) l’esponente e, U]. Possiamo distinguere due casi:
a1  e < L situazione di underflow. Solitamente si assume come
valore approssimato del numero x il valore zero. In generale
viene segnalata una warning ma il calcolo prosegue.
a2  e > U situazione di overflow. Tale situazione viene segna-
lata ed il calcolo si arresta.
b) e   L,U  ma xF (B, t, L, U) perché le cifre ai , con i > t, non
sono tutte nulle.
Allora, l’approssimazione di x con il numero fl  x   F (B, t, L, U)
può essere effettuata mediante due procedimenti: