Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Contenuto
§ Gestione dei dati numerici al calcolatore
Identificazione e Simulazione di Processi Chimici AA 2023/24
Riferimenti Bibliografici
§ A. Quarteroni, E. Saleri. P. Gervasio, Calcolo Scientifico 6° Ed., Springer (2017)
§ A. Quarteroni, R. Sacco, E. Saleri, Numerical Mathematics 2° Ed., Springer (2007)
§ A. Quarteroni, R. Sacco, E. Saleri, P. Gervasio, Matematica Numerica 4° Ed., Springer (2014)
Massimiliano Villone
§ Esempio
• In matematica «classica», dati due numeri reali 𝑎, 𝑏 ≠ 0, l’operazione 𝑏/𝑎 è equivalente all’operazione 𝑎!" ∗ 𝑏.
• In matematica numerica, le due operazioni possono avere un diverso «costo» e addirittura portare a risultati diversi.
Massimiliano Villone
2/28
ISPC – Lezione 3
Introduzione al calcolo numerico
11/03/24
Valutazione degli errori
§ Definiamo
• 𝑥 valore esatto di una grandezza,
Identificazione e Simulazione di Processi Chimici AA 2023/24
§ Esistono due modi di valutare l’errore che si compie nel calcolare 𝑥) (“al posto” di 𝑥).
• Errore assoluto:
𝜀#$% = |𝑥 − 𝑥|
)
• Errore relativo:
𝑥 − 𝑥)
𝜀&'( =
𝑥
Massimiliano Villone
§ Al computer si può rappresentare soltanto un sottoinsieme dei numeri reali di dimensione finita, detto “insieme dei
numeri floating-point” (𝔽).
• Inoltre, “infilare” i numeri reali in un numero finito di celle di memoria implica una rappresentazione approssimata
dei numeri stessi.
Massimiliano Villone
4/28
ISPC – Lezione 3
Introduzione al calcolo numerico
11/03/24
Gestione dei dati numerici (2/7)
§ Ogni numero reale 𝑥 viene rappresentato dalla macchina con un valore arrotondato, che si indica con 𝑓𝑙(𝑥) e viene
detto “numero in virgola mobile” (floating-point number).
Identificazione e Simulazione di Processi Chimici AA 2023/24
• Dal momento che può essere memorizzata solo una quantità finita di cifre decimali, 𝑓𝑙(𝑥) non coincide
necessariamente con 𝑥.
𝑓𝑙(𝑥) = −1 𝑠 𝑚𝛽𝑒
in cui
• 𝑠 può valere 0 o 1 e rende conto del segno del numero,
• 𝛽 è un numero naturale ≥ 2 ed è detto “base” della rappresentazione,
• 𝑒 è un esponente variabile tra gli estremi 𝐿 ed 𝑈, con 𝐿 < 0 ed 𝑈 > 0,
• 𝑚 = 0. 𝑎" 𝑎- … 𝑎. è detta “mantissa”,
Massimiliano Villone
con 𝑎" ≠ 0
0 ≤ 𝑎/ ≤ 𝛽 − 1 per 𝑖 = 2, … , 𝑡
• 𝑡 (numero di cifre contenute nella mantissa) è detta “precisione”.
5/28
ISPC – Lezione 3
Introduzione al calcolo numerico
11/03/24
Gestione dei dati numerici (3/7)
§ In forma compatta, l’insieme 𝔽 è caratterizzato dalla base 𝛽, dalla precisione 𝑡 e dagli estremi 𝐿 ed 𝑈 entro cui è
compreso l’esponente 𝑒 à 𝔽(𝛽, 𝑡, 𝐿, 𝑈).
Identificazione e Simulazione di Processi Chimici AA 2023/24
§ Data la finitezza di 𝐿 ed 𝑈, non si possono rappresentare numeri arbitrariamente piccoli o grandi in valore assoluto.
• 𝑥012 = 𝛽 3!" ,
• 𝑥0#4 = 𝛽𝑈 (1 − 𝛽 !5 )
§ Di default, l’insieme dei numeri floating point di MATLAB è 𝔽(2,53, −1021, 1024).
• 53 cifre significative in base 2 corrispondono a 15 cifre significative in base 10.
• In valore assoluto, il minimo ed il massimo numero rappresentabili sono
-𝑥012 ∼ 𝑂(10!6-6 )
-𝑥0#4 ∼ 𝑂(1067* )
Massimiliano Villone
“There's no sense in being precise when you don't even know what you're talking about.” 6/28
ISPC – Lezione 3
John von Neumann Introduzione al calcolo numerico
11/03/24
Gestione dei dati numerici (4/7)
§ Di default, MATLAB visualizza 4 cifre dopo la virgola.
• Questa impostazione può essere cambiata.
Identificazione e Simulazione di Processi Chimici AA 2023/24
-Esempio:
>> 1/7
ans =
0.1429
>> format long
>> 1/7
ans =
0.142857142857143
>> format short e
>> 1/7
ans =
1.4286e-01
>> format long e
Massimiliano Villone
>> 1/7
ans =
1.428571428571428e-01
- Il comando format (o format short ) ripristina le impostazioni di default.
- NOTA: modificare il formato di visualizzazione dei dati numerici non altera la precisione degli stessi. 7/28
ISPC – Lezione 3
Introduzione al calcolo numerico
11/03/24
Gestione dei dati numerici (5/7)
§ Per definizione, la distanza fra 1 ed il più vicino numero floating-point maggiore di 1 memorizzabile da un computer
prende il nome di precisione della macchina ed è pari a
Identificazione e Simulazione di Processi Chimici AA 2023/24
𝜀8 = 𝛽"!5
>> eps
ans =
2.2204e-16
§ Di default, MATLAB immagazzina 15 cifre significative per ogni dato numerico: questa impostazione è detta «doppia
precisione».
§ Esiste la possibilità di “risparmiare” memoria forzando la “singola precisione”, in cui, per ogni dato numerico,
Massimiliano Villone
>> 10^-324
ans =
0
§ Fissata la precisione, tutti i numeri in valore assoluto maggiori di 𝑥0#4 vengono riconosciuti da MATLAB come infinito
à overflow.
>> 10^309
ans =
Inf
Massimiliano Villone
9/28
ISPC – Lezione 3
Introduzione al calcolo numerico
11/03/24
Gestione dei dati numerici (7/7)
§ In genere, MATLAB non si blocca né emette messaggi di errore se calcola valori indeterminati (NaN, cioè “Not a
Number”) o infiniti (Inf).
Identificazione e Simulazione di Processi Chimici AA 2023/24
§ Ciò può avere la conseguenza che il risultato di un’operazione sia drasticamente sbagliato (sebbene il software riesca,
formalmente, a calcolare un risultato).
§ Per evitare di incorrere in tale rischio, si può digitare nella finestra dei comandi
dbstop if naninf
dbstatus
Massimiliano Villone
§ Per resettarla:
dbclear all
10/28
ISPC – Lezione 3
Introduzione al calcolo numerico
11/03/24
Aritmetica del calcolatore (1/3)
§ Le operazioni elementari fra numeri di 𝔽 non godono di tutte le proprieta delle analoghe operazioni definite in ℝ.
• Sono valide
Identificazione e Simulazione di Processi Chimici AA 2023/24
while a+b ~= a
disp(b)
b = b/2;
end
• In ℝ, una tale sequenza è, evidentemente, infinita. Che succede in 𝔽? 11/28
ISPC – Lezione 3
Introduzione al calcolo numerico
11/03/24
Aritmetica del calcolatore (2/3)
§ Violazione della proprietà associativa
• In 𝔽, l’associatività è violata quando si verificano overflow o underflow. Proviamolo:
Identificazione e Simulazione di Processi Chimici AA 2023/24
>> a = 1.0e+308;
>> b = 1.1e+308;
>> c = -1.001e+308;
>> a + (b + c)
ans =
1.0990e+308
>> (a + b) + c
ans = Inf
>> b = 1.1e+308;
>> c = 0.1;
>> (a + b) * c
ans = Inf
>> a * c + b * c 12/28
ISPC – Lezione 3
ans = 2.1000e+307 Introduzione al calcolo numerico
11/03/24
Aritmetica del calcolatore (3/3)
§ Cancellazione numerica
Identificazione e Simulazione di Processi Chimici AA 2023/24
>> x = 1.0e-15;
>> (1 + x) - 1
ans =
1.1102e-15
".7!".""7-
• Il risultato esatto sarebbe dovuto essere, ovviamente, 1.0e-15 à 𝜀% = ".7
∗ 100 ≃ 11%.
• Quando si sottraggono tra loro due numeri quasi uguali (rispetto alla precisione del calcolatore) si subisce una
perdita di cifre significative.
-Le cause non sono da attribuire all'operazione di sottrazione in sé, ma questa operazione amplifica gli errori già
presenti nella rappresentazione approssimata effettuata dal calcolatore per poter memorizzare i numeri in
memoria.
Massimiliano Villone
«Il “nemico numero uno“ del calcolo numerico è la sottrazione di due numeri quasi uguali»
Guido Buzzi-Ferraris
13/28
ISPC – Lezione 3
Introduzione al calcolo numerico
11/03/24
Errori di arrotondamento (1/7)
§ Siccome, per ogni dato numerico, il computer può memorizzare un numero finito di cifre significative, la macchina
commetterà errori di arrotondamento (round-off) su tutti i dati il cui valore vero ha un numero di cifre significative
Identificazione e Simulazione di Processi Chimici AA 2023/24
𝑥 − 𝑓𝑙(𝑥) 1
𝜀# = ≤ 𝜀8
𝑥 2
§ Torniamo all’esempio della slide 2 e consideriamo il problema 7𝑥 = 21, risolvibile in due modi:
• 𝑥 = 21/7
>> format long
>> single(21)/single(7)
ans =
single
3
• 𝑥 = 7!" ×21
Massimiliano Villone
>> single(7^-1)*single(21)
ans =
single
3.0000002
14/28
-NOTA: Per «esaltare» il problema, abbiamo forzato la singola precisione. ISPC – Lezione 3
Introduzione al calcolo numerico
11/03/24
Errori di arrotondamento (2/7)
§ Gli errori di arrotondamento sono generalmente piccoli; tuttavia, se ripetuti all’interno di algoritmi lunghi e complessi,
possono propagarsi (o amplificarsi), generando effetti catastrofici.
Identificazione e Simulazione di Processi Chimici AA 2023/24
§ Ci sono alcuni esempi famosi di disastri dovuti alla propagazione degli errori di arrotondamento.
decimale, esso era pari a 524.811, ma il suo valore "vero" sarebbe dovuto essere 1098.892.
E’ stato stimato che l’arrotondamento comportasse la perdita di circa 25 punti al mese.
15/28
ISPC – Lezione 3
https://en.wikipedia.org/wiki/Vancouver_Stock_Exchange Introduzione al calcolo numerico
11/03/24
Errori di arrotondamento (3/7)
• Razzo Ariane 5
Il 4 giugno 1996, il razzo Ariane 5 dell’ESA (del valore di 500 M$ ed il cui sviluppo
Identificazione e Simulazione di Processi Chimici AA 2023/24
16/28
ISPC – Lezione 3
https://www-users.cse.umn.edu/~arnold/disasters/disasters.html Introduzione al calcolo numerico
11/03/24
Errori di arrotondamento (4/7)
§ Esempio: si vuole calcolare il valore di 𝑒 > tramite l’algoritmo basato sull’espansione in serie di Taylor
𝑥- 𝑥6
Identificazione e Simulazione di Processi Chimici AA 2023/24
>
𝑒 =1+𝑥+ + +⋯
2! 3!
Implementiamo l’algoritmo in MATLAB, lavorando in singola precisione (cfr. Taylor):
end
disp('e^x = ')
disp(sum)
17/28
ISPC – Lezione 3
Introduzione al calcolo numerico
11/03/24
Errori di arrotondamento (5/7)
Eseguiamo al variare di 𝑥:
Identificazione e Simulazione di Processi Chimici AA 2023/24
Sebbene l’algoritmo sia, in linea di principio, corretto, c’è qualcosa che lo rende inutilizzabile nella pratica.
• Per 𝑥 < 0, l’algoritmo è instabile, poiché i piccoli errori introdotti dall’aritmetica numerica si possono amplificare a
causa delle differenze fra termini quasi uguali, con effetti disastrosi sul risultato.
18/28
ISPC – Lezione 3
Introduzione al calcolo numerico
11/03/24
Errori di arrotondamento (6/7)
§ Propagazione degli errori di arrotondamento nell’esecuzione del prodotto per una costante:
Identificazione e Simulazione di Processi Chimici AA 2023/24
𝑦 = 𝑎𝑥
𝜀? ~𝜀>
𝑧=𝑥−𝑦
𝑥 𝑦
𝜀@ ~ 𝜀> + 𝜀
𝑥−𝑦 𝑥−𝑦 ?
Massimiliano Villone
19/28
ISPC – Lezione 3
Introduzione al calcolo numerico
11/03/24
Errori di arrotondamento (7/7)
§ Torniamo all’esempio: come si potrebbe ovviare al problema che si è presentato?
• Gli errori sono dovuti alle sottrazioni tra numeri simili. Infatti, se 𝑥 < 0, i termini con potenze pari sono positivi e
Identificazione e Simulazione di Processi Chimici AA 2023/24
quelli con potenze dispari negativi. Per 𝑥 < 0, si potrebbe usare quest’altro algoritmo:
1 1
𝑒 > = !> =
𝑒 (−𝑥)- (−𝑥)6
1 + (−𝑥) + 2! + 3! + ⋯
• Implementiamolo (cfr. Taylor_negative.m) ed eseguiamolo per 𝑥 = −10:
x = single(input('Inserire il valore di x: '));
sum = single(1);
term = single(1);
i = single(1);
while (sum + term) ~= sum
term = (-x)^i/factorial(i);
sum = sum+term;
i = i + 1; >> Taylor_negative
Massimiliano Villone
§ Il computer non è in grado di eseguire operazioni del genere, quindi ricorre a formule approssimate, che introducono
errori di troncamento.
• Tali errori sono assenti nei problemi matematici di dimensione intrinsecamente finita (e.g., sistemi di equazioni
algebriche lineari).
§ Esempio: si vuole determinare numericamente il valore della derivata prima di una funzione 𝑓(𝑥) in un generico punto
𝑥.
Si può usare la formula
𝑓 𝑥 + ℎ − 𝑓(𝑥)
𝑓A 𝑥 ≃
ℎ
che deriva dal troncamento al I ordine dell’espansione in serie della funzione
A
𝑓 AA 𝑥 -
𝑓 𝑥+ℎ =𝑓 𝑥 +𝑓 𝑥 ℎ+ ℎ +⋯
Massimiliano Villone
2!
L’errore che si commette impiegando l’espressione approssimata è l’errore di troncamento
𝑓 AA 𝜂 -
𝜀. = ℎ
2 21/28
con 𝑥 < 𝜂 < 𝑥 + ℎ ISPC – Lezione 3
Introduzione al calcolo numerico
11/03/24
Errori di troncamento (2/2)
§ Abbiamo visto che, approssimando una derivata prima con un rapporto incrementale, si commette un errore di
troncamento.
Identificazione e Simulazione di Processi Chimici AA 2023/24
§ Ovviamente, l’entità dell’errore dipende da ℎ; ci si potrebbe aspettare che, al diminuire di ℎ, l’errore diminuisca.
• Verifichiamolo con un esempio: calcoliamo numericamente il valore della derivata prima di 𝑓 𝑥 = 𝑒 > in 𝑥 = 1, il
cui valore vero è 𝑒(≃ 2.71828) (cfr. der_exp.m):
ℎ 𝑓’(𝑥) num 𝜀!"#
h = single(input('Inserire il valore di h: '));
1 4.67077 1.95
x = single(1); 10$% 2.85884 1.41×10$%
derf = (exp(x + h) - exp(x))/h 10$& 2.73191 1.36×10$&
10$' 2.71988 1.60×10$'
L’errore inizialmente diminuisce, poi comincia a crescere e l’approssimazione diventa sempre peggiore.
L’ultimo dato indica che 𝑓(𝑥) ed 𝑓(𝑥 + ℎ) non sono più distinguibili à errori di arrotondamento.
22/28
ISPC – Lezione 3
Introduzione al calcolo numerico
11/03/24
Stabilità numerica (1/2)
§ Con il termine “stabilità” vengono designati concetti completamente diversi tra loro. È opportuno distinguere
chiaramente.
Identificazione e Simulazione di Processi Chimici AA 2023/24
-Dato un problema matematico ben condizionato, un algoritmo numerico è stabile se riesce ad inibire la
propagazione degli errori di arrotondamento.
-Un algoritmo che può generare un aumento incontrollato degli errori di arrotondamento anche quando è
applicato ad un problema ben condizionato viene detto instabile.
23/28
ISPC – Lezione 3
Introduzione al calcolo numerico
11/03/24
Stabilità numerica (2/2)
Problema fisico/chimico ben posto (non esplosivo, non caotico, …)
Identificazione e Simulazione di Processi Chimici AA 2023/24
Risultato numerico
Massimiliano Villone
§ Nella gestione di un dato numerico, la somma degli errori di arrotondamento e troncamento costituisce l’errore
computazionale.
𝜀S = 𝜀# + 𝜀.
• Si può ridurre 𝜀# lavorando in doppia precisione. 24/28
ISPC – Lezione 3
• Si può ridurre 𝜀. scegliendo formule approssimate più accurate. Introduzione al calcolo numerico
11/03/24
Costo computazionale (1/4)
§ La risoluzione di un problema al computer viene effettuata attraverso un algoritmo, ossia una sequenza finita di passi
necessari per ottenere un risultato a partire da dati di ingresso.
Identificazione e Simulazione di Processi Chimici AA 2023/24
§ Il costo computazionale di un algoritmo è il numero di operazioni aritmetiche che esso richiede per la sua esecuzione.
§ La velocità di un elaboratore è il numero di operazioni floating-point che la macchina esegue nell’unità di tempo e si
misura in flops (floating-point operations per second).
• Un moderno processore “consumer” ha una potenza di calcolo esprimibile come
25/28
ISPC – Lezione 3
Introduzione al calcolo numerico
11/03/24
Costo computazionale (2/4)
§ Dato un parametro 𝑑 che quantifica la dimensione di un problema (ad esempio, l’ordine della matrice dei coefficienti di
un sistema lineare), un algoritmo ha complessità
Identificazione e Simulazione di Processi Chimici AA 2023/24
§ Esempio
Consideriamo una matrice quadrata 𝑨 di dimensione 𝑛. Vogliamo quantificare il costo computazionale dell’usuale
algoritmo per eseguire il prodotto 𝒓 = 𝑨 ⋅ 𝒗, con 𝒗 ∈ ℝV .
La componente 𝑗-esima del prodotto è 𝑟W = 𝐴W" 𝑣" + 𝐴W- 𝑣- + ⋯ + 𝐴W2 𝑣2 . Per calcolarla, sono richiesti 𝑛 prodotti e 𝑛 −
1 somme.
𝒓 ha 𝑛 componenti, quindi si devono eseguire 𝑛(2𝑛 − 1) operazioni.
Massimiliano Villone
Dunque, l’algoritmo richiede 𝑂(𝑛- ) operazioni, pertanto esso ha complessità polinomiale (in particolare, quadratica)
rispetto alla dimensione 𝑛 del problema.
26/28
ISPC – Lezione 3
Introduzione al calcolo numerico
11/03/24
Costo computazionale (3/4)
§ La complessità di un algoritmo è un parametro importante nella scelta della tecnica risolutiva di un problema numerico.
Identificazione e Simulazione di Processi Chimici AA 2023/24
§ Quando l’algoritmo viene codificato in un programma, possono intervenire altri fattori che ne condizionano l’efficacia,
ad esempio l’accesso alle memorie.
§ La valutazione delle prestazioni di un programma può essere effettuata misurandone il tempo di esecuzione (o tempo
di CPU, poiché è il tempo impiegato dall’unità centrale del calcolatore per eseguire il programma).
Massimiliano Villone
27/28
ISPC – Lezione 3
Introduzione al calcolo numerico
11/03/24
Costo computazionale (4/4)
§ Esempio
Valutiamo il tempo computazionale necessario ad eseguire il prodotto tra una matrice quadrata ed un vettore al variare
Identificazione e Simulazione di Processi Chimici AA 2023/24
della dimensione della matrice (computer con processore 3.7 GHz Intel Core i5 6 core) (cfr. computational_time.m).
clear all
close all
clc
n = 4000; 10
-3
5
step = 50;
4.5
A = rand(n,n);
v = rand(n); 4
T = [ ];
vv = v(1:k)'; 2
tstart = tic;
1.5
b = AA*vv;
Massimiliano Villone
tt = toc(tstart); 1