7/15/2019 Metodi Numerici
1/294
Universit di Torino
QUADERNI DIDATTICIdel
Dipartimento di Matematica G. Peano
Quaderno # 47 Settembre 2010
MARIA GARETTO
Metodi Numerici
Corso di Laurea Magistrale in Informatica
A.A. 2010/2011
7/15/2019 Metodi Numerici
2/294
7/15/2019 Metodi Numerici
3/294
A Irene
7/15/2019 Metodi Numerici
4/294
7/15/2019 Metodi Numerici
5/294
Prefazione
Dipartimento di Matematica
i
Prefazione
In questo quaderno sono state raccolte le lezioni del corso di Metodi Numerici per il Corso di
Laurea Magistrale in Informatica presso lUniversit di Torino.
Obiettivo del testo di fornire unintroduzione teorica ai principali metodi numerici per risolvere
problemi di algebra lineare numerica, interpolazione e approssimazione, integrazione e equazioni
differenziali; ogni argomento esaminato negli aspetti teorici accompagnato da numerosi esempi
svolti nei dettagli, in modo da consentire agli studenti di acquisire la capacit di applicare in modo
corretto i metodi numerici trattati.
Il corso di Metodi Numerici prevede unattivit di laboratorio in cui viene utilizzato il software
scientifico Matlab, con il quale pu essere ulteriormente approfondito ogni aspetto applicativo dei
metodi illustrati; per alcuni di essi sono riportati nel testo gli algoritmi in pseudocodifica, utili come
suggerimento agli studenti per il lavoro di laboratorio.
I grafici presentati in questo testo sono stati realizzati con Matlab.
Maria Garetto
Dipartimento di Matematica
Universit di Torino
Torino, settembre 2010
7/15/2019 Metodi Numerici
6/294
ii M. Garetto Metodi Numerici
Universit di Torino
7/15/2019 Metodi Numerici
7/294
M. Garetto - Statistica
Quaderni Didattici del Dipartimento di Matematica
iii
Indice
Capitolo 1 Nozioni introduttive 1
1.1 Modelli matematici 1
1.2 Rappresentazione dei numeri e sistemi numerici 3
1.3 Rappresentazione dei numeri in floating point 5
1.4 Troncamento e arrotondamento 8
1.5 Errore assoluto, errore relativo 10
1.6 Aritmetica floating point 12
1.7 Generazione degli errori nel computer 15
1.7.1 Problemi del calcolo con i numeri reali 15
1.7.2 Cancellazione numerica 17
1.7.3 Calcolo del valore di una funzione 18
1.7.4 Discretizzazione 191.7.5 Iterazione 20
1.8 Tipi di errore 21
1.9 Propagazione degli errori 21
1.10 Problemi mal condizionati 22
1.11 Algoritmi instabili 24
1.12 Efficienza computazionale 29
1.13 Codifica degli algoritmi 31
Capitolo 2 Algebra lineare numerica 35
2.1 Introduzione 35
2.2 Operazioni fra vettori 35
2.3 Operazioni fra matrici 372.4 Matrice trasposta 41
2.5 Determinante 42
2.6 Matrice inversa 43
2.7 Norme di vettori e matrici 45
2.8 Classificazione delle matrici 46
2.9 Matrici speciali 47
2.10 Soluzione di sistemi lineari: definizioni e propriet 49
2.11 Metodi numerici per la soluzione di sistemi lineari 53
2.12 Sorgenti di errore 54
2.13 Condizionamento di un sistema lineare 54
2.14 Metodi diretti 58
2.15 Metodo di eliminazione di Gauss 622.16 Metodo di eliminazione di Gauss con pivoting 72
2.17 Calcolo del determinante 78
2.18 Calcolo della matrice inversa 79
2.19 Fattorizzazione triangolare di una matrice 81
2.20 Matrici di tipo particolare 93
2.21 Metodi iterativi 94
2.22 Metodo iterativo di Jacobi 95
2.23 Metodo iterativo di Gauss-Seidel 101
2.24 Autovalori e autovettori 108
2.25 Localizzazione degli autovalori 120
2.26 Metodi numerici per il calcolo degli autovalori 125
2.27 Metodo delle potenze 126
7/15/2019 Metodi Numerici
8/294
Indice
Universit di Torino
iv
Capitolo 3 Interpolazione e approssimazione 133
3.1 Introduzione 133
3.2 Interpolazione polinomiale. Formula di interpolazione di Lagrange 134
3.3 Errore per la formula di interpolazione di Lagrange 139
3.4 Formula di interpolazione lineare 1423.5 Formula di interpolazione di Newton 145
3.6 Polinomi di Chebyshev 151
3.7 Convergenza delle formule di interpolazione 155
3.8 Interpolazione con funzioni polinomiali a tratti 157
3.9 Interpolazione trigonometrica 170
3.10 Metodo dei minimi quadrati 176
3.11 Regressione lineare 177
3.12 Regressione polinomiale 183
3.13 Metodi di linearizzazione 185
Capitolo 4 Integrazione numerica 199
4.1 Introduzione 1994.2 Formule di quadratura di tipo interpolatorio 200
4.3 Formule di quadratura di Newton-Cotes di tipo chiuso 201
4.4 Formula dei trapezi 202
4.5 Formula di Simpson 203
4.6 Formula di Simpson8
3204
4.7 Formule di quadratura composte 209
4.8 Formule di quadratura di Newton-Cotes di tipo aperto 218
4.9 Formula del punto medio composta 220
4.10 Formule di quadratura gaussiane 223
4.11 Metodo di estrapolazione di Richardson 234
Capitolo 5 Equazioni differenziali ordinarie 239
5.1 Introduzione 239
5.2 Condizionamento di unequazione differenziale 242
5.3 Metodi numerici per la soluzione di equazioni differenziali 247
5.4 Metodo di Eulero 248
5.5 Metodi di Runge-Kutta 259
5.6 Metodi di Runge-Kutta di ordine due 260
5.7 Metodo di Runge-Kutta di ordine quattro 267
5.8 Metodi multistep 272
Bibliografia 277Formulario F-1
7/15/2019 Metodi Numerici
9/294
Capitolo 1 Nozioni introduttive
Dipartimento di Matematica
1
1. Nozioni introduttive
1.1 Modelli matematici
La matematica uno strumento per modellizzare il mondo reale: in forma schematica un modello
la rappresentazione di un sistema o di un processo, ottenuta sostituendo con semplificazioni,
astrazioni e analogie, al fenomeno reale un fenomeno in un campo pi familiare.
In particolare, in un modello matematico tale rappresentazione fatta in termini di variabili,
parametri e relazioni funzionali, che definiscono un problema matematico.
In ogni settore scientifico o tecnologico, i modelli matematici che approssimano levolversi
dellevento oggetto di studio consentono di simulare, e quindi prevedere, lo sviluppo del fenomeno
senza dover effettuare fisicamente esperimenti complessi, costosi e in alcuni casi anche pericolosi.
Ad esempio nella progettazione di un aereo la forma delle ali pu essere successivamente adattata,
senza dover costruire alcun prototipo, in base ai risultati delle simulazioni numeriche fatte con il
calcolatore; lo studio dellinquinamento ambientale, quale il propagarsi di una sostanza tossicanelle acque di un fiume, pu essere condotto mediante calcolatore con un adeguato modello
matematico, senza dover realizzare, anche in forma ridotta, un reale pericoloso esperimento.
Poich lo scopo della costruzione di un modello di chiarire mediante la sua analisi gli aspetti
incogniti del fenomeno reale, condizione indispensabile affinch il modello sia utile che sia
risolubile.
Per un modello matematico, la risolubilit equivale a richiedere che il problema matematico
associato risulti:
ben posto: si deve poter stabilire lesistenza e lunicit della soluzione; ben condizionato: a piccole perturbazioni nei dati devono corrispondere piccole perturbazioninei risultati; tali perturbazioni possono essere dovute ad errori sperimentali o ad errori di
arrotondamento nella rappresentazione numerica dei dati. In altre parole il modello deve possedere
buone propriet riguardanti la propagazione degli errori.Il processo di risoluzione di un problema del mondo reale pu essere cos schematizzato: una
prima fase di modellizzazione, in cui al problema reale si associa un modello matematico che lo
approssima; una seconda fase in cui il modello matematico viene analizzato e da questo si ricavano
propriet qualitative della soluzione, come esistenza, unicit, regolarit; una terza fase in cui si
individuano dei metodi di risoluzione e se ne analizza lefficienza; infine una quarta fase in cui il
metodo di risoluzione viene implementato su un calcolatore mediante un adeguato linguaggio di
programmazione.
Le propriet del modello matematico prima evidenziate danno un carattere di affidabilit al
modello, ma non esauriscono il significato di risolubilit.
Generalmente un modello matematico un modello continuo, ad esempio un sistema di equazioni
differenziali, uno sviluppo in serie, un integrale; per il modello continuo, che in genere consente di
individuare propriet qualitative della soluzione, quali esistenza, unicit, regolarit, non sempre
per possibile determinare analiticamente la soluzione.
Spesso poi la soluzione del problema matematico non data in forma esplicita, ad esempio
mediante funzioni elementari, e comunque le sole propriet qualitative non sono sufficienti per gli
scopi richiesti. In questo caso si presenta per il problema matematico una situazione analoga a
quella che si ha per il problema reale; ossia, per conoscere il comportamento della soluzione del
problema matematico, pu essere necessaria lintroduzione di un nuovo modello, che in questo
caso si configura come una rappresentazione in dimensione finita, ottenuta mediante una
discretizzazione del problema continuo.
Il fatto che talvolta il modello discreto possa essere interpretato come un modello costruito a partire
direttamente dal fenomeno reale non cambia la sostanza delle considerazioni che seguono.
7/15/2019 Metodi Numerici
10/294
2 M. Garetto Metodi Numerici
Universit di Torino
Successivamente si presenta la necessit di risolvere algoritmicamente il problema matematico,
cio di ottenere mediante un numero finito di operazioni aritmetiche e/o logiche una soluzione,
spesso approssimata, ma adeguata alle richieste.
Si parla cos di risoluzione numerica del problema, intendendo che la soluzione ottenuta
calcolata a partire da un insieme finito di numeri, rappresentati con un numero finito di cifre,attraverso un numero finito di operazioni aritmetiche ed espressa ancora mediante un insieme
finito di numeri.
Il modello discreto o modello numerico presenta caratteristiche in parte simili a quelle viste per il
modello continuo. In particolare, sono ancora propriet necessarie lesistenza, lunicit e la stabilit
della soluzione.
La sequenza di approssimazioni illustrata nello schema seguente
In ogni passaggio da un blocco allaltro pu essere commesso un errore di approssimazione. Inoltre
i risultati effettivamente ottenuti utilizzando il calcolatore sono alterati dagli errori generati dalle
operazioni aritmetiche svolte con unaritmetica finita e dagli errori generati dalla rappresentazione
dei dati con un numero finito di cifre.
Questo processo di risoluzione di un problema del mondo reale sempre stato adottato anche nel
passato: lultima fase era necessariamente risolta con carta e penna, e ci limitava lo sviluppo dei
metodi numerici a quei metodi che potevano essere applicati con mezzi di calcolo solo manuali.
Rimangono due importanti questioni da esaminare. La prima riguarda la capacit del modello
discreto di descrivere il modello continuo o il modello reale. In altre parole si tratta di vedere se la
soluzione discreta pu essere resa vicina quanto si vuole alla soluzione del problema continuo,
ossia pi precisamente di esaminare la convergenza del metodo.
Una questione collegata alla convergenza la stima dellerrore, che permette di stabilire la bont
dellapprossimazione e fornisce un criterio di scelta di un particolare modello.
Unaltra questione riguarda la scelta di un particolare algoritmo per risolvere effettivamente ilproblema numerico. Ad esempio se il modello numerico richiede la soluzione di un sistema lineare
di equazioni, si pu scegliere fra pi algoritmi diversi: la scelta di un particolare algoritmo sar
orientata sia dalle propriet della matrice dei coefficienti, che dallo strumento di calcolo a
disposizione.
Nella risoluzione di problemi di analisi matematica, che generalmente hanno natura continua,
questo processo algoritmico, necessariamente discreto poich finito, si inquadra nel settore noto
come analisi numerica.
Obiettivo principale dellanalisi numerica trovare gli algoritmi che risolvono un problema
matematico nel minimo tempo e con la massima accuratezza, di solito mediante un calcolatore.
Lanalisi numerica ha assunto le caratteristiche di una disciplina autonoma solo con lintroduzione
e luso dei calcolatori. La disponibilit di calcolatori programmabili, potenti e affidabili, uno tra i
motivi pi importanti dello sviluppo delanalisi numerica ed una componente imprescindibile nelprogetto di un algoritmo; essendo legata ad aspetti tecnici in continuo sviluppo, quali velocit,
Fenomeno naturale
Modello matematico continuo Modello matematico discreto
Metodo numerico di soluzione
Soluzione
7/15/2019 Metodi Numerici
11/294
Capitolo 1 Nozioni introduttive
Dipartimento di Matematica
3
capacit di memoria, possibilit di uso interattivo, di calcolo parallelo, pu suggerire nuovi
orientamenti, rendere superati alcuni metodi, rivalutarne altri.
Il grande interesse attuale verso lanalisi numerica dovuto, oltre che alla disponibilit di idonei
strumenti di calcolo, anche allidea sempre pi diffusa che la matematica un utile strumento per lo
studio del mondo reale. In questo senso lanalisi numerica un aspetto della matematica applicata e
la conoscenza dei metodi numerici diventata un elemento indispensabile per tutti gli studiosi che
operano nelle scienze applicate.
In maniera schematica, si possono distinguere nellanalisi numerica i seguenti aspetti:
la metodologia, che tratta la costruzione di algoritmi specifici, la loro efficienza,limplementazione per un particolare calcolatore;
lanalisi, che studia i principi di fondo, le stime degli errori, la convergenza dei metodi.Il primo un aspetto pi pratico, mentre il secondo pi teorico, di base. Nella risoluzione
numerica di un problema i due aspetti, in generale entrambi presenti, si integrano a vicenda.
1.2 Rappresentazione dei numeri e sistemi numerici
Un problema rilevante che si deve affrontare nei processi di elaborazione dellinformazione la
rappresentazione dellinformazione sia numerica che non numerica.
Allinterno degli elaboratori elettronici linformazione rappresentata mediante fenomeni fisici
relativamente semplici che possono essere ridotti a due stati, livelli di tensione o magnetizzazione
di opportuni dispositivi, e la rappresentazione dellinformazione sar prodotta dallassociazione tra
questi stati e i simboli di un alfabeto binario.
Tutte le informazioni sono rappresentate da sequenze di simboli binari: numeri, parole, immagini,
pi in generale oggetti, devono quindi essere espressi mediante codici binari.
Poich siamo interessati alla rappresentazione dellinformazione numerica, tratteremo i sistemi
numerici, con particolare riferimento a quello decimale e a quello binario.
Luomo abituato a compiere le operazioni aritmetiche usando il sistema di numerazione decimale;
tutti hanno dimestichezza con la nozione di posizione decimale: si sa ad esempio che per
moltiplicare un numero per 10 si sposta il punto decimale di una posizione verso destra o, se il
numero intero, si pone uno zero alla destra del numero.
Il sistema decimale un sistema in base 10, poich fa uso di dieci simboli diversi: si usano le cifre
da 0 a 9 introdotte dagli Arabi.
I calcolatori, daltra parte, possiedono caratteristiche fisiche che non si prestano a utilizzare il
sistema decimale. I computer compiono tutte le operazioni utilizzando un sistema di numerazione
diverso dal nostro e maggiormente rispondente alle caratteristiche dei materiali impiegati: il
sistema binario (base 2), che meglio si presta a codificare situazioni come corrente positiva e
corrente negativa, magnetizzazione positiva e magnetizzazione negativa.
Il sistema binario daltra parte inadatto alla mente umana, che difficilmente manipola lunghe
sequenze di 0 e 1, e inoltre la conversione dei numeri da binario a decimale e viceversa non immediata.
In campo informatico si fa anche uso di altri due sistemi di numerazione: lottale con otto simboli
diversi e lesadecimale che ne usa sedici.
Va comunque rilevato che facendo uso dei sofisticati prodotti software esistenti oggi, lutente non
ha mai la necessit di operare con basi diverse da quella decimale e non ha alcun contatto diretto
con il sistema binario. La comunicazione fra utente e computer avviene nella base 10, ma il
computer usa la base 2; unapposita interfaccia converte linput dalla base 10 alla base 2, i calcoli
vengono eseguiti in base 2, poi il risultato viene di nuovo convertito dallinterfaccia nella base 10.
Un sistema numerico determinato quando si fissano alcuni elementi che lo caratterizzano:
un insieme limitato di simboli, le cifre, che rappresentano quantit intere prestabilite, adesempio alcune lettere dellalfabeto nel sistema di numerazione romano, le cifre arabe nel nostro
sistema di numerazione; le regole che devono essere applicate per costruire i numeri.
7/15/2019 Metodi Numerici
12/294
4 M. Garetto Metodi Numerici
Universit di Torino
Questi elementi portano a una differenziazione fra sistemi numerici.
I sistemi numerici si distinguono in:
non posizionali: il valore delle cifre indipendente dalla loro posizione allinterno del numero;ad esempio, nella numerazione romana la cifra M vale sempre mille, da sola, preceduta o seguita da
altre cifre; posizionali: a ogni posizione allinterno della rappresentazione associato un peso.Nei sistemi numerici posizionali un numero intero non negativo N rappresentato come una
sequenza di simboli (cifre) n,...,,i,di 10 =
N= 011 dd....dd nn
il valore del numeroN dato da
valore(N) = 001111 pdpd...pdpd nnnn ++++ dovepi rappresenta il peso associato alla i esima posizione.
Tra i sistemi posizionali sono di rilevante interesse quelli abase fissa nei quali si ponei
i rp = con nim dover la base del sistema di numerazione.
Esempio 1
r= 10 N= 743
Il valore di N
valore(N) = 7 102 + 4 101 + 3 100
d2 p2 d1 p1 d0 p0
p2 = 102 p1 = 10
1 p0 = 10
0
Pi in generale nei sistemi numerici posizionali a base fissa r, un numeroNnon intero pu essere
rappresentato nel seguente modoN= mnn dd.dddd 1011
Il valore diNsar
valore(N) = mmn
nn
n rdrdrdrdrdrd
+++++++1
10
01
11
1 =
= =
n
mi
ii rd con 0 dir 1
dove
id cifra i-esima
r base
n+1 numero di cifre della parte intera
m numero di cifre della parte decimalend cifra pi significativa
md cifra meno significativa.
Sistema decimale
Il sistema numerico decimale quello usato nella vita quotidiana ed caratterizzato da
base r= 10 cifre id {0,1,2,3,4,5,6,7,8,9}
N= mmn
n dddd
+++++ 101010101
10
0
Esempio 2
123.4510 = 1 102
+ 2 101 + 3 100 + 4 10 1 + 5 102
12.2510 = 1 101 + 2 100 + 2 10 1 + 5 102
7/15/2019 Metodi Numerici
13/294
Capitolo 1 Nozioni introduttive
Dipartimento di Matematica
5
Sistema binario
Un sistema numerico binario caratterizzato da
base r= 2 cifre id {0,1}
N= mmn
n dddd
+++++ 22221
10
0
Una cifra binaria detta bit.
Esempio 3
1012 = 1 22
+ 0 21 + 1 20 = 510
101.012 = 1 22
+ 0 21 + 1 20 + 0 2 1 + 1 2 2 = 5.2510
La rappresentazione di un numero in base 2 richiede pi cifre rispetto alla rappresentazione
decimale, perch le potenze di 2 crescono pi lentamente delle potenze di 10.
1.3 Rappresentazione dei numeri in floating point
E utile vedere come lelaboratore rappresenta i numeri ed esegue le operazioni aritmetiche:
laritmetica del computer generalmente inesatta e gli errori commessi, anche se molto piccoli, si
possono propagare e possono avere effetti tali da compromettere la bont del risultato ottenuto.
In un calcolatore si deve riservare uno spazio finito di memoria per la rappresentazione di ogni
numero reale: ogni numero viene rappresentato usando un numero fisso e finito di cifre binarie
(bit). Pertanto si possono rappresentare esattamente solo quei numeri che, in base alla convenzione
di rappresentazione scelta, possono essere contenuti nello spazio previsto per ognuno di essi; questi
numeri sono chiamati numeri di macchina.
Esaminiamo le convenzioni che nei moderni calcolatori vengono usate per la rappresentazione dei
numeri di macchina.
La rappresentazione che viene pi convenientemente utilizzata per i numeri non interi larappresentazione in floating point (virgola mobile), che consente di risolvere in modo efficace il
problema di trattare numeri con ordini di grandezza molto diversi.
Questo sistema di rappresentazione basato sulla notazione scientifica o esponenziale
comunemente usata in fisica, chimica, ingegneria, matematica.
La notazione scientifica si ottiene spostando il punto decimale e moltiplicando per unopportuna
potenza di 10. Ogni numero realex pu essere scritto nella formaqrpxsignx = )(
dove sign(x) il segno del numerox,p un numero reale, r la base del sistema di numerazione
scelto e q un intero relativo.
Esempio 4
Il numero reale decimale x = 23.701 pu essere scritto nei modi seguentix = 23.701 = 23701 103 = 237.01 101 = 0.23701 102 = 0.00023701 105 =....
Il numero reale 3.14159265 (valore approssimato di ) pu essere scritto nei modi seguenti3.14159265 = 3.14159265 100 = 0.314159265 101 = 31.4159265 101 =....
Come si vede dallesempio, la rappresentazione non unica, anzi esistono infinite rappresentazioni
in notazione scientifica dello stesso numero, ottenibili una dallaltra spostando il punto decimale e
cambiando convenientemente lesponente.
La rappresentazione di un numero x 0 si dice normalizzata quando la cifra della parte intera 0 e la prima cifra dopo il punto decimale diversa da 0.
Esempio 5
La rappresentazione normalizzata di x = 123.71510 x = 0.123715 103.La rappresentazione normalizzata di x = 0.00071810 x = 0.718 10
3.
7/15/2019 Metodi Numerici
14/294
6 M. Garetto Metodi Numerici
Universit di Torino
Nella rappresentazione normalizzata di un numerox chiamiamopmantissa e qcaratteristica o
esponente di x;p un numero reale compreso fra 0 e 1, q un intero.
Fissata la base r, ogni numero reale x 0 univocamente definito dalla coppia (p,q), ossia larappresentazione normalizzata unica; pertanto sufficiente memorizzare la coppia (p,q).
Con questa notazione possibile la scrittura in uno spazio limitato di numeri aventi ordini digrandezza molto diversi tra loro; viene in ogni caso evidenziata linformazione essenziale, che la
sequenza di cifre significative nella mantissa, mentre la caratteristica fornisce lordine di
grandezza, espresso in potenze della base.
Poich un numero reale univocamente individuato dalla coppia di interi (p,q), per rappresentare
un numero reale si deve stabilire:
quanti bit devono essere utilizzati complessivamente per la rappresentazione di un numeroreale in notazione esponenziale normalizzata;
quanti di essi devono rappresentare la mantissa e con quali convenzioni sono utilizzati; quanti, analogamente, per la caratteristica.Il numero totale di bit stabilito per rappresentare un numero fissato dallarchitettura del computer.
Nei moderni calcolatori, per la memorizzazione dei numeri reali in aritmetica floating point esiste
la possibilit di riservare a ciascun numero una lunghezza complessiva di 32 bit (laritmetica inquesto caso viene definita in semplice precisione), oppure di 64 bit (aritmetica in doppia
precisione).
Come numeri reali di macchina si intendono quei numeri le cui mantisse e caratteristiche sono
rappresentabili esattamente negli spazi a loro riservati.
In particolare, se lo spazio dedicato alla rappresentazione della mantissa corrisponde a tcifre nel
sistema di numerazione scelto, saranno rappresentabili solo quelle mantisse che non hanno pi di t
cifre.
Lesponente invece dovr soddisfare una disuguaglianza del tipo m q M, dove m < 0 eM> 0sono interi. Di solito per evitare di dover memorizzare, oltre al segno del numero, anche il segno
dellesponente, non si memorizza lesponente q, ma la quantit q* = q m, che risulta sempre non
negativa.
Definizione
Linsieme dei numeri di macchina floating point, con rappresentazione normalizzata, in base r
con t cifre nella mantissa, e con esponente q compreso fra m e M indicato con il simbolo
(r,t,m,M), ed costituito dai numeri esattamente rappresentabili nel calcolatore nello spaziostabilito per la rappresentazione floating point.
Si osservi che linsieme dei numeri di macchina deve contenere anche lo 0, che non
rappresentabile con una mantissa normalizzata, e quindi non rappresentabile in modo univoco. Di
solito lo 0 rappresentato con mantissa nulla ed esponente m.
Nella figura seguente si schematizza una possibile rappresentazione interna a un calcolatore di un
numero di macchina su 32 bit (semplice precisione), nel caso della base r= 2, con un bit per ilsegno del numero, con t= 23 cifre per la mantissa e con 8 bit per lesponente
esponente (8 bit) mantissa (23 bit)
segno (1 bit)
Con questa scelta si possono rappresentare esponenti q compresi fra m = 127 eM= 128; per nondover memorizzare il segno dellesponente, si memorizza lesponente traslato q
*= q + 127 (si
ricordi1
che con 8 bit si possono rappresentare numeri interi positivi compresi fra 0 e 255).
1In generale con n bit si rappresentano numeri interi positivi compresi fra 0 e 12 n
7/15/2019 Metodi Numerici
15/294
Capitolo 1 Nozioni introduttive
Dipartimento di Matematica
7
Nella doppia precisione si usano 64 bit e i 32 bit aggiuntivi possono essere tutti destinati alla
mantissa, oppure parte alla mantissa e parte allesponente; tale scelta dipende dallarchitettura
dellelaboratore; una suddivisione spesso applicata consiste nel destinare 52 bit per la mantissa e 11
bit per lesponente.
In un computer che usa 32 bit per rappresentare un numero (semplice precisione) e riserva 23 bit
per la mantissa e 8 per lesponente, pi 1 bit per il segno del numero, si ottiene una precisione di
circa 7 cifre decimali e si possono rappresentare numeri aventi un ordine di grandezza compreso fra
1039
e 10+38
.
Se il computer usa invece 64 bit per rappresentare un numero (doppia precisione) e riserva 52 bit
per la mantissa e 11 per lesponente, si ottiene una precisione di circa 15 cifre decimali e si possono
rappresentare numeri aventi un ordine di grandezza compreso fra 10308
e 10+308
.
La maggior parte dei personal computer di attuale generazione si basano su questo tipo di standard,
detto standard IEEE (Institute for Electrical and Electronics Engineers) dal nome dellistituto che
ha codificato per la prima volta nel 1985 la scelta sopra descritta per laritmetica floating point.
Attualmente di solito, soprattutto nellambito dei software di tipo matematico, viene usata per
default la doppia precisione, mentre in tempi meno recenti cera la possibilit di scegliere fra
semplice e doppia precisione, per ragioni legate alla minor velocit di calcolo e alla minordisponibilit di memoria degli elaboratori meno recenti.
Esempio 6
Con questo esempio si vuole mostrare che linsieme dei numeri di macchina un insieme che ha un
numero finito di elementi; lesempio ha significato puramente didattico, non esistendo ovviamente
nessun elaboratore che abbia queste caratteristiche, ma negli elaboratori realmente esistenti si
verifica lo stesso tipo di situazione.
Scriviamo tutti i numeri dellinsieme (2,3,1,1) e li rappresentiamo sulla retta reale.Linsieme (2,3,1,1) caratterizzato da: base r= 2; t= 3 cifre per la mantissa con prima cifra della mantissa diversa da 0; esponenti compresi fra 1 e 1.Le mantisse che possono essere rappresentate con 3 bit sono le seguenti; accanto a ciascuna
mantissa in base 2 indicato a destra il corrispondente valore in base 10, in forma di frazione.
8
7
8
1
4
1
2
12121210.1111110
4
3
4
1
2
12021210.1101100
8
5
8
1
2
12120210.1011010
2
12020210.1001000
2-2-1-
22
2-2-1-22
2-2-1-22
2-2-1-22
=++=++=
=+=++=
=+=++=
=++=
.
.
.
.
Associando a ciascuna mantissa tutti i possibili esponenti si ottengono i seguenti numeri di
macchina positivi; accanto a ciascuno di essi si indica il corrispondente valore decimale
4
7
28
7
20.1118
7
28
7
20.11116
7
28
7
21110
2
32
4
320.110
4
32
4
320.110
8
32
4
321100
4
52
8
520.101
8
52
8
520.101
16
52
8
521010
122
120.100
2
12
2
120.100
4
12
2
121000
110011
110011
110011
110011
======
======
======
======
.
.
.
.
7/15/2019 Metodi Numerici
16/294
8 M. Garetto Metodi Numerici
Universit di Torino
I numeri floating point positivi rappresentabili in questo elaboratore sono quindi 12; a questi si
aggiungono i corrispondenti 12 numeri negativi e lo 0; complessivamente in questo elaboratore si
possono rappresentare esattamente solo 25 numeri reali: questi 25 numeri costituiscono linsieme
dei numeri di macchina (2,3,1,1).
I numeri di macchina possono essere rappresentati sulla retta reale; quelli positivi sonorappresentati nella figura seguente
4
7
2
3
4
51
8
7
4
3
8
5
2
1
16
7
8
3
16
5
4
10
4434421
underflow
43421
overflow
Il pi piccolo numero positivo 4
121000 1 = . ; il pi grande
4
721110 1 =. .
I numeri negativi sono i simmetrici dei positivi. Ogni altro numero reale non pu essere
esattamente rappresentato in questa macchina e dovr essere approssimato da uno di questi numeriscelto secondo certe regole (vedere 1.4).
Si pu osservare che i numeri di macchina non sono distribuiti in modo regolare: i punti sono
raggruppati in modo pi fitto tra2
1e
4
1che tra 1 e
4
7.
Di conseguenza se numeri x arbitrari compresi nellintervallo4
7
4
1
, e non coincidenti con
numeri di macchina devono essere approssimati con numeri di macchina in virgola mobile, tale
approssimazione sar pi accurata per certi numeri che per altri.
1.4 Troncamento e arrotondamento
Vediamo ora come rappresentare un numero reale positivox in forma normalizzata in un sistema di
numeri di macchina (r,t,m,M); per i numeri negativi si ottengono risultati analoghi.Si possono presentare i seguenti casi:
1 il numero x tale che Mqm e inoltre il numero delle cifre della mantissa minore ouguale a t; allorax un numero di macchina ed rappresentato esattamente.
Sex non appartiene a (r,t,m,M), si pone il problema di associare in modo adeguato a x un numerodi macchina x .
2 la caratteristica q non appartiene allintervallo [m,M].
Se q < m si dice che si verifica un underflow; solitamente si assume come valore approssimato delnumero x il numero 0; la presenza di underflow pu portare a situazioni critiche, ad esempio
divisione per 0.
Se q >M, si verifica un overflow e non si pu effettuare alcuna approssimazione con un numero di
macchina. Nei computer di pi vecchia generazione in situazioni di questo tipo avveniva larresto
del calcolo; nei calcolatori pi recenti pu essere usato uno standard detto virgola mobile estesa
in cui, in aggiunta ai numeri di macchina, sono consentiti i simboli Inf (infinito) e NaN (Not a
Number) e sono previste regole per eseguire operazioni del tipo 0=Inf
x, Inf
x=
0, NaN=
0
0.
3 la caratteristica q appartiene allintervallo [m,M], ma le cifre della mantissa dix sono in numeromaggiore di t. In questo caso si pone il problema di scegliere per il numerox un suo rappresentante
x . Tale operazione viene indicata comunemente come operazione di arrotondamento, ecomporta un errore, detto errore di arrotondamento (rounding error oanche round-off error).Per effettuare loperazione di arrotondamento si possono utilizzare due tecniche diverse:
7/15/2019 Metodi Numerici
17/294
Capitolo 1 Nozioni introduttive
Dipartimento di Matematica
9
troncamento (chopping) dix alla tesima cifra: si trascurano tutte le cifre della mantissa dopola tesima cifra.
arrotondamento (rounding) dix alla tesima cifra: larrotondamento tiene conto della primacifra da trascurare, la (t+1)esima cifra. Se la (t+1)esima cifra minore di
2
r, larrotondamento
coincide con il troncamento; se invece la (t+1)esima cifra maggiore o uguale a2
r, si aumenta di
uno lultima cifra che si conserva nella mantissa (tesima cifra) e poi si effettua il troncamento.
Si noti che se si lavora in base r= 10 , si ha 52
=r
.
Esempio 7
(10,3, 4,4) base 10a x = 9824 = 0.9824 104
x = 0.982 104 con troncamento
x = 0.982 104 con arrotondamentoIn questo caso il numero arrotondato coincide con il numero troncato.
b x = 9827 = 0.9827 104x = 0.982 104 con troncamento
x = 0.983 104 con arrotondamentoIn questo caso il numero arrotondato e il numero troncato sono diversi.
Esempio 8
(10,5, 4,4) base 10x = = 3.1415926 = 0.31415926 101x = 0.31415 101 con troncamento
x = 0.31416 101
con arrotondamento
Il troncamento unoperazione pi semplice, ma conduce ad errori2
di arrotondamento pi grandi;
infatti riferendoci allesempio 7, caso b, si ha
x = 9827 = 0.9827 104x = 0.982 104 con troncamento
Errore (con il troncamento)
144 10701098201098270 == ...xx
x = 0.983 104 con arrotondamentoErrore (con larrotondamento)
144
10301098301098270 == ...xx Riferendoci invece allesempio 8, si ha
x = = 3.1415926 = 0.31415926 101x = 0.31415 101 con troncamento
Errore (con il troncamento)
411 109301031415010...314159260 = ...xx
x = 0.31416 101 con arrotondamentoErrore (con larrotondamento)
511 107401031416010...314159260 = ...xx
2 Vedere il successivo 1.5 per le definizioni di errore.
7/15/2019 Metodi Numerici
18/294
10 M. Garetto Metodi Numerici
Universit di Torino
1.5 Errore assoluto, errore relativo
Sex rappresenta il valore esatto di un numero e x una sua approssimazione (per esempio il numero
di macchina con cui rappresentatox), gli errori assoluto e relativo associati a x sono definiti nel
modo seguente.
Definizione
Errore assoluto xx =AE
Errore relativo 0ER
= x,x
xx.
Esempio 9
a 110500 = .x 110510 = .x 0
A 1010E == .xx
11
0
R 102010500
1010E
=
=
= .
.
.
x
xx
b 310500 = .x 310510 = .x 4
A 1010E== .xx
1
3
4
R 102010500
1010E
=
=
= .
.
.
x
xx
c 410500 = .x 410510 = .x 3
A 1010E == .xx
1
4
3
R 102010500
1010E
=
=
= .
.
.
x
xx
Il confronto fra questi tre casi mostra che si possono avere errori assoluti molto diversi, ma lo
stesso errore relativo; in altre parole, come misura di accuratezza lerrore assoluto pu essere
fuorviante, mentre lerrore relativo maggiormente significativo. Lerrore relativo da preferire
nella misura dellaccuratezza per numeri floating point, perch legato direttamente alla mantissa.
Esempio 10
a 1000000=x 999996=x
49999961000000EA === xx
5R 1040
1000000
4E
==
= .x
xx
Lerrore assoluto grande, ma lerrore relativo piccolo: x pu essere considerato una buona
approssimazione perx.
b 0000120.x = 0000090.x = 5
A 103000000900000120E=== ...xx
05
R 10250
0000120
1030E =
=
=
.
.
.
x
xx
Lerrore relativo grande: x non una buona approssimazione perx.
7/15/2019 Metodi Numerici
19/294
Capitolo 1 Nozioni introduttive
Dipartimento di Matematica
11
Definizione
Se, lavorando in base 10, risulta
1102
1EA =
kxxk
allora lapprossimazionex hakcifre decimali corrette.Se risulta
1102
1ER
= k
x
xxk
allora lapprossimazione x ha almeno k cifre significative corrette (potrebbero essere anchek+1).
Lerrore assoluto fornisce quindi informazioni sul numero delle cifre decimali corrette, mentre
lerrore relativo fornisce informazioni sul numero delle cifre significative corrette.
Esempio 11
4)sonorealt(incorretteivesignificatcifre3almenoha3
102010202840
1040E
corrette.decimalicifre6ha6
102
11040102028010202840E
002028000202840
32
6
R
6622A
xk
..
.
x
xx
xk
...xx
.x.x
=
=
=
=
7/15/2019 Metodi Numerici
20/294
12 M. Garetto Metodi Numerici
Universit di Torino
Esempio 14
33A
22
102
11030E
109919970199799109920000200099
7/15/2019 Metodi Numerici
21/294
Capitolo 1 Nozioni introduttive
Dipartimento di Matematica
13
Nellaritmetica floating point valgono solo alcune delle propriet delle operazioni elementari.
Per laritmetica di macchina in generale non valgono le seguenti propriet, valide invece
nellaritmetica esatta.
Propriet 1 - Associativa delladdizione
(x y ) z x (y z )Propriet 2 - Associativa della moltiplicazione
(x y ) z x (y z )
Esempio 17
(10,2,5,5)x = 0.11 100 y = 0.13 10-1 z = 0.14 10-1
( )
( ) ( )
ento!arrotondam
101401027010110
101401013010110
101301014010120
101401013010110
010
110
010
110
====
==
==
...
...zyx
...
...zyx
Esempio 18
(10,2, 5,5)x = 0.11 101 y = 0.31 101 z = 0.25 101
( ) ( )
( ) ( )108601078010110
102501031010110
108501025010340
102501031010110
111
111
111
111
==
==
==
==
...
...zyx
...
...zyx
Propriet 3 - Distributiva del prodotto rispetto alladdizione
x (y z ) (x y ) (x z )
Esempio 19
(10,2, 5,5)x = 0.11 101 y = 0.23 101 z = 0.24 101
( ) ( )
( ) ( ) ( ) ( )
105101026010250
10240101101023010110
105201047010110
102401023010110
111
1111
111
111
==
==
====
...
....zxyx
...
...zyx
Propriet 4 - Legge di cancellazione
zxyyzyx == implicanon0,
Esempio 20
(10,2, 5,5)x = 0.51 101 y = 0.22 101 z = 0.52 101
7/15/2019 Metodi Numerici
22/294
14 M. Garetto Metodi Numerici
Universit di Torino
!ma
101101022010520
101101022010510
211
211
zx
...yz
...yx
==
==
Propriet 5 - Semplificazione
x y ( y)x
Esempio 21
(10,2, 5,5)x = 0.70 101 y = 0.80 101
(yx )x = 0.70 101 (0.80 101 0.70 101) == 0.70 101 0.11 101 = 0.77 101y
Possiamo pertanto concludere che espressioni che sono equivalenti in aritmetica esatta non
risultano generalmente tali nellaritmetica di macchina.Malgrado ci, due espressioni (non nulle) saranno definite equivalenti dal punto di vista del
calcolo numerico quando, calcolate con un computer, forniscono risultati che differiscono per una
tolleranza relativa dellordine della precisione di macchina.
In un elaboratore che usa laritmetica floating point ci sono infiniti numeri realix non nulli tali che
11 =x dove x1 il valore della somma calcolato dal computer; nellaritmetica esatta questa relazione ovviamente falsa per ognix non nullo!
Il pi piccolo fra tutti i numeri di macchina x(r,t,m,M) per i quali nellaritmetica del computersi verifica 11 >x detto epsilon di macchina.
DefinizioneSi definisce epsilon di macchinala quantit
( ){ }11: >= xM,m,t,rxmineps
Lepsilon di macchina una costante caratteristica di ogni aritmetica floating point e dipende anche
dalla tecnica scelta per le operazioni di arrotondamento (chopping o rounding).
Nellinsieme di numeri di macchina (r,t,m,M) lepsilon di macchina dato da
=
entoarrotondamconoperasise2
1
mentocon troncaoperasise
1
1
t
t
r
r
eps
Il numero eps rappresenta la massima precisione di calcolo raggiungibile con il calcolatore su cui
implementata una data aritmetica floating point, e non ha senso cercare di determinare
approssimazioni con precisione relativa inferiore alla precisione di macchina eps.
Esempio 22
(10,3,2,2) con arrotondamento
0050102
1 2 .eps ==
11 1010001101010
e)arrotondareare(normalizz0051005011
==
===
..
..eps
Invece per 0040.x = (e per ogni altro numerox minore di eps) si ha
1101000
e)arrotondareare(normalizz00410040111 ==
===.
..x
7/15/2019 Metodi Numerici
23/294
Capitolo 1 Nozioni introduttive
Dipartimento di Matematica
15
Osservazione
Laritmetica di macchina floating point con arrotondamento pu essere facilmente implementata sia
in Maple che in Matlab3. Il comando Maple
> Digits:=n;
permette di svolgere tutti i calcoli in aritmetica floating point con arrotondamento con n cifresignificative; il valore di n scelto dallutente entro un limite massimo che dipende dal computer
utilizzato.
Loperazione di macchina
xy =fl(fl(x) +fl(y))pu essere svolta in floating point con n cifre con il comando Maple
> evalf(evalf(x)+evalf(y));
In modo analogo si svolgono le altre operazioni.
Come applicazione si riportano i comandi Maple e i risultati ottenuti per lesempio 17.
> Digits:=2;digits: =2
> x:=0.11;x: =0. 11
> y:=0.013;y: =0. 013
> z:=0.014;z: =0. 014
> a:=evalf(evalf(x)+evalf(y))+evalf(z);a: =0. 13
>b:=evalf(x)+evalf(evalf(y)+evalf(z));b: =0. 14
1.7 Generazione degli errori nel computer
In questo paragrafo esaminiamo in dettaglio alcuni dei problemi legati alluso di un computer per
svolgere calcoli di tipo numerico e descriviamo alcuni esempi di algoritmi tipici dellanalisi
numerica.
1.7.1 Problemi del calcolo con i numeri reali
Il calcolatore, essendo una macchina finita, deve operare su numeri rappresentati con una sequenza
finita di cifre; ad esempio numeri reali irrazionali come o 2 , la cui rappresentazione richiedeinfinite cifre, non possono essere trattati nelle elaborazioni numeriche se non commettendo un
errore di arrotondamento.
Lo stesso problema si presenta anche con numeri razionali la cui rappresentazione decimale ha uno
sviluppo periodico: ad esempio il numero3
1ha la rappresentazione periodica 30. , e pu essere
rappresentato solo troncandone lo sviluppo e quindi commettendo un errore.
3
Maple uno dei numerosi software scientifici, detti Computer Algebra Systems (CAS), oggi disponibili peril calcolo simbolico e numerico; altri prodotti simili sono Mathematica e Matlab, pi orientato al calcolo
numerico.
7/15/2019 Metodi Numerici
24/294
16 M. Garetto Metodi Numerici
Universit di Torino
Non ci si deve perci stupire di fronte a un risultato del tipo4
9999999903
13 .= .
Nella maggior parte dei calcolatori la rappresentazione interna dei numeri viene fatta usando una
base diversa dalla base 10: di solito si usa la base 2 o la base 16, mentre nei dispositivi di input-output (tastiera, video, stampante) i numeri compaiono nella loro rappresentazione in base 10;
questo fatto rende meno evidente la presenza degli errori dovuti alla rappresentazione con un
numero finito di cifre. Ad esempio, introducendo il numero decimale 0.1 dalla tastiera di un
personal computer, che utilizza la base 2 per la rappresentazione interna e la base 10 per la
rappresentazione sullo schermo, si pu leggere sul video il numero decimale 0.1, cio10
1, per il
numero effettivamente immesso nella memoria del calcolatore non 0.1 ma una sua
approssimazione, perch10
1in base 2 ha la rappresentazione periodica 001100. , e il computer non
pu rappresentare un numero con infinite cifre.
Quindi in generale si commettono errori gi nellimmissione dei dati, prima ancora di eseguireeffettivamente i calcoli.
Poich linsieme dei numeri rappresentabili sul calcolatore un insieme finito e limitato (insieme
dei numeri di macchina), ovviamente non tutti i numeri sono rappresentabili esattamente; in
particolare non possono essere rappresentati i numeri troppo grandi o troppo piccoli.
A causa di questa limitazione lelaborazione pu essere problematica per il verificarsi di overflow,
con generazione di risultati di modulo troppo elevato, o di underflow, con risultati di modulo
troppo piccolo.
I dati, i risultati intermedi e i risultati finali devono essere tutti approssimati con numeri di
macchina. Queste approssimazioni possono produrre seri effetti sul calcolo complessivo.
Per esempio, la maggior parte dei programmi di libreria per il calcolo delle funzioni
trigonometriche sin x e cos x, sottraggono o aggiungono multipli di 2 allargomento in modo da
ottenere un argomento compreso fra e .Questo cambiamento dellargomento ovviamente non modifica formalmente il risultato, perch, ad
esempio, vale la propriet sin x = sin(x 2k), k = 1,2,...Ma il numero non pu essere rappresentato esattamente nel calcolatore, quindi la modificaeffettuata sullargomento provoca un cambiamento nel risultato: in effetti, a causa di questo
problema, difficile calcolare in modo accurato sin x per grandi valori dix.
La rappresentazione con un numero finito di cifre impone inoltre, come gi visto precedentemente,
luso di unaritmetica di macchina finita, che introduce errori anche nellesecuzione delle
operazioni aritmetiche.
Pi in generale dunque, ogni procedimento numerico che coinvolga numeri reali che non possono
essere rappresentati esattamente nel computer deve essere usato con particolare attenzione.
Esempio 23
Si vuole calcolare il valore della somma
=
=N
i
S
110
1.
4 Si osservi il comando Maple e il risultato (in aritmetica floating point con 8 cifre significative)> digits:=8;
digits: =8
> x:= evalf(evalf(3.0)*evalf(1.0/3.0));x: =0. 99999999
7/15/2019 Metodi Numerici
25/294
Capitolo 1 Nozioni introduttive
Dipartimento di Matematica
17
PerN= 10000000 il valore esatto S= 1000000; con Matlab5
(che opera in doppia precisione) si
ottiene
S= 999999.999838975
Lerrore (piuttosto elevato) dovuto al fatto che per rappresentare
10
1, che in base 2 ha la
rappresentazione periodica 001100. , il computer deve operare un troncamento, non potendo
rappresentare un numero con infinite cifre. Si ha quindi un errore di conversione dalla base 10 alla
base 2; a questo errore si aggiungono altri errori dovuti alle successive operazioni di somma e alla
conversione del risultato dalla base 2 alla base 10.
1.7.2 Cancellazione numerica
Una delle conseguenze pi gravi della rappresentazione dei numeri con precisione finita, e della
conseguente introduzione dellaritmetica floating point, il fenomeno della cancellazione
numerica, ossia la perdita di cifre significative dovuta ad operazioni di sottrazione fra due numeri
circa uguali.
Esempio 24
Calcoliamo la differenza fra i valori di xe per
2
100
1
=x e per2
1000
1
=x , lavorando con 8
cifre significative
( )
( )
000099000
999999000
999900000
2
10001
2
1001
.bac
.eb
.ea
==
==
==
I valori di a e b hanno 8 cifre significative, mentre c ha solo pi 4 cifre significative.
Leffetto degli errori di arrotondamento grande, la sottrazione fra numeri circa uguali fa perdere
accuratezza.
Ripetiamo gli stessi calcoli lavorando ora con 16 cifre significative.
( )
( )
00666700009899500
00500099999900000
99833399990000490
2
10001
2
1001
.bac
.eb
.ea
==
==
==
I valori di a e b hanno ora 16 cifre significative, mentre c ha 12 cifre significative6.
Esempio 25
Si voglia calcolare il valore della funzione ( )x
exf
x 1= per valori dix tendenti a 0.
5 I comandi necessari per calcolare con Matlab la somma richiesta sono i seguenti>> format long e
>> v=0.1*ones(1,10000000);
>> s=sum(v) s =
9.999999998389754e+005
6 I calcoli sono stati effettuati con Maple, con 8 e 16 cifre rispettivamente.
7/15/2019 Metodi Numerici
26/294
18 M. Garetto Metodi Numerici
Universit di Torino
E noto che
11
0=
x
elim
x
x
Quandox prossimo a 0, xe assume valori vicini a 1, quindi nel calcolo di ( )xf al numeratore sicalcola la differenza fra due numeri circa uguali e si ha un aumento dellerrore di arrotondamento,
dovuto alla cancellazione numerica, peggiorato ulteriormente dalla divisione perx.
Effettuando i calcoli in semplice precisione (8 cifre significative) e in doppia precisione (16 cifre
significative) si ottengono i seguenti risultati7:
Semplice precisione
( )
( )
( ) 002
677721612
000448012
25
24
10
.xfx
.xfx
.xfx
==
==
==
Doppia precisione
( )( )
( ) 002
42624125899906812
45536000000020512
51
50
25
.xfx
.xfx
.xfx
==
====
Anche se si opera in doppia precisione, il problema dovuto alla cancellazione numerica continua a
verificarsi, ma si presenta per valori dix pi piccoli.
Come si osserva in questi esempi, il problema dellerrore di arrotondamento pu essere almeno in
parte risolto aumentando la precisione del calcolo, ma non pu essere del tutto eliminato: anche con
il raddoppio della precisione si ha una diminuzione (certamente meno importante) delle cifre
significative.
Se il cambiamento del numero di cifre di precisione fa cambiare in modo rilevante i risultati di un
calcolo, allora molto probabile che il calcolo sia seriamente affetto da errori di arrotondamento.Questo problema sar approfondito nel 1.11, dove si vedr come sia spesso possibile modificare
un algoritmo in modo da evitare il problema della cancellazione numerica.
1.7.3 Calcolo del valore di una funzione
La maggior parte dei problemi matematici richiede luso di funzioni. Ci sono solo due modi per
rappresentare una funzione in un calcolatore: mediante una tabella di valori oppure con un
algoritmo che consenta di calcolare i valori della funzione in punti assegnati.
Poich nellaritmetica di macchina in un computer sono definite solo le quattro operazioni
aritmetiche, le funzioni effettivamente calcolabili esattamente su un calcolatore, a meno degli erroridi arrotondamento, sono solo le funzioni che richiedono un numero finito di queste operazioni.
Tali funzioni sono dette funzioni razionali e possono essere scritte nella forma
( )( )( )xqxp
xr =
dove p(x)e q(x) sono polinomi di grado rispettivamente n e m nella variabilex
( )
( ) mm
nn
xb...xbxbbxq
xa...xaxaaxp
++++=
++++=
2210
2210
I coefficienti ka e kb e il valore x in cui la funzione deve essere calcolata sono rappresentati con
numeri di macchina; il valore calcolato per la funzione affetto dallerrore di arrotondamento
dovuto allaritmetica floating point.
7/15/2019 Metodi Numerici
27/294
Capitolo 1 Nozioni introduttive
Dipartimento di Matematica
19
Tutte le altre funzioni devono essere calcolate per mezzo di algoritmi con i quali si ottiene un
valore approssimato della funzione; tale valore affetto, oltre che dallerrore di arrotondamento,
anche da un errore dovuto al metodo scelto per approssimare la funzione.
Molte funzioni, ad esempio le funzioni trigonometriche, possono essere approssimate da opportune
funzioni razionali; numerose funzioni elementari possono essere approssimate nellintorno
dellorigine per mezzo dello sviluppo in serie di Taylor.
Nel calcolo di una generica funzione f il valore effettivamente calcolato in corrispondenza a un
dato valorex quindi affetto da errori indotti da diversi fenomeni:
errore generato dalla rappresentazione dei dati come numeri di macchina; errore generato dal fatto che le operazioni sono effettuate in aritmetica floating point; errore generato, se la funzione non razionale, dalla sua approssimazione con una funzionerazionale, oppure con lo sviluppo di Taylor o con altri metodi.
1.7.4 Discretizzazione
Molti problemi sono inizialmente formulati in termini di oggetti matematici quali funzioni o curvee coinvolgono operazioni come lintegrazione, la differenziazione o i limiti.
Il procedimento di sostituire concetti matematici di tipo continuo mediante quantit calcolabili
numericamente chiamato discretizzazione.
Si consideri ad esempio il problema di calcolare lintegrale
( )=b
a
dxxfI (1.1)
dovef(x) una funzione continua su [a,b], calcolabile in ogni puntox [a,b].Loperazione di integrazione pu essere sostituita da una somma finita, commettendo ovviamente
un errore.
La maggior parte dei metodi di integrazione numerica per approssimare lintegraleI consiste nello
scegliere un certo numero di puntix0,x1, ... ,xn nellintervallo [a,b] e nellapprossimare lintegraleI con una somma finita del tipo
( )=
n
k
kk xfm
0
(1.2)
dove i coefficienti mk, k = 0, 1, ...,n , sono scelti in modo opportuno.
Lalgoritmo che si implementa sul calcolatore risolve il problema discreto (1.2), anzich il
problema continuo (1.1).
Se ad esempio si sceglie x0 = a, x1 = b, si pu costruire la formula del trapezio
( ) ( )[ ]bfafh
I +2
h = b a
illustrata dalla fig. 1, nel caso semplice in cui ( ) 0>xf per ogni x [a,b].
(x)
a=x0 b=x1 x Figura 1
7/15/2019 Metodi Numerici
28/294
20 M. Garetto Metodi Numerici
Universit di Torino
1.7.5 Iterazione
Spesso la soluzione di un problema matematico formulata sotto la forma di un processo infinito:
esempi di tali processi sono lintegrazione, la differenziazione, i limiti, le somme infinite. Molti di
questi processi infiniti possono essere formulati come iterazioni.Un metodo iterativo fornisce una successione di approssimazionix0 ,x1 , ... ,xk,... della soluzionex;
tale successione pu convergere alla soluzione stessa.
Una particolare iterata calcolata con unopportuna formula, servendosi delle iterate precedenti.
Esempio 26
La costante e definita dalla serie
+
=
=0
!
1
kk
e
Poich la somma di una serie definita come il limite delle somme parziali (ridotte), si pu scrivere
il procedimento iterativo seguente
=+==
,....,kk
SS
S
kk 21!
11
1
0
La successione di valori che si calcola con questo metodo iterativo
66666672!3
150000002
50000002!2
12
0211
01
3
2
1
0
..S
.S
.S
.S
=+=
=+=
=+=
=
.......................
2.7166667!5
170833342
70833342!4
166666672
5
4
=+=
=+=
.S
..S
che converge al valore 71828182.e .
Esempio 27
Il numero irrazionale 2 la soluzione positiva dellequazione x2
= 2.
Si pu dimostrare che la soluzione di questa equazione il limite della successione di iterate
=
+=
=
,...,k
xxx
x
kkk 21
2
2
1
2
11
0
La successione di valori che si calcola con questo metodo iterativo
( )
......................
.x
.x
.x
x
41421571
4166713
4
2
3
2
1
51122
1
2
3
2
1
0
=
=
+=
=+=
=
che converge al valore 4142135612 .
7/15/2019 Metodi Numerici
29/294
Capitolo 1 Nozioni introduttive
Dipartimento di Matematica
21
Si presentano a questo punto due problemi.
Il primo legato al fatto che pu essere calcolato solo un numero finito di iterate, quindi si deve
decidere quale iterata pu essere assunta come approssimazione della soluzione cercata; la scelta
dei criteri di arresto per processi iterativi non sempre semplice.
Il secondo problema quello della convergenza e consiste nel chiedersi se il procedimentoconverge e, in caso affermativo, se converge alla soluzione cercata.
Ad esempio, per risolvere lequazione x2
= 2 si pu anche considerare il metodo iterativo
==
=
,...,k
xx
x
kk 21
2
2
1
0
La successione di valori che si determina con questo metodo
{2, 1, 2, 1, 2, 1,.....}che ovviamente non converge.
Risulta quindi necessario avere una conoscenza chiara del procedimento iterativo, in modo da poter
dire, prima di applicarlo, se la successione delle iterate converge.
1.8 Tipi di errore
Le considerazioni precedenti hanno reso evidenti vari errori che nascono nel corso della soluzione
numerica di un problema matematico; questi errori possono essere sostanzialmente di due tipi
diversi.
Il primo tipo di errore detto errore di arrotondamento7
ed causato dalla rappresentazione
finita dei numeri allinterno del calcolatore; questo errore si presenta ad esempio quando dei dati
devono essere arrotondati o troncati a un certo numero di cifre per essere memorizzati nel
computer.
Pi in generale gli errori di arrotondamento nascono quando si effettua una operazione aritmetica
su numeri nel calcolatore, e si produce un risultato che viene anchesso approssimato con un
opportuno numero di macchina.
Il secondo tipo di errore detto errore di troncamento8
e si presenta in varie forme. Il
procedimento di approssimazione di una funzione per mezzo di unopportuna funzione razionale
introduce un errore di questo tipo; analogamente il processo di discretizzazione, cos come
larrestare un procedimento iterativo dopo un numero finito di passi.
In molti casi, lerrore di troncamento introdotto prima che il calcolo numerico venga iniziato. Ad
esempio quando un integrale sostituito da una somma finita, si introduce un certo errore di
troncamento, mentre il calcolo numerico della somma introduce solo errori di arrotondamento.
Quando lerrore di troncamento causato da un processo di discretizzazione, di solito accade che
tanto pi piccolo questo errore, tanto pi complicato il corrispondente procedimento numerico.
Inoltre generalmente lerrore di arrotondamento direttamente proporzionale alla complessit delcalcolo, perci in molti casi ridurre lerrore di troncamento causa un aumento dellerrore di
arrotondamento.
Normalmente questi due errori vengono analizzati separatamente; bisogna comunque tener presente
che spesso c una connessione tra di loro, che deve essere tenuta in considerazione.
1.9 Propagazione degli errori
La questione di come gli errori sui dati di un problema si propagano sui risultati di fondamentale
importanza per la risoluzione numerica di un problema.
7Attenzione a non confondere gli errori di arrotondamento e troncamento con le tecniche di arrotondamento
e troncamento introdotte nel 1.4 per approssimare i numeri.
7/15/2019 Metodi Numerici
30/294
22 M. Garetto Metodi Numerici
Universit di Torino
Studiamo come gli errori si possono propagare effettuando successivamente dei calcoli;
consideriamo il semplice caso della somma di due numerix ey (valori esatti); siano x e y i valori
approssimati dix ey, con i rispettivi errori x e y
xxx += yyy += .Calcoliamo la somma
( ) ( ) ( ) ( )yxyx yxyxyx +++=+++=+ .Lerrore sulla somma la somma degli errori sugli addendi.
In modo simile, ma un po pi complicato, si pu operare nel caso del prodotto; in generale un
errore iniziale si propaga in una sequenza di calcoli. Una qualit auspicabile per ogni processo
numerico che un errore piccolo sui dati iniziali produca piccoli cambiamenti sul risultato finale.
Dato un problema matematico, per quanto riguarda la propagazione degli errori possiamo, in
maniera schematica, distinguere il comportamento del problema e il comportamento di un
particolare algoritmo utilizzato per risolvere tale problema.
Nel primo caso, facendo lipotesi ideale di essere in grado di risolvere esattamente il problema, si
interessati a vedere come piccoli cambiamenti (perturbazioni) sui dati del problema si trasmettonosui risultati; per caratterizzare un problema rispetto a questo tipo di comportamento si utilizza il
termine di condizionamento.
Definizione
Un problema matematico per il quale piccole variazioni nei dati producono grosse variazioni nei
risultati detto mal condizionato.
Viceversa se il problema tale che piccoli cambiamenti sui dati causano cambiamenti dello stesso
ordine di grandezza sulla soluzione, allora il problema detto ben condizionato.
Nel caso di un algoritmo, per indicare il suo comportamento rispetto alla propagazione degli errori
si usa il termine di stabilit.
Definizione
Un algoritmo nel quale la successione delle operazioni non amplifica gli errori di arrotondamento
si dice stabile; se invece gli errori vengono pesantemente amplificati, lalgoritmo si dice instabile.
La distinzione tra il condizionamento di un problema e la stabilit di un algoritmo importante
perch, come si vedr negli esempi seguenti, mentre per un problema ben condizionato possibile
in generale trovare algoritmi stabili, invece per un problema mal condizionato opportuna una sua
riformulazione, perch nessun algoritmo in grado di risolverlo senza un grave aumento degli
errori sul risultato.
1.10 Problemi mal condizionati
Il condizionamento proprio del problema e non ha alcun legame n con gli errori di
arrotondamento delle operazioni di macchina, n con il particolare procedimento di calcolo
numerico seguito per determinarne la soluzione.
Nel caso di un problema mal condizionato gi linevitabile perturbazione dei dati dovuta alla
rappresentazione finita di macchina genera errori elevati nei risultati, qualunque sia poi lalgoritmo
utilizzato.
Gli esempi seguenti illustrano alcuni tipici casi di problemi mal condizionati.
7/15/2019 Metodi Numerici
31/294
Capitolo 1 Nozioni introduttive
Dipartimento di Matematica
23
Esempio 28 Sistema di equazioni lineariSi consideri il seguente sistema di equazioni lineari.
=+
=+
200110001001
2
yx
yx(1.3)
Risolviamo il sistema con il metodo di Cramer, con aritmetica esatta
11
120011001
211
10002001
12
110001001
11
21
21
====
====
==
D
Dy
D
Dx
DD
D
Alteriamo ora di100
1il coefficiente dix nella prima equazione
=+
=+
+
200110001001
2100
11
yx
yx(1.4)
La soluzione di questo sistema
110002001
12
910011000100
11
10001001
1100
11
1 ==
=
+=+=
D
D
900
1901
9
1
100190120022001
10011
20011001
2100
1
1
21
2
====
=
+=+=
D
Dy~
D
Dx~
D
Il piccolo cambiamento del coefficiente dix ha causato un cambiamento rilevante nella soluzione:
si tratta di un problema mal condizionato.
Si noti che entrambe le soluzioni sono calcolate in aritmetica esatta, quindi non sono stati introdotti
errori di arrotondamento dovuti alluso del computer.
La natura del mal condizionamento del problema precedente pu essere descritta mediante
uninterpretazione geometrica. Le due equazioni del sistema (1.3) hanno come grafico le due rette
tracciate nella figura seguente e la loro intersezione ha per coordinate la soluzione del sistema.
Figura 2
7/15/2019 Metodi Numerici
32/294
24 M. Garetto Metodi Numerici
Universit di Torino
Poich le due rette formano tra loro un angolo molto piccolo, perturbando la prima equazione si
altera di poco la posizione della prima retta, ottenendo la retta tratteggiata, ma cambia molto la
posizione del punto di intersezione e quindi le sue coordinate, che sono le soluzioni del sistema
perturbato (1.4).
Esempio 29 Soluzione di equazioni
Calcoliamo le radici dellequazione
042 =+ xx .
Per = 4 lequazione diventa
( ) 02 2 =x e ha le due radici coincidenti
x1 =x2 = 2
mentre per 6104 = , che corrisponde a una perturbazione del termine noto di 10 6, si hanno leradici
x1 = 2 103
x2 = 2 + 103
.
La perturbazione nei dati quindi amplificata nei risultati di un fattore 103.Si noti che anche in questo esempio tutti i calcoli sono svolti in aritmetica esatta, quindi senza
alcun errore di arrotondamento; si tratta di nuovo di un problema mal condizionato.
Un esempio analogo dato dal calcolo degli zeri del polinomio
( ) ( )( ) ( )2021 = xxxxP In questo caso, a differenza del precedente, gli zeri
2021 2021 === x,.....,x,x sono distinti e ben separati.
Sviluppando il polinomio si ottiene
....xx)x(P += 1920 210Il polinomio
( ) ( ) 19232 xxPxP =
ottenuto perturbando soltanto il coefficiente di19
x di una quantit dellordine di 107
, ha cinque
coppie di zeri complessi coniugati e tra i restanti dieci zeri reali il pi grande, approssimato a 8
cifre significative, 8469082020 .x = .Si pu osservare che un cambiamento molto piccolo in un solo coefficiente (cambiamento
dellordine degli errori di arrotondamento di macchina in semplice precisione) ha prodotto dei
grossi errori sui risultati.
Questi risultati sono stati ottenuti con unaritmetica con precisione molto elevata, per cui gli errori
non sono imputabili a problemi di arrotondamento, ma sono dovuti al mal condizionamento del
problema.
La risoluzione di equazioni algebriche di grado elevato un problema in generale malcondizionato.
1.11 Algoritmi instabili
Molti metodi per risolvere problemi matematici funzionerebbero molto bene se si usasse
laritmetica esatta. Con gli esempi che seguono si vuole mostrare che laritmetica floating point del
calcolatore e gli errori di arrotondamento possono rendere completamente inefficace un algoritmo.
Si osservi che per uno stesso problema si possono usare pi algoritmi diversi; esistono quindi
algoritmi stabili e algoritmi instabili.
Il fenomeno della cancellazione numerica molto spesso alla base di gran parte dei casi di
instabilit numerica degli algoritmi.
7/15/2019 Metodi Numerici
33/294
Capitolo 1 Nozioni introduttive
Dipartimento di Matematica
25
Esempio 30
Soluzione dellequazione di secondo grado
02 =++ cbxax .
Le due radici si ottengono con le note formule risolutive
a
acbbx
a
acbbx
2
4
2
4 22
2
1=+= (1.5)
Si pu presentare cancellazione numerica nel calcolo di x1 se acb 42 quasi uguale a b,
oppure in x2 se acb 42 quasi uguale a b.
Si consideri ad esempio lequazione
052453152010010002 =+ .x.x I coefficienti sono dati con 8 cifre significative; effettuando i calcoli con 8 cifre significative si ha
0025001251000
2
01501000011000
2
524531524011000011000
21
2
21
.x.x
...).(.x ,
==
=
+=
Si pu osservare che nella radice x2 si sono perse ben 6 cifre significative: ci dovuto alla
cancellazione nella sottrazione effettuata nel calcolo dix2.
In questo caso si tratta di instabilit dellalgoritmo. Il fenomeno della cancellazione numerica pu
essere evitato ricordando che
a
cxx =21
e perci, se la cancellazione numerica si presenta nel calcolo di x2, dopo aver calcolato x1 con la
formula risolutiva (1.5), si calcolax2 con la formula
1
2ax
cx =
e viceversa se la cancellazione si presenta in x1.
In questo esempio si ha
0025244999001251000
524531522 .
.
.x =
=
con 8 cifre significative in entrambe le radici.
Esempio 31
Confrontare i risultati del calcolo dei valori delle funzioni
( ) ( ) ( )xx
xxgxxxxf
++=+=
11
per 500=x , effettuando i calcoli con 6 cifre significative.Per la prima funzione si ottiene( ) ( ) 1500110223000500360722383022500500501500500 ....f ====
Per la seconda funzione si ha
( ) 174811743744
500
360722383022
500
500501
500500 .
...g ==
+=
+=
La seconda funzione ottenuta dalla prima moltiplicando e dividendo per xx ++1
( ) ( ) ( )( )( ) xx
x
xx
xxxxxxxxxf
++=
++
+++=+=
11
111
Il valore esatto a 16 cifre significative, ottenuto con Maple, 11.17475530074720.
7/15/2019 Metodi Numerici
34/294
26 M. Garetto Metodi Numerici
Universit di Torino
Gli errori assoluti sono rispettivamente
( )
( ) 4
1
1045017481147201747553007115004720174755300711
1025015001147201747553007115004720174755300711
==
==
...g.E
...f.E
g
f
Il valore ottenuto per ( )500g pi preciso di ( )500f , perch nellespressione di ( )xg non si hacancellazione numerica.
Le due funzioni sono algebricamente equivalenti e rappresentano lo stesso problema; il
condizionamento del problema quindi lo stesso. Sono per disponibili due algoritmi diversi, di
cui il secondo stabile, mentre il primo non lo : infatti nel primo interviene la cancellazione
numerica, mentre nel secondo la cancellazione scomparsa, avendo effettuato formalmente
loperazione di razionalizzazione dellespressione.
Esempio 32
Si supponga di voler utilizzare il calcolatore per avere delle indicazioni sul valore del limite
( )xflimx +
con
( )
+= xxxxf 12 (1.6)
calcolando il valore dif(x) per valori crescenti dix.
Si osservi che la funzionef(x) pu essere scritta anche nella forma algebricamente equivalente
( )xx
x
xx
xxxxx
xf
++=
++
++
+
=11
11
22
22
(1.7)
Nella tabella seguente si riportano i valori dif(x)ottenuti con le due espressioni in corrispondenza a
valori crescenti dix, effettuando i calcoli con 7 cifre significative.
x (1.6) (1.7)
100 0.5000000 0.4999875
500 0.5000000 0.4999995
700 0.4900000 0.4999996
800 0.4800000 0.4999997
1000 0.0000000 0.5000000
2000 0.0000000 0.5000000
3000 0.0000000 0.5000000
Le informazioni ottenute sono discordanti. In base ai valori ottenuti con la (1.6) si potrebbe dedurre
che( ) 0=
+xflim
x
Invece con la (1.7) si pu dedurre il valore corretto del limite
( )2
1=
+xflim
x
Le ragioni di questo comportamento sono del tutto analoghe a quelle dellesempio precedente: nel
calcolo con lespressione (1.6) si verifica la cancellazione numerica dovuta al fatto che per valori
grandi dix si ha
xx +12
7/15/2019 Metodi Numerici
35/294
Capitolo 1 Nozioni introduttive
Dipartimento di Matematica
27
Esempio 33
Si vuole approssimare il valore di e9 con lo sviluppo in serie di Taylor
...n
x...
xxxxe
nx +++++++=
!!4!3!21
432
Ponendo in questa formulax = 9 si ottiene
...e ++=!4
9
!3
9
!2
991
4329
(1.8)
Effettuando i calcoli con 7 cifre significative, le cifre significative del risultato ottenuto sommando
n termini della (1.8) si stabilizzano sul valore S= 0.1784883 103 per n 40; poich e9 unnumero positivo, lalgoritmo che si basa sulla formula (1.8) fornisce un risultato completamente
inattendibile. Anche in questo caso la causa dellinstabilit dellalgoritmo la cancellazione
numerica nella formula (1.8).
Si pu per osservare che vale lidentit
x
x
ee
1=
e si ottiene cos unaltra formula per il calcolo di e9
...e
e
+++++
==
!4
9
!3
9
!2
991
11
4329
9
(1.9)
Pern 27 con la formula (1.9) si ottiene il risultato con 7 cifre significative corrette39
1012340980 = .e .
Molti metodi numerici calcolano una successione di valori, ciascuno dei quali ottenuto dai valori
calcolati precedentemente: tale tecnica si chiama ricorsione.
Se piccoli errori nei valori precedenti vengono fortemente amplificati nei calcoli successivi, il
risultato finale pu essere molto inaccurato. Lesempio seguente illustra un metodo di ricorsione:lalgoritmo utilizzato instabile e viene modificato in modo da ottenere la stabilit.
Esempio 34
Si vuole determinare il valore dellintegrale
1
0
125 dxex x
Posto
=1
0
1dxexI xkk
si integra per parti e si ottiene
==1
0
111
1
0
1 1 kxkxk
k kIdxexkexI .
Inoltre
=== 1
0
1
0
110
11
eedxeI xx .
Si pu quindi trovare 25I partendo da 0I e calcolando successivamente 1I , 2I ,, 25I con la
formula di ricorrenza
25211 1 ,...,,kkII kk == (1.10)
7/15/2019 Metodi Numerici
36/294
28 M. Garetto Metodi Numerici
Universit di Torino
Si ottiene la seguente tabella di valori8
8
I valori di questa tabella e della successiva sono stati calcolati con Matlab
k kI
0 6.3212 101
1 3.6788 101
5 1.4554 101
10 8.3878 10215 5.9034 10220 3.0192 10124 7.7114 10625 1.9279 108
I risultati sono inattendibili per grandi valori di k; infatti ogni kI deve essere positivo, mentre
alcuni dei valori approssimati sono negativi. Inoltre kI tende a zero al crescere di k, mentre i valori
approssimati della tabella crescono.
Il grande errore dovuto al fatto che lerrore su 1kI viene moltiplicato perke propagato su kI .Un errore anche piccolo su 0I viene propagato su 1I , poi moltiplicato per 2 nel calcolo di 2I , poi
ancora moltiplicato per 3 nel calcolo di 3I , e cos via.
Nel calcolo di 25I lerrore iniziale su 0I amplificato del fattore 25! 1025. Pi precisamente,
indicando con kI i valori calcolati di kI e con 0E lerrore su 0I si ha
( )
( )
( )
02525
040334
03030223
02010112
010001
000
!25
!4!34141
!3623131
22212121
11
EII
.....
EIEIII
EIEIEIII
EIEIEIII
EIEIII
EII
=
+===
==+==
+=+===
===
+=
Molti algoritmi ricorsivi mostrano questo tipo di comportamento: si tratta di instabilit numerica.
Una tecnica per evitarla consiste in questo esempio nel seguente procedimento: ricaviamo 1kI
dalla relazione di ricorrenza (1.10), e troviamo
25111
1 ,...,N,NkIkk
I kk == (1.11)
In questa forma lerrore ad ogni passo viene moltiplicato perk1 , e quindi si riduce.
Da quale valore NI si deve iniziare? Sappiamo che
0=
kk
Ilim
quindi ragionevole assumere 0=NI per un opportuno valore N> 25 sufficientemente grande e
poi calcolare 1NI , 2NI ,. fino a 25I .
7/15/2019 Metodi Numerici
37/294
Capitolo 1 Nozioni introduttive
Dipartimento di Matematica
29
Per analizzare il comportamento dellerrore, usando le stesse notazioni di prima, si ha
( )
( )
( )( ) ( )( ) N
NNNNNN
NNNNNN
NNN
ENN...NNN
II
....
ENN
IEN
INN
INN
I
EN
IEINN
INN
I
EII
2621
1
1
11
1
1
1
1
1
1
1
1
11111
2525
2112
11
=
+=
=
=
=+==
+=
Per esempio scegliendoN= 40, nel calcolo di 25I lerrore E40 sul valore di 40I viene moltiplicato
per il fattore( )( ) ( )
23102624014040
1 ...
: lerrore diventa del tutto trascurabile!
Partendo da 040 =I e procedendo nel modo sopra descritto, si ottiene la seguente tabella
k kI
40 0.0
35 2.704628971076339 10230 3.127967393216807 10229 3.229067753559440 10228 3.336928698153123 10227 3.452252546494531 10226 3.575842498277980 10225 3.708621442373924 102
Un interessante esperimento consiste nel calcolare 25I partendo da 140 =I oppure da 140 =I ,anzich da 040 =I : i risultati saranno gli stessi perch lerrore su 40I viene completamenteeliminato.
1.12 Efficienza computazionale
Il tempo di macchina richiesto per il completamento di unoperazione aritmetica in floating point
di solito molto pi lungo del tempo necessario per fare altri tipi di operazioni, quali operazioni su
interi, operazioni di confronto o logiche.
Inoltre, la maggior parte degli algoritmi numerici non richiede un gran numero di operazioni non
aritmetiche.Pertanto una stima ragionevole del tempo macchina richiesto da un certo algoritmo pu essere
ottenuto con il conteggio del numero di operazioni aritmetiche in floating point.
In quasi tutti i calcolatori addizioni e sottrazioni richiedono circa lo stesso tempo di esecuzione, per
cui queste operazioni possono essere contate insieme. Invece le moltiplicazioni e le divisioni hanno
un tempo di esecuzione sensibilmente diverso, perci vengono contate separatamente.
Si usa la notazione
E= a A + b M + c D
per indicare un calcolo che richiede a addizioni, b moltiplicazioni e c divisioni floating-point.
Il numero E di operazioni in virgola mobile eseguite con un certo algoritmo serve come utile
misura dellefficienza dellalgoritmo.
Se sono disponibili due algoritmi per risolvere lo stesso problema, preferibile in generale quello
per cui il numeroE pi piccolo.
7/15/2019 Metodi Numerici
38/294
30 M. Garetto Metodi Numerici
Universit di Torino
Calcolo del valore di un polinomio in un punto: metodo di Horner
Uno dei calcoli numerici pi comuni la valutazione di un polinomio in un punto. Descriviamo
due algoritmi per farlo e vediamo come unattenta analisi dellefficienza possa essere utile per
scegliere lalgoritmo migliore.
Dato un polinomio ( )xPn di grado n e coefficienti ai , i = 0,1,...,n( ) nnn xa...xaxaaxP ++++=
2210
il modo pi ovvio per calcolare il valore di ( )xPn in un assegnato puntox consiste nel calcolare ivalori dei singoli monomi e sommarli.
Questo metodo richiede n addizioni e 2 n moltiplicazioni; la sua efficienza data dal numero
E= n A + 2 n M
Lalgoritmo non consigliabile; un algoritmo molto pi efficiente il seguente, chiamato metodo
di Horner, che descriviamo per semplicit nel caso del calcolo del valore di un polinomio di
quarto grado
( ) 443
32
2104 xaxaxaxaaxP ++++= .
( )xP4
pu anche essere scritto nella forma seguente (forma nidificata)
( )
( )( )( )( )xaaxaxaxa
...xaaxxaxaa
xaxaxaxaaxP
43210
4332
210
44
33
22104
++++=
==++++=
=++++=
In generale si pu scrivere un polinomio ( )xPn di grado n nella forma nidificata( ) ( )( )( )...xaax....axaxaxP nnn +++++= 1210
Questo algoritmo richiede n addizioni e n moltiplicazioni e la sua efficienza
E= n A + n M.
Il metodo di Horner ottimale, nel senso che non possibile calcolare il valore di un polinomio,
dato attraverso i suoi coefficienti, con meno di n addizioni e n moltiplicazioni.
Esempio 35
Calcolare il polinomio
( ) 323 31842381 x.x.x..xP ++= inx = 4.71 usando laritmetica floating point con 3 cifre significative e con arrotondamento.
Si noti che larrotondamento va effettuato dopo ogni calcolo.
La tabella seguente riassume i risultati dei calcoli
x 2x 3x x.23 284 x. 331 x.
valore esatto 4.71 22.1841 104.487111 15.072 106.48368 135.8332443
valoreapprossimato con
arrotondamento 4.71 22.2 105 15.1 107 136
Dettagli sui calcoli con 3 cifre significative:
136105311.31072228484
105714222222714
32
2322
====
=====
.x..x.
..xxx..x
Il valore esatto del polinomio ( )xP3 inx = 4.71 ( ) 22156434683324431354836810607215817143 ......P =++=
Con laritmetica floating point a 3 cifre significative con arrotondamento si ottiene
( ) 945136107115817143 ....P =++=
7/15/2019 Metodi Numerici
39/294
Capitolo 1 Nozioni introduttive
Dipartimento di Matematica
31
Lerrore relativo
00650221564346
945221564346.
.
..Erel
=
Il numero di operazioni effettuate con questo metodo
E= 3A + 5 MIl metodo alternativo consigliato basato sullalgoritmo di Horner, con il quale si ottiene
( ) ( )( )x..x.x.xP 318423813 +++= Sostituendo x = 4.71 e effettuando i calcoli con 3 cifre significative con arrotondamento in ogni
passo del calcolo si ha
( ) ( )( ) 246714318471423714817143 .........P =+++= Lerrore relativo ora
000470221564346
246221564346.
.
..Erel
=
Il numero di operazioni effettuate con questo metodo
E= 3A + 3 M
Il calcolo con lalgoritmo di Horner ha ridotto sensibilmente lerrore relativo, e ci dovuto alla
diminuzione del numero di operazioni effettuate: un modo per ridurre lerrore di arrotondamento
consiste nel ridurre il numero di operazioni che producono errore.
I polinomi dovrebbero sempre essere scritti nella forma nidificata di Horner, prima di valutarli in
un punto.
1.13 Codifica degli algoritmi
Un algoritmo, come noto, un procedimento formato da una sequenza logica di istruzioni
elementari, non ambigue che, eseguite in un ordine stabilito, consentono di trovare la soluzione diun problema in un numero finito di passi.
Gli algoritmi vengono di solito formalizzati seguendo opportuni standard di utilizzo comune, che
ne consentono poi unagevole traduzione in un programma eseguibile da un computer. Uno tra i
formalismi pi diffusi la pseudocodifica basata su un linguaggio molto vicino a quello naturale
scritto.
La pseudocodifica presenta notevoli vantaggi, tra i quali si pu ricordare la possibilit di redigerla
utilizzando un normale programma di videoscrittura e la facilit estrema di traduzione in un
linguaggio di programmazione strutturato.
Per la pseudocodifica si impiega lindentazione, una tecnica che prevede il rientro di gruppi di
istruzioni cos da evidenziare i limiti di cicli ripetitivi di istruzioni o di alternative possibili.
Le convenzioni e le strutture su cui basata la pseudocodifica sono le seguenti.
Tipi di dati: la maggior parte delle variabili sono numeri interi o reali oppure arrays, vettori ematrici; per indicare il generico elemento di un vettore vo di una matrice Asi usano le notazioni
v(i) o A(i,j).
Struttura a blocchi: si usa lindentazione per mettere in evidenza i blocchi di istruzioni. Istruzione di assegnazione: per loperatore di assegnazione si usa il simbolo = . Struttura sequenziale: una sequenza di istruzioni viene scritta su righe separate.
7/15/2019 Metodi Numerici
40/294
32 M. Garetto Metodi Numerici
Universit di Torino
Struttura condizionale: ha la formaif < condizione > then
else
end if
Se al momento dellesecuzione la condizione vera si esegue la sequenza di istruzioni A, altrimenti
si esegue la sequenza B.
Lalternativa else pu essere omessa se vuota; si possono usare strutture condizionali annidate.
Strutture ripetitive: nel caso in cui il numero di iterazioni sia indefinito si usa il ciclo while.Ilciclo while ha la forma
while < condizione > do
end while
Se la condizione vera si esegue il blocco di istruzioni S; poi si ripete il test sulla condizione: se
falsa il ciclo termina, altrimenti si ripete il blocco di istruzioni S. Il processo continua finch la
condizione diventa falsa.
Se il numero di iterazioni noto e definito, si pu usare la struttura ripetitiva controllata da
contatore, che ha due forme a seconda che il contatore incrementi o decrementi il suo valore
1- for i = n to m do 2 - for i = m downto n do
< blocco istruzioni > < blocco istruzioni >
end for end for
Istruzioni di ingresso-uscita: si sintetizzano nella formaInput {lista di ingresso}Output {lista di uscita}
Fine dellalgoritmo: si indica con listruzioneEnd
Esempio 36
Come primo esempi