Univ. de Guanajuato e-mail: [email protected] web: …joaquin/mn11/clase02.pdfErrores al realizar...

26
Clase No. 2: Propagación de errores MAT–251 Dr. Alonso Ramírez Manzanares Depto. de Matemáticas Univ. de Guanajuato e-mail: alram@ cimat.mx web: http://www.cimat.mx/salram/met_num/ Dr. Joaquín Peña Acevedo CIMAT A.C. e-mail: joaquin@ cimat.mx Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 13.08.2012 1 / 16

Transcript of Univ. de Guanajuato e-mail: [email protected] web: …joaquin/mn11/clase02.pdfErrores al realizar...

Page 1: Univ. de Guanajuato e-mail: alram@cimat.mx web: …joaquin/mn11/clase02.pdfErrores al realizar operaciones aritméticas (I) La asociatividad en la suma puede no ser válida. Ejemplo

Clase No. 2:

Propagación de erroresMAT–251 Dr. Alonso Ramírez Manzanares

Depto. de MatemáticasUniv. de Guanajuatoe-mail: [email protected]: http://www.cimat.mx/salram/met_num/

Dr. Joaquín Peña AcevedoCIMAT A.C.e-mail: [email protected]

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 13.08.2012 1 / 16

Page 2: Univ. de Guanajuato e-mail: alram@cimat.mx web: …joaquin/mn11/clase02.pdfErrores al realizar operaciones aritméticas (I) La asociatividad en la suma puede no ser válida. Ejemplo

El épsilon de la máquina

Definimos el épsilon de la máquina (a veces se abrevia como macheps),como el número de máquina εm más pequeño tal que 1 < fl(1+ εm).

La representación de cualquier número real x está en el intervalo(x(1− δm), x(1+ εm)).

Cuando se trabaja con precisión finita, 0 no es la única solución de laecuación 1+ x = 1.

Una manera de calcularlo es la siguiente:

1: eps = 1;2: y = 1+ eps;3: while y > 1 do4: eps = eps/2;5: y = 1+ eps;6: end while

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 13.08.2012 2 / 16

Page 3: Univ. de Guanajuato e-mail: alram@cimat.mx web: …joaquin/mn11/clase02.pdfErrores al realizar operaciones aritméticas (I) La asociatividad en la suma puede no ser válida. Ejemplo

El épsilon de la máquina

Definimos el épsilon de la máquina (a veces se abrevia como macheps),como el número de máquina εm más pequeño tal que 1 < fl(1+ εm).

La representación de cualquier número real x está en el intervalo(x(1− δm), x(1+ εm)).

Cuando se trabaja con precisión finita, 0 no es la única solución de laecuación 1+ x = 1.

Una manera de calcularlo es la siguiente:

1: eps = 1;2: y = 1+ eps;3: while y > 1 do4: eps = eps/2;5: y = 1+ eps;6: end while

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 13.08.2012 2 / 16

Page 4: Univ. de Guanajuato e-mail: alram@cimat.mx web: …joaquin/mn11/clase02.pdfErrores al realizar operaciones aritméticas (I) La asociatividad en la suma puede no ser válida. Ejemplo

El épsilon de la máquina

Definimos el épsilon de la máquina (a veces se abrevia como macheps),como el número de máquina εm más pequeño tal que 1 < fl(1+ εm).

La representación de cualquier número real x está en el intervalo(x(1− δm), x(1+ εm)).

Cuando se trabaja con precisión finita, 0 no es la única solución de laecuación 1+ x = 1.

Una manera de calcularlo es la siguiente:

1: eps = 1;2: y = 1+ eps;3: while y > 1 do4: eps = eps/2;5: y = 1+ eps;6: end while

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 13.08.2012 2 / 16

Page 5: Univ. de Guanajuato e-mail: alram@cimat.mx web: …joaquin/mn11/clase02.pdfErrores al realizar operaciones aritméticas (I) La asociatividad en la suma puede no ser válida. Ejemplo

Errores al realizar operaciones aritméticas (I)

• La asociatividad en la suma puede no ser válida.

Ejemplo en base 10 con tres dígitos de precisión y redondeo hacia elmás cercano:

a = 0.100× 10, b = 0.480× 10−2, c = 0.450× 10−2

fl(fl(a+ b) + c) = fl(0.100× 10+ 0.450× 10−2) = 0.100× 10 = a

fl(a+ fl(b+ c)) = fl(0.100× 10+ 0.930× 10−2) = 0.101× 10

• Hay que especificar el tipo de redondeo que se afectúa.

Al calcular 521000× 0.0365 usando tres dígitos de precisión, tenemos que

a = 521000 = 0.525× 106, b = 0.365× 10−1

fl(ab) = fl(0.191625× 105) =

¨

0.192× 105 Redondeo hacia arriba0.191× 105 Redondeo hacia abajo

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 13.08.2012 3 / 16

Page 6: Univ. de Guanajuato e-mail: alram@cimat.mx web: …joaquin/mn11/clase02.pdfErrores al realizar operaciones aritméticas (I) La asociatividad en la suma puede no ser válida. Ejemplo

Errores al realizar operaciones aritméticas (I)

• La asociatividad en la suma puede no ser válida.

Ejemplo en base 10 con tres dígitos de precisión y redondeo hacia elmás cercano:

a = 0.100× 10, b = 0.480× 10−2, c = 0.450× 10−2

fl(fl(a+ b) + c) = fl(0.100× 10+ 0.450× 10−2) = 0.100× 10 = a

fl(a+ fl(b+ c)) = fl(0.100× 10+ 0.930× 10−2) = 0.101× 10

• Hay que especificar el tipo de redondeo que se afectúa.

Al calcular 521000× 0.0365 usando tres dígitos de precisión, tenemos que

a = 521000 = 0.525× 106, b = 0.365× 10−1

fl(ab) = fl(0.191625× 105) =

¨

0.192× 105 Redondeo hacia arriba0.191× 105 Redondeo hacia abajo

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 13.08.2012 3 / 16

Page 7: Univ. de Guanajuato e-mail: alram@cimat.mx web: …joaquin/mn11/clase02.pdfErrores al realizar operaciones aritméticas (I) La asociatividad en la suma puede no ser válida. Ejemplo

Errores al realizar operaciones aritméticas (I)

• La asociatividad en la suma puede no ser válida.

Ejemplo en base 10 con tres dígitos de precisión y redondeo hacia elmás cercano:

a = 0.100× 10, b = 0.480× 10−2, c = 0.450× 10−2

fl(fl(a+ b) + c) = fl(0.100× 10+ 0.450× 10−2) = 0.100× 10 = a

fl(a+ fl(b+ c)) = fl(0.100× 10+ 0.930× 10−2) = 0.101× 10

• Hay que especificar el tipo de redondeo que se afectúa.

Al calcular 521000× 0.0365 usando tres dígitos de precisión, tenemos que

a = 521000 = 0.525× 106, b = 0.365× 10−1

fl(ab) = fl(0.191625× 105) =

¨

0.192× 105 Redondeo hacia arriba0.191× 105 Redondeo hacia abajo

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 13.08.2012 3 / 16

Page 8: Univ. de Guanajuato e-mail: alram@cimat.mx web: …joaquin/mn11/clase02.pdfErrores al realizar operaciones aritméticas (I) La asociatividad en la suma puede no ser válida. Ejemplo

Errores al realizar operaciones aritméticas (II)

• Errores por sustracción.

Sea f (x) = (1− cosx)/x2. Para x = 1.2×10−5 y una precisión a 10 decimales,se tiene que

cosx = 0.9999999999 =⇒ 1− cosx = 0.0000000001

=⇒1− cosx

x2=

10−10

1.44× 10−10≈ 0.6944....

El resultado es incorrecto. Resulta que 0 ≤ f (x) ≤ 0.5 para todo x 6= 0.

0 5 10 15 20

0.0

0.1

0.2

0.3

0.4

0.5

vx

vy

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 13.08.2012 4 / 16

Page 9: Univ. de Guanajuato e-mail: alram@cimat.mx web: …joaquin/mn11/clase02.pdfErrores al realizar operaciones aritméticas (I) La asociatividad en la suma puede no ser válida. Ejemplo

Errores al realizar operaciones aritméticas (II)

• Errores por sustracción.

Sea f (x) = (1− cosx)/x2. Para x = 1.2×10−5 y una precisión a 10 decimales,se tiene que

cosx = 0.9999999999 =⇒ 1− cosx = 0.0000000001

=⇒1− cosx

x2=

10−10

1.44× 10−10≈ 0.6944....

El resultado es incorrecto. Resulta que 0 ≤ f (x) ≤ 0.5 para todo x 6= 0.

0 5 10 15 20

0.0

0.1

0.2

0.3

0.4

0.5

vx

vy

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 13.08.2012 4 / 16

Page 10: Univ. de Guanajuato e-mail: alram@cimat.mx web: …joaquin/mn11/clase02.pdfErrores al realizar operaciones aritméticas (I) La asociatividad en la suma puede no ser válida. Ejemplo

Errores al realizar operaciones aritméticas (III)

Para evitarlo, podemos usar cosx = 1− 2sin2(x/2).

f (x) =1

2

sin(x/2)

x/2

�2

.

x = 1.2× 10−5 =⇒ f (x) =1

2

0.000006

0.000006

�2

= 0.5

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 13.08.2012 5 / 16

Page 11: Univ. de Guanajuato e-mail: alram@cimat.mx web: …joaquin/mn11/clase02.pdfErrores al realizar operaciones aritméticas (I) La asociatividad en la suma puede no ser válida. Ejemplo

Propagación del error en la suma

:tab Supongamos que tenemos dos números reales x,y con el mismo signo,y que

fl(x) = x(1+ δx), fl(y) = y(1+ δy)

El error relativo de la suma x+ y es

δx+y =[fl(x) + fl(y)]− (x+ y)

x+ y=

fl(x)− x

x+ y+

fl(y)− y

x+ y= δx

x

x+ y+ δy

y

x+ y

�δx+y�

� ≤ u|x|+ |y||x+ y|

= u

Para la resta se tiene algo similar:

δx−y = δxx

x− y− δy

y

x− y

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 13.08.2012 6 / 16

Page 12: Univ. de Guanajuato e-mail: alram@cimat.mx web: …joaquin/mn11/clase02.pdfErrores al realizar operaciones aritméticas (I) La asociatividad en la suma puede no ser válida. Ejemplo

Propagación del error en la suma

:tab Supongamos que tenemos dos números reales x,y con el mismo signo,y que

fl(x) = x(1+ δx), fl(y) = y(1+ δy)

El error relativo de la suma x+ y es

δx+y =[fl(x) + fl(y)]− (x+ y)

x+ y=

fl(x)− x

x+ y+

fl(y)− y

x+ y= δx

x

x+ y+ δy

y

x+ y

�δx+y�

� ≤ u|x|+ |y||x+ y|

= u

Para la resta se tiene algo similar:

δx−y = δxx

x− y− δy

y

x− y

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 13.08.2012 6 / 16

Page 13: Univ. de Guanajuato e-mail: alram@cimat.mx web: …joaquin/mn11/clase02.pdfErrores al realizar operaciones aritméticas (I) La asociatividad en la suma puede no ser válida. Ejemplo

Propagación del error en la suma

:tab Supongamos que tenemos dos números reales x,y con el mismo signo,y que

fl(x) = x(1+ δx), fl(y) = y(1+ δy)

El error relativo de la suma x+ y es

δx+y =[fl(x) + fl(y)]− (x+ y)

x+ y=

fl(x)− x

x+ y+

fl(y)− y

x+ y= δx

x

x+ y+ δy

y

x+ y

�δx+y�

� ≤ u|x|+ |y||x+ y|

= u

Para la resta se tiene algo similar:

δx−y = δxx

x− y− δy

y

x− y

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 13.08.2012 6 / 16

Page 14: Univ. de Guanajuato e-mail: alram@cimat.mx web: …joaquin/mn11/clase02.pdfErrores al realizar operaciones aritméticas (I) La asociatividad en la suma puede no ser válida. Ejemplo

Ejemplo

El polinomio de Rump se define como

R(x,y) =33375

100y6 + x2(11x2y2 − y6 − 121y4 − 2) +

55

10y8 +

x

2y

Si evaluamos este polinomio usando ’double’ y ’long double’ se tiene que

(float) R(77617, 33096) = 6.33825× 1029

(double) R(77617, 33096) = 1.1726039400532(long double) R(77617, 33096) = 1.17260394005317863...

Realizando las operaciones con fracciones, obtenemos

R(77617,33096) = −54767

66192≈ −0.8273960599

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 13.08.2012 7 / 16

Page 15: Univ. de Guanajuato e-mail: alram@cimat.mx web: …joaquin/mn11/clase02.pdfErrores al realizar operaciones aritméticas (I) La asociatividad en la suma puede no ser válida. Ejemplo

Ejemplo

El polinomio de Rump se define como

R(x,y) =33375

100y6 + x2(11x2y2 − y6 − 121y4 − 2) +

55

10y8 +

x

2y

Si evaluamos este polinomio usando ’double’ y ’long double’ se tiene que

(float) R(77617, 33096) = 6.33825× 1029

(double) R(77617, 33096) = 1.1726039400532(long double) R(77617, 33096) = 1.17260394005317863...

Realizando las operaciones con fracciones, obtenemos

R(77617,33096) = −54767

66192≈ −0.8273960599

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 13.08.2012 7 / 16

Page 16: Univ. de Guanajuato e-mail: alram@cimat.mx web: …joaquin/mn11/clase02.pdfErrores al realizar operaciones aritméticas (I) La asociatividad en la suma puede no ser válida. Ejemplo

Ejemplo (I)

Si

R1(x,y) =33375

100y6 + x2(11x2y2 − y6 − 121y4 − 2)

R2(x,y) =55

10y8

R3(x,y) =x

2y

Entonces

R1(77617, 33096) = −7917111340668961361101134701524942850,

R2(77617, 33096) = 7917111340668961361101134701524942848,

R3(77617, 33096) =77617

66192

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 13.08.2012 8 / 16

Page 17: Univ. de Guanajuato e-mail: alram@cimat.mx web: …joaquin/mn11/clase02.pdfErrores al realizar operaciones aritméticas (I) La asociatividad en la suma puede no ser válida. Ejemplo

Ejemplo (II)

Repetimos los cálculos usando 16 dígitos de precisión

R1(77617, 33096) = −7.917111340668963× 1036,

R2(77617, 33096) = 7.917111340668962× 1036,

R3(77617, 33096) = 1.172603940053179

R(77617, 33096) = −1× 1021 + 1.172603940053179 = −1× 1021

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 13.08.2012 9 / 16

Page 18: Univ. de Guanajuato e-mail: alram@cimat.mx web: …joaquin/mn11/clase02.pdfErrores al realizar operaciones aritméticas (I) La asociatividad en la suma puede no ser válida. Ejemplo

Propagación del error en el producto

Si fl(x) = x(1+ δx), fl(y) = y(1+ δy), entonces

δxy =fl(x)fl(y)− xy

xy=

xy(1+ δx)(1+ δy)− xy

xy= δx + δy + δxδy

|δxy| ≤ 2u+ u2

Para el caso de la división se tiene que:

δ xy=δx − δy

1+ δy

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 13.08.2012 10 / 16

Page 19: Univ. de Guanajuato e-mail: alram@cimat.mx web: …joaquin/mn11/clase02.pdfErrores al realizar operaciones aritméticas (I) La asociatividad en la suma puede no ser válida. Ejemplo

Error combinando sumas y productos

Consideremos tres números reales x,y, z, y queremos calcular x(y + z).Entonces, en lugar de operar x,y, z operamos con x(1+ δx) = x+ εx,y(1+ δy) = y + εy y z(1+ δz) = z + εz

(x+ εx)(y + εy + z + εz) = x(y + z) + x(εy + εz) + (y + z)εx + εx(εy + εz)

Entonces el error es

E = x(εy + εz) + (y + z)εx + εx(εy + εz)

Si suponemos que |εi| < ε, entonces

|E| ≤ 2ε|x|+ |y + z|ε+ 2ε2

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 13.08.2012 11 / 16

Page 20: Univ. de Guanajuato e-mail: alram@cimat.mx web: …joaquin/mn11/clase02.pdfErrores al realizar operaciones aritméticas (I) La asociatividad en la suma puede no ser válida. Ejemplo

Error combinando sumas y productos

Consideremos tres números reales x,y, z, y queremos calcular x(y + z).Entonces, en lugar de operar x,y, z operamos con x(1+ δx) = x+ εx,y(1+ δy) = y + εy y z(1+ δz) = z + εz

(x+ εx)(y + εy + z + εz) = x(y + z) + x(εy + εz) + (y + z)εx + εx(εy + εz)

Entonces el error es

E = x(εy + εz) + (y + z)εx + εx(εy + εz)

Si suponemos que |εi| < ε, entonces

|E| ≤ 2ε|x|+ |y + z|ε+ 2ε2

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 13.08.2012 11 / 16

Page 21: Univ. de Guanajuato e-mail: alram@cimat.mx web: …joaquin/mn11/clase02.pdfErrores al realizar operaciones aritméticas (I) La asociatividad en la suma puede no ser válida. Ejemplo

Evaluación de polinomios (I)Evaluamos el polinomio cúbico

p(x) = ax3 + bx2 + cx+ d

donde

a = 1.000,b = −89998.304,c = 2699898236.405,d = −26998473559412.543,

(1)

29999.2 29999.4 29999.6 29999.8

−0.

10−

0.06

−0.

020.

02

vx

vy

x x x

29999.2 29999.4 29999.6 29999.8

−0.

10−

0.06

−0.

020.

02

vx

vy

x x x

((ax3 + bx2) + cx) + d (((ax+ b)x)x+ c)x+ d

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 13.08.2012 12 / 16

Page 22: Univ. de Guanajuato e-mail: alram@cimat.mx web: …joaquin/mn11/clase02.pdfErrores al realizar operaciones aritméticas (I) La asociatividad en la suma puede no ser válida. Ejemplo

Evaluación de polinomios (I)Evaluamos el polinomio cúbico

p(x) = ax3 + bx2 + cx+ d

donde

a = 1.000,b = −89998.304,c = 2699898236.405,d = −26998473559412.543,

(1)

29999.2 29999.4 29999.6 29999.8

−0.

10−

0.06

−0.

020.

02

vx

vy

x x x

29999.2 29999.4 29999.6 29999.8

−0.

10−

0.06

−0.

020.

02

vx

vy

x x x

((ax3 + bx2) + cx) + d (((ax+ b)x)x+ c)x+ d

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 13.08.2012 12 / 16

Page 23: Univ. de Guanajuato e-mail: alram@cimat.mx web: …joaquin/mn11/clase02.pdfErrores al realizar operaciones aritméticas (I) La asociatividad en la suma puede no ser válida. Ejemplo

Evaluación de polinomios (II)

Usando algunas estrategias, como las que se describen en

S. Graillat, P. Langlois and N. Louvet. Algorithms for accurate,validated and fast polynomial evaluation. Japan J. Indust. Appl.Math., vol. 26, pp. 191âAS214, 2009

se obtiene lo siguiente:

29999.2 29999.4 29999.6 29999.8

−0.

010.

000.

010.

02

vx

vy

x x x

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 13.08.2012 13 / 16

Page 24: Univ. de Guanajuato e-mail: alram@cimat.mx web: …joaquin/mn11/clase02.pdfErrores al realizar operaciones aritméticas (I) La asociatividad en la suma puede no ser válida. Ejemplo

Evaluación de polinomios (III)El polinomio p(x) se obtuvo al desarrollar la expresión

p(x) = (x− s1)(x− s2)(x− s3)

donde

s1 = 29999.234288122, s2 = 29999.336581462, s3 = 29999.733055670,

de modo que

a = 1

b = −s1 − s2 − s3

c = s2s3 + s1s3 + s1s2

d = −s1s2s3

Los puntos indicados con ’x’ en la gráfica anterior indican la posición de lasraíces.Es posible estimar los valores yi que corrigen el cálculo de los coeficientesdel polinomio

a = fl(a) + y1 b = fl(b) + y2c = fl(c) + y3 d = fl(d) + y4

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 13.08.2012 14 / 16

Page 25: Univ. de Guanajuato e-mail: alram@cimat.mx web: …joaquin/mn11/clase02.pdfErrores al realizar operaciones aritméticas (I) La asociatividad en la suma puede no ser válida. Ejemplo

Evaluación de polinomios (IV)

Entonces p(x) = Horner(p,x) + y(x) y al evaluarlo se obtiene

29999.2 29999.4 29999.6 29999.8

−0.

010.

000.

010.

020.

03

vx

vy

x x x

En general, se puedan estrategias para calcular los coecientes de unpolinomio dadas sus raíces:

Calvetti, D. and Reichel, Lothar. On the evaluation of polynomialcoefficients. Numerical Algorithms 33, pp. 153-161, 2003.

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 13.08.2012 15 / 16

Page 26: Univ. de Guanajuato e-mail: alram@cimat.mx web: …joaquin/mn11/clase02.pdfErrores al realizar operaciones aritméticas (I) La asociatividad en la suma puede no ser válida. Ejemplo

Otros ejemplos (I)

Ejemplo 1. Dado un número x, considere el siguiente procedimiento:

1: for i = 1 : 60 do2: x =

px

3: end for4: for i = 1 : 60 do5: x = x∗ x6: end for

¿Qué valor se obtiene para x = 2? ¿ Para x = 1000?

Ejemplo 2. En la versión de Maple 7, al calcular

1001!

1000!el resultado obtenido era 1!!

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 13.08.2012 16 / 16