Sei sulla pagina 1di 28

Lezione 3 – Introduzione al calcolo numerico

Contenuto
§ Gestione dei dati numerici al calcolatore
Identificazione e Simulazione di Processi Chimici AA 2023/24

• Aritmetica del calcolatore


§ Errore computazionale
• Errori di arrotondamento
• Errori di troncamento
§ Stabilità numerica
§ Costo computazionale

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

§ Script allegati: zero.m, Taylor.m, Taylor_negative.m, der_exp.m, computational_time.m


Matematica numerica

Matematica numerica ≠ Matematica «classica»


Identificazione e Simulazione di Processi Chimici AA 2023/24

§ 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

• 𝑥) valore approssimato della stessa grandezza.

§ Esistono due modi di valutare l’errore che si compie nel calcolare 𝑥) (“al posto” di 𝑥).
• Errore assoluto:
𝜀#$% = |𝑥 − 𝑥|
)

-Di solito, 𝜀#$% “dice” poco.


-Può essere elevato, ma accettabile, se l’ordine di grandezza di 𝑥 è alto.

• Errore relativo:
𝑥 − 𝑥)
𝜀&'( =
𝑥
Massimiliano Villone

-E’, in genere, il modo migliore di valutare l’errore.


-E’ spesso espresso in termini percentuali à 𝜀% = 𝑥 − 𝑥) /𝑥 ∗ 100.
-Perde del tutto di significato quando 𝑥 = 0 (ed è comunque poco significativo quando l’ordine di grandezza di 𝑥 3/28
è basso). ISPC – Lezione 3
Introduzione al calcolo numerico
11/03/24
Gestione dei dati numerici (1/7)
§ Un computer memorizza informazioni sulla base del sistema binario.
• L’elemento di memoria di base su cui il calcolatore può scrivere “0” o “1” si chiama “bit”.
Identificazione e Simulazione di Processi Chimici AA 2023/24

• Una sequenza di 8 bit si chiama “byte”.


-In un byte, si possono scrivere 2* = 256 combinazioni diverse di 0 e 1.
-In un byte, quindi, si possono scrivere lo zero ed i primi 255 numeri naturali.

§ Un computer, ovviamente, dispone di un numero finito di banchi di memoria.

§ 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 𝑥.

§ Rappresentazione normalizzata dei numeri in virgola mobile (standard IEEE 754):

𝑓𝑙(𝑥) = −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

§ Non bisogna confondere precisione ed accuratezza.


• Ad esempio, 3.133333333 è una stima di 𝜋 con una precisione di 10 cifre decimali, ma è accurata solo alla seconda
cifra decimale.

“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

• In MATLAB, 𝜀8 = 2!9- ≃ 2.22×10!": . Per visualizzarne il valore, si può digitare

>> 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

vengono immagazzinate 7 cifre significative.


• In singola precisione
- 𝜀8 = 1.22×10!; ,
- 𝑥012 ∼ 𝑂(10!<9 ),
8/28
- 𝑥0#4 ∼ 𝑂(106* ). ISPC – Lezione 3
Introduzione al calcolo numerico
11/03/24
Gestione dei dati numerici (6/7)
§ Fissata la precisione, tutti i numeri in valore assoluto minori di 𝑥012 vengono riconosciuti da MATLAB come 0 à
underflow.
Identificazione e Simulazione di Processi Chimici AA 2023/24

>> 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

§ Per verificare se l’opzione è attiva:

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

-la commutatività dell’addizione: 𝑓𝑙 𝑥 + 𝑦 = 𝑓𝑙 𝑦 + 𝑥 ∀𝑥, 𝑦 ∈ 𝔽,


-la commutatività della moltiplicazione: 𝑓𝑙 𝑥𝑦 = 𝑓𝑙 𝑦𝑥 ∀𝑥, 𝑦 ∈ 𝔽.
• Sono violate
-l’unicità dello zero,
-la proprietà associativa,
-la proprietà distributiva.

§ Violazione dell’unicità dello zero


• Consideriamo la seguente sequenza di comandi (cfr. zero.m):
a = 1;
b = 1;
Massimiliano Villone

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

§ Violazione della proprietà distributiva


• Per ragioni analoghe, anche la proprietà distributiva può essere violata:
>> a = 1.0e+308;
Massimiliano Villone

>> 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

maggiore del massimo memorizzabile.

𝑥 − 𝑓𝑙(𝑥) 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.

• Indice della Borsa di Vancouver


Nel gennaio 1982, la Borsa di Vancouver istituì un nuovo indice, cui fu attribuito un valore pari a 1000.
Dopo 22 mesi di variazioni del suo valore di mercato, effettuati arrotondando il valore dell’indice alla terza cifra
Massimiliano Villone

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

era costato 7 G$) fu lanciato da Kourou (Guiana Francese).


Dopo 37 secondi dal lancio, un errore di progettazione del sistema di guida del
razzo causò la conversione di un dato in virgola mobile a 64 bit relativo alla velocità
orizzontale del razzo in un numero intero a 16 bit.
Siccome il numero era maggiore di 32767, si verificò un un errore di overflow, che
mandò il razzo fuori rotta e lo fece esplodere.

• Sistema di difesa antimissile Patriot


Il sistema, utilizzato dagli USA durante la Guerra del Golfo, impiegava un registro
di valori di tempo con un passo di 1/10 s.
La gestione dei numeri era basata su una rappresentazione binaria a 24 bit.
La rappresentazione binaria di 1/10 ha infinite cifre, dunque era approssimata.
Dopo 100 ore di attività, il sistema aveva accumulato un errore di 0.34 s. Ciò rese
Massimiliano Villone

impossibile l’intercettazione di uno SCUD iracheno, che, viaggiando a circa 1700


m/s, percorreva circa mezzo chilometro in 0.3 s.

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):

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;
Massimiliano Villone

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

𝑥 𝑒 > calcolato 𝑒 > “vero”


1 2.718282 2.718281828459046
5 148.41318 148.4131591025766
10 22026.467 22026.46579480671
-1 0.3678794 0.367879441171442
-5 0.0067379 0.006737946999087
-10 4.9762736 x 10-4 4.539992943405057 x 10-5

Per 𝑥 > 0, i risultati numerici sono in accordo con i valori corretti.


Per 𝑥 < 0, si possono ottenere soluzioni non soddisfacenti (per 𝑥 = −10, l’algoritmo “sbaglia” di un ordine di
grandezza).
Massimiliano Villone

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

𝑦 = 𝑎𝑥

𝜀? ~𝜀>

§ Propagazione degli errori di arrotondamento nell’esecuzione di una differenza:

𝑧=𝑥−𝑦

𝑥 𝑦
𝜀@ ~ 𝜀> + 𝜀
𝑥−𝑦 𝑥−𝑦 ?
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

end Inserire il valore di x: -10


disp('e^x = ') e^x =
disp(1/sum) 4.5399927e-05
• Gli errori di arrotondamento, in questo caso, non si amplificano!
• Dato un problema matematico, esiste sempre un algoritmo risolutivo che impedisca la propagazione degli errori di 20/28
ISPC – Lezione 3
arrotondamento à algoritmo stabile. Introduzione al calcolo numerico
11/03/24
Errori di troncamento (1/2)
§ Spesso, i modelli matematici di interesse in ingegneria chimica comprendono operazioni che comportano passaggi al
limite (e.g., derivate).
Identificazione e Simulazione di Processi Chimici AA 2023/24

§ 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$'

Eseguiamo al variare di ℎ, ottenendo i risultati in tabella 10$( 2.72036 2.07×10$'


10$) 2.71797 3.10×10$(
10$* 2.62261 9.57×10$&
10$+ 4.76837 2.05
10$, 0 2.72
Massimiliano Villone

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

• Stabilità di un fenomeno fisico.


-Può convenire definire un problema fisico “ben posto” o “mal posto”.
-Se si desidera trattare numericamente un fenomeno fisico, esso non deve essere “divergente” (e.g., esplosivo).
• L’analisi numerica permette di risolvere solo problemi ben posti.
• Stabilità della modellazione matematica di un fenomeno fisico.
-Alcune formulazioni risentono poco di piccole variazioni nei dati, altre, invece, danno risultati completamente
diversi anche se si fanno piccolissime variazioni nei dati o nella struttura stessa del problema matematico.
-Indipendentemente dagli algoritmi numerici utilizzati, nel primo caso si parlerà di “formulazione ben
condizionata”, nel secondo caso di “formulazione mal condizionata”.
• Stabilità dell’algoritmo che si usa per risolvere numericamente il problema matematico.
-In generale, è possibile utilizzare diversi algoritmi per risolvere numericamente uno stesso problema
matematico.
Massimiliano Villone

-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

Modellazione Errori di modello (𝑒0 )

Problema matematico ben condizionato

Scelta metodo risolutivo Errori di troncamento (𝑒. )

Algoritmo numerico stabile

Implementazione al calcolatore Errori di arrotondamento (𝑒# )

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

4 × # 𝑐𝑜𝑟𝑒 × frequenza di clock

- Ad esempio, un processore quad-core a 4 GHz ha una potenza di calcolo di circa 64 Giga-flops.


- Nel 2019, un supercomputer IBM ha raggiunto 148.6 Peta-flops.
Massimiliano Villone

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

• costante, se richiede un numero di operazioni indipendente da 𝑑,


• lineare, se richiede 𝑂(𝑑) operazioni,
• polinomiale, se richiede 𝑂(𝑑T ) operazioni, con 𝑚 intero positivo,
• esponenziale, se richiede 𝑂(𝑐 U ) operazioni, con 𝑐 intero positivo,
• fattoriale, se richiede 𝑂(𝑑!) operazioni.

§ 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 = [ ];

Tempo computazionale [s]


3.5
sizeA = [ ];
3
for k = 50:step:n
AA = A(1:k,1:k); 2.5

vv = v(1:k)'; 2
tstart = tic;
1.5
b = AA*vv;
Massimiliano Villone

tt = toc(tstart); 1

T = [T, tt]; 0.5


sizeA = [sizeA, k];
0
end 0 500 1000 1500 2000 2500 3000 3500 4000
Dimensione della matrice
plot(sizeA,T,'o’)
grid on
28/28
xlabel('Dimensione della matrice','FontSize',14) ISPC – Lezione 3
ylabel('Tempo computazionale [s]','FontSize',14) Introduzione al calcolo numerico
11/03/24

Potrebbero piacerti anche