Corso di Matematica per la Chimica
Dott.ssa Maria Carmela De BonisDipartimento di Matematica, Informatica e Economia
Universita della Basilicataa.a. 2014-15
Operazioni macchina e Cancellazione numerica
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Terza conseguenza della rappresentazione dei numericome parole di lunghezza fissa - Errori nei calcoli
Non sempre una operazione tra due o piu numeri macchina produceun risultato che e un numero macchina.
Si puo verificare una situazione di overflow o underflow.
Inoltre la forma normalizzata del risultato potrebbe avere un numerodi cifre decimali superiore alla precisione con cui si sta lavorando.
Pertanto in un calcolatore e impossibile implementare esattamente leoperazioni aritmetiche.
Dovremo accontentarci delle cosiddette operazioni macchina:
a due numeri macchina viene associato un terzo numero macchinaottenuto arrotondando l’esatto risultato dell’operazione aritmetica.
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Siano a e b due numeri reali e siano A = fl(a) e B = fl(b) icorrispondenti numeri macchina.
Denotando con ⊕,,⊗,� le operazioni macchina corrispondentirispettivamente alle operazioni aritmetiche +,−,×, /, si ha
A⊕ B = fl(A + B) = (A + B)(1 + δ1)
A B = fl(A− B) = (A− B)(1 + δ2)
A⊗ B = fl(A× B) = (A× B)(1 + δ3)
A� B = fl(A/B) = (A/B)(1 + δ4)
con|δi| ≤ u ≤ ε i = 1, 2, 3, 4
Dunque, quando si effettua una operazione macchina si commette unerrore dell’ordine della precisione di macchina ε.
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Osservazione
I precedenti risultati valgono per lo standard IEEE 754 che utilizza icosiddetti bit di guardia, cioe per eseguire le operazioni i numerimacchina vengono memorizzati in opportuni registri con dei bitaggiuntivi allo scopo di ridurre gli effetti degli errori diarrotondamento.
In tale sistema si ha anche:
fl(√
x) =√
x(1 + δ), |δ| ≤ ε
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Utilizzando i precedenti risultati e possibile stimare, in via teorica, glierrori in tutte le espressioni.
Per esempio
fl(x(y + z)) = [x · fl(y + z)](1 + δ1) = x(y + z)(1 + δ2)(1 + δ1)
≈ x(y + z)(1 + δ1 + δ2),
avendo trascurato il prodotto δ1δ2 perche “piccolo”.
Dunquefl(x(y + z)) ≈ x(y + z)(1 + δ3), |δ3| ≤ ε
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Domanda
Per le operazioni macchina valgono ancora le note proprieta(commutativa, associativa, distributiva, etc) delle operazioniaritmetiche?
La risposta non e sempre affermativa.
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
La proprieta commutativa permane:
A⊕ B = B⊕ A e A⊗ B = B⊗ A
mentre, in generale,
(A⊕ B)⊕ C 6= A⊕ (B⊕ C)
(A⊗ B)⊗ C 6= A⊗ (B⊗ C)
A⊗ (B⊕ C) 6= (A⊗ B)⊕ (A⊗ C)
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Esempio 1
(A⊕ B)⊕ C 6= A⊕ (B⊕ C)
N = 10, t = 6Dati i numeri a = 0.1234567, b = 6666.325 e c = −6666.325
⇒ A = fl(a) = 0.123457 100
⇒ B = fl(b) = 0.666633 104
⇒ C = fl(c) = −0.666633 104
fl(fl(A + B) + C) = fl(0.666645 104− 0.666633 104) = 0.120000 100
mentre
fl(A + fl(B + C)) = fl(0.123457 100 + 0) = 0.123457 100
Ovviamente il risultato con tutte le cifre significative corrette e ilsecondo.
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Esempio 2
A⊗ (B⊕ C) 6= (A⊗ B)⊕ (A⊗ C)
N = 10, t = 6Dati i numeri a = 5416460, b = 43.2457 e c = 43.7458
⇒ A = fl(a) = 0.541646 107
⇒ B = fl(b) = 0.432457 102
⇒ C = fl(c) = 0.437458 102
fl(A ∗ fl(B + C)) = fl(0.541646 107 ∗ 0.869915 101) = 0.471186 109
mentre
fl(fl(A∗B)+fl(A∗C)) = fl(0.234239 109+0.236947 109) = 471186000
Osserviamo che
a ∗ (b + c) = a ∗ b + a ∗ c = 471185980.090000 · · ·
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Un’ulteriore relazione anomalia e
A⊕ B = A, se |B| � |A|,
dunque, l’elemento neutro della somma non e unico.
Esempio
N = 10, t = 16
a = exp(18) = 0.6565996913733051 · 108
b = exp(−20) = 0.2061153622438558 · 10−8
a⊕ b = fl(a + b) = 0.6565996913733051 108 = fl(a)
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Cio accade perche, nell’eseguire la somma tra numeri macchinaaventi esponenti diversi, il calcolatore esegue i seguenti passi:
1 individua il numero avente l’esponente q piu grande;2 memorizza tutti gli altri numeri utilizzando la loro
rappresentazione con esponente q;3 esegue la somma.
Infatti, nel precedente esempio, si ha
fl(b) = 0.2061153622438558 10−8
= 0.00000000000000002061153622438558 108
e, arrotondando a 16 cifre,
fl(b) = 0.
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Somma di piu numeri
Sempre a causa dell’errore di incolonnamento, se occorre sommarepiu numeri, tutti positivi e aventi ordini di grandezza diversi, perottenere un risultato finale accurato conviene procedere in ordineascendente (dal piu piccolo al piu grande), cosicche anche i valori piupiccoli diano contributo alla somma.
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Esempio
Dati i numeri in base 10
0.8999e + 4 0.7889e + 3 0.7767e + 3
0.7555e + 2 0.6266e + 2 0.4298e + 1
0.2581e + 1 0.2653e + 0 0.1580e + 0
Supponendo di lavorare in aritmetica floating-point con t = 4,sommare i numeri in ordine ascendente e discendente e confrontare irisultati ottenuti con il valore esatto s = 0.107101123e + 5.
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Sommiamo prima in ordine discendente:
s1 = fl(0.8999e + 4 + 0.7889e + 3) = 0.9788e + 4s1 = fl(s1 + 0.7767e + 3) = 0.1056e + 5s1 = fl(s1 + 0.7555e + 2) = 0.1064e + 5s1 = fl(s1 + 0.6266e + 2) = 0.1070e + 5s1 = fl(s1 + 0.4298e + 1) = 0.1070e + 5s1 = fl(s1 + 0.2581e + 1) = 0.1070e + 5s1 = fl(s1 + 0.2653e + 0) = 0.1070e + 5s1 = fl(s1 + 0.1580e + 0) = 0.1070e + 5
Osserviamo che solo i primi 5 numeri danno contributo alla somma
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Sommiamo ora in ordine ascendente:
s2 = fl(0.1580e + 0 + 0.2653e + 0) = 0.4233e + 0s2 = fl(s2 + 0.2581e + 1) = 0.3004e + 1s2 = fl(s2 + 0.4298e + 1) = 0.7932e + 1s2 = fl(s2 + 0.6266e + 2) = 0.7059e + 2s2 = fl(s2 + 0.7555e + 2) = 0.1461e + 3s2 = fl(s2 + 0.7767e + 3) = 0.9228e + 3s2 = fl(s2 + 0.7889e + 3) = 0.1712e + 4s2 = fl(s2 + 0.8999e + 4) = 0.1071e + 4
Osserviamo che tutti i numeri danno contributo alla somma
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Calcolando gli errori relativi
|s− s1||s1|
= 0.944 10−3 somma discendente
|s− s2||s2|
= 0.105 10−4 somma ascendente
deduciamo che, sommando in ordine discendente la somma vienecalcolata con 3 cifre significative corrette, mentre, sommando inordine ascendente la somma viene calcolata con 5 cifre significativecorrette.
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Cancellazione Numerica
E un fenomeno che si verifica durante l’operazione di sottrazione tradue numeri “quasi uguali”.Siano x1 e x2 due numeri reali. Se x = x1 − x2 e “molto piccolo”,l’errore relativo
δx =
∣∣∣∣fl(x1 − x2)− xx
∣∣∣∣puo essere “molto grande” e cio produce una perdita di cifresignificative nel calcolo di fl(x1 − x2)
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Esempio 1
Siano x1 = 0.147554326 102 e x2 = 0.147251742 102 due numeri inbase 10. Calcolare la differenza x1 − x2 supponendo di utilizzareun’aritmetica con t = 6 cifre significative.
⇒ X1 = fl(x1) = 0.147554 102
⇒ X2 = fl(x2) = 0.147252 102
fl(X1 − X2) = 0.000302 102 = 0.302000 10−1
mentrex1 − x2 = 0.302584 10−1
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Esempio 2
Siano x1 =√
2.01 e x2 =√
2 due numeri in base 10. Calcolare ladifferenza x1 − x2 supponendo di utilizzare un’aritmetica con t = 6cifre significative.
⇒ X1 = fl(x1) = 0.141774 101
⇒ X2 = fl(x2) = 0.141421 101
fl(X1 − X2) = 0.353000 10−2
mentrex1 − x2 = 0.35311255 · · · 10−2
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
OsservazioneE sempre preferibile evitare la sottrazione tra numeri macchina“quasi uguali” utilizzando, laddove possibile, delle espressionialternative.
Per esempio:1
√x + δ −
√x =
δ√x + δ +
√x
2
cos (x + δ)− cos (x) = −2 sin2(δ
2
).
In generale, se si presenta il caso di dover computare
f (x + δ)− f (x),
con |δ| � |x|, puo convenire considerare l’espansione di Taylor
f (x + δ)− f (x) = f ′(x)δ + f ′′(x)δ
2+ . . .
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Un problema di cancellazione si puo presentare anche nella formularisolutiva dell’equazione di secondo grado ax2 + bx + c = 0 :
x1,2 =−b±
√b2 − 4ac
2a,
per cui conviene usare la formula alternativa:
x1 =−b− sign(b)
√b2 − 4ac
2a, x2 =
cax1
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Esempi in MatLab
Verifichiamo che non sempre una operazione tra numeri macchinaproduce un numero macchina.
>> a=1.000345566e+150;>> b=0.15646464e+200>> a*bans =Inf
>> a=1.000345566e-25:>> b=1.56464646e-300>> a*bans =0
Da quest’ultimo esempio si evince anche che il prodotto tra duenumeri macchina puo essere nullo anche se entrambi i numeri sononon nulli, cioe non vale la legge di annullamento del prodotto.
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Esempi in MatLab
Siano a = 0.23371258 10−4, b = 0.33678429 102, c =−0.33677811 102, verificare che (a⊕ b)⊕ c 6= a⊕ (b⊕ c)>> a=0.23371258e-4a =2.33712580000000e-005>> b=0.33678429e+2b =3.36784290000000e+001>> c=-0.33677811e+2c =-3.36778110000000e+001>> (a+b)+cans =6.41371258005563e-004>> a+(b+c)ans =6.41371258002894e-004
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Esempi in MatLab
Siano a = 0.1234567, b = 6666.325 e c = −6666.325,verificare che (a⊕ b)⊕ c 6= a⊕ (b⊕ c)>> a=0.1234567a =1.23456700000000e-001>> b=6666.325b =6.66632500000000e+003>> c=-6666.325c =-6.66632500000000e+003>> (a+b)+cans =1.23456700000133e-001>> a+(b+c)ans =1.23456700000000e-001
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Esempi in MatLab
Siano a = 0.8e + 9, b = 0.500009e + 4 e c = −0.500008e + 4,verificare che a⊗ (b⊕ c) 6= a⊗ b⊕ a⊗ c.a=0.8e+9a =800000000>> b=0.500009e+4b =5.00009000000000e+003>> c=-0.500008e+4c =5.00008000000000e+003>> a*(b+c)ans =8.00000000017462e+006>> a*b+a*cans =8000000
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Esempi in MatLab
Infatti>> a*bans =4000072000000>> a*cans = -4000064000000>> a*b+a*cans =8000000
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Esempi in MatLab
Siano a = 7.45700244034177e− 001,b = 3.77400852642836e− 001 ec = 7.62332001118890e− 001, verificare chea⊗ (b⊗ c) 6= (a⊗ b)⊗ c.
>>a=7.45700244034177e-001;>>b=3.77400852642836e-001;>>c=7.62332001118890e-001;
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Esempi in MatLab
>> p1=(a*b)*cp1 =2.14541500211140e-001>> p2=a*(b*c)p2 =2.14541500211140e-001>> p1==p2ans =0
Osserviamo che i valori p1 e p2 risultano essere uguali anche se icorrispondenti numeri macchina non lo sono (il test p1==p2 forniscecome risultato 0, cioe false).Cio accade per un errore divisualizzazione o di conversione dal binario al decimale.
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Esempi in MatLab
Verifichiamo che dati c = 0.164646415647 10+9 ed = 0.38731646 10−6 si ha c⊕ d = fl(c + d) = fl(c).
>>c=0.164646415647e+9;>> d=0.38731646e-6;>> c+dans =1.64646415647000e+008
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Esempi in MatLab
Verificare che l’uguaglianza
√x + δ −
√x =
δ√x + δ +
√x
non e vera se si lavora in aritmetica finita.
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Esempi in MatLab
Supponiamo x = 4 e δ = 0.002
>> a=sqrt(4.002)a =2.00049993751562e+000>> b=sqrt(4)b =2>> a-bans =4.99937515620275e-004>> 0.002/(a+b)ans =4.99937515620119e-004
Con la prima formula si perdono 3 cifre significative corrette.
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Esempi in MatLab
Verificare che l’uguaglianza
cos (x + δ)− cos (x) = −2 sin2(δ
2
)non e vera se si lavora in aritmetica finita.
Supponiamo x = π e δ = 0.0001>> cos(pi+0.0001)-cos(pi)ans =4.99999996961265e-009>> -2*sin(0.0001/2)∧ 2ans =-4.99999999583333e-009
Con la prima formula si perdono 7 cifre significative corrette.
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Esempi in MatLab
Data l’equazione di secondo grado
x2 − 0.4002x + 0.8e− 4 = 0,
calcolare le radici con le formule:
x1,2 =−b±
√b2 − 4ac
2a,
e
x1 =−b− sign(b)
√b2 − 4ac
2a, x2 =
cax1
e confrontare i risultati ottenuti con i valori esatti x1 = 0.4 ex2 = 0.0002.
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Esempi in MatLab
Osserviamo prima di tutto che se calcoliamo il valore del polinomiodi secondo grado nelle sue radici non si ottiene 0 ma uno degli infinitizeri macchina.
>> x=0.4;>> x∧2-0.4002*x+0.8e-4ans =3.10217346602415e-017>> x=0.0002;>> x∧2-0.4002*x+0.8e-4ans =1.35525271560688e-020
Dunque l’equazione e numericamente verificata a meno di un erroredell’ordine dell’epsilon-macchina
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Esempi in MatLab
>> a=1;b=-0.4002;c=0.8e-4;>> x1=(-b+sqrt(b∧2-4*a*c))/(2*a)x1 =4.00000000000000e-001>> x2=(-b-sqrt(b∧2-4*a*c))/(2*a)x2 =1.99999999999978e-004>> x22=c/x1x22 =2.00000000000000e-004
E evidente che con la prima formula si perdono 2 cifre significativecorrette.
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Esempi in MatLab
Valutare le espressioni analiticamente equivalenti
y1 =1− cos(t)
t2 e y2 =12
sin2(t/2)
(t/2)2
nel punto t = 1.2e− 5.
>> t=1.2e-5;>> y1=(1-cos(t))/t∧2y1 =4.99999732974901e-001>> y2=0.5*(sin(t/2)/(t/2))∧2y2 =4.99999999994000e-001
La diversita dei risultati ottenuti e dovuta al fenomeno dellacancellazione numerica verificatosi nel calcolo di 1− cos(t),perche, con la scelta fatta di t, 1 e cos(t) sono “quasi uguali”.
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Poiche l’espressione
y2 =12
sin2(t/2)
(t/2)2
e definita mediante operazioni che non introducono alcuna perdita diprecisione, possiamo ritenere che il valore y2 abbia 15 cifresignificative corrette.
Pertanto, confrontando y1 con y2 deduciano che non l’espressione y1si ottengono solo 6 cifre significative corrette.
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Esercizi in MatLab
Valutare le espressioni, analiticamente equivalenti,
y1 = (1− x)6 e y2 = x6− 6x5 + 15x4− 20x3 + 15x2− 6x + 1
in 100 punti equidistanti nell’intervallo [1− δ, 1 + δ] perδ = 0.1, 0.01, 0.005, 0.0025. Rappresentare graficamente y1 e y2per ciascun valore di δ assegnato.
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
>> delta=0.1;>> x=linspace(1-delta,1+delta);>> y1=(1-x).∧6;>>y2=x.∧6-6*x.∧5+15*x.∧4-20*x.∧3+15*x.∧2-6*x+1;>> figure(1)>> plot(x,y1,x,y2,’r’)Si ottiene il grafico
0.9 0.95 1 1.05 1.1-1.0e-6
0.0e+0
1.0e-6
2.0e-6
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
>> delta=0.01;>> x=linspace(1-delta,1+delta);>> y1=(1-x).∧6;>>y2=x.∧6-6*x.∧5+15*x.∧4-20*x.∧3+15*x.∧2-6*x+1;>> figure(2)>> plot(x,y1,x,y2,’r’)Si ottiene il grafico
0.99 0.995 1 1.005 1.01 1.015-1.0e-12
0.0e+0
1.0e-12
2.0e-12
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
>> delta=0.005;>> x=linspace(1-delta,1+delta);>> y1=(1-x).∧6;>>y2=x.∧6-6*x.∧5+15*x.∧4-20*x.∧3+15*x.∧2-6*x+1;>> figure(3)>> plot(x,y1,x,y2,’r’)Si ottiene il grafico
0.9950.9960.9970.9980.999 1 1.0011.0021.0031.0041.0051.006-5.0e-15
0.0e+0
5.0e-15
1.0e-14
1.5e-14
2.0e-14
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
>> delta=0.0025;>> x=linspace(1-delta,1+delta);>> y1=(1-x).∧6;>>y2=x.∧6-6*x.∧5+15*x.∧4-20*x.∧3+15*x.∧2-6*x+1;>> figure(4)>> plot(x,y1,x,y2,’r’)Si ottiene il grafico
0.99750.9980.99850.9990.9995 1 1.00051.0011.00151.0021.00251.003-7.0e-15
-6.0e-15
-5.0e-15
-4.0e-15
-3.0e-15
-2.0e-15
-1.0e-15
0.0e+0
1.0e-15
2.0e-15
3.0e-15
4.0e-15
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Osservando i precedenti grafici, deduciamo che le rappresentazionigrafiche ottenute utilizzando le espressioni y1 e y2 si discostano l’unadall’altra sempre di piu al diminuire di δ.
Infatti, mentre y1 rimane fedele al reale andamento del polinomio, y2ha un andamento sempre piu oscillante (come se avesse tanti zeri!).
Tali oscillazioni sono dovute al fenomeno della cancellazionenumerica che si verifica quando in y2 si esegue la somma tra
x6 − 6x5 + 15x4 − 20x3 + 15x2 − 6x e 1
per valori molto vicini a 1 (x6 − 6x5 + 15x4 − 20x3 + 15x2 − 6x < 0per ogni x ∈ [−1, 1]).
Osserviamo che il suddetto fenomeno, seppure non evidentegraficamente, si verifica anche quando in y1 si esegue la sottrazionetra 1 e x per valori di x molto vicini a 1.
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Tuttavia, essendo(1− x)6 � (1− x),
le quantita
x6 − 6x5 + 15x4 − 20x3 + 15x2 − 6x e 1
hanno piu cifre in comune delle quantita 1 e x.
Ne consegue che nella valutazione di y2 si ha una perdita di precisionemaggiore rispetto a y1.
Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Universita della Basilicata a.a. 2014-15Corso di Matematica per la Chimica
Top Related