propagación de errores - cimatjoaquin/cursos/mat251/clases/clase02.pdf · errores al realizar...

30
Clase No. 2: Errores por la representación de punto flotante y propagación de errores MAT–251 Dr. Alonso Ramírez Manzanares CIMAT, A.C. 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) 12.08.2015 1 / 22

Upload: others

Post on 07-Aug-2020

14 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

Clase No. 2:

Errores por la representación de punto flotantey

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

CIMAT, A.C.e-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) 12.08.2015 1 / 22

Page 2: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

Épsilon de la máquina (I)

Tenemos que

εm = fl(1.0+ εm)− fl(1.0) = (0.00 · · ·01)β × β1 = (0.10 · · ·00)β × β2−p

Si

εm

β= (0.10 · · ·00)β × β1−p,

entonces

1.0 = (0.10 · · ·00)β × β1 = (0.10 · · ·00)β × β1

+ εmβ = (0.10 · · ·00)β × β1−p = (0.00 · · ·00)β × β1

1.0+ εmβ = (0.10 · · ·00)β × β1

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

Page 3: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

Distancia entre números consecutivos (I)

Si εm es el épsilon de la máquina, entonces

fl(1.0) = (0.10...00)β × β1

fl(1.0+ εm) = (0.10...01)β × β1

La distancia entre el número máquina fl(1.0) y su consecutivo es

εm = fl(1.0+ εm)− fl(1.0) = (0.00...01)β × β =1

βpβ = β1−p.

Por otra parte, el número máquina anterior a fl(1.0) es

(0.(β − 1)(β − 1)...(β − 1))β × β0.

La distancia entre ellos es

1−�

β − 1

β+β − 1

β2+ · · ·+

β − 1

βp

=εm

β.

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

Page 4: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

Distancia entre números consecutivos (II)

Para el caso general, si tenemos un número real positivo

x = (0.d1d2...dpdp+1...)β × βe,

los números de máquina más cercanos a x son

x− = (0.d1d2...dp)β × βe,

x+ = [(0.d1d2...dp)β + β−p]× βe.

Si x− es el más cercano, el error absoluto es

|x− x− | = (0.0...0dp+1...)β × βe = (0.dp+1...)β × βe−p ≤ βe−p.

Entonces el error relativo es�

x− x−

x

≤βe−p

(0.d1...dp+1...)β × βe=

β−p

(0.d1...dp+1...)β≤

β−p

= β1−p = εm.

puesto que d1 ≥ 1 y (0.d1...dp+1...)β ≥ (0.1)β = 1β .

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

Page 5: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

Distancia entre números consecutivos (III)

Por otra parte, si x+ es el más cercano, entonces

|x− x+| ≤1

2|x+ − x− | ≤

1

2β−pβe,

por lo que|x− x+|

|x|≤

1

2

β−pβe

1ββ

e=β1−p

2=εm

2

Definimos la unidad de error de redondeo u como

u =

¨

εm para redondeo hacia abajoεm2 para redondeo hacia arriba

Error de redondeo

La relación entre un número real y el número de máquina que lo representaestá dada por fl(x) = x(1+ δ), donde |δ| < u.

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

Page 6: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

Operaciones con números de punto flotante (I)

Dados dos números máquina a y b, en el modelo estándar de aritmética depunto flotante se tiene que

fl(a ◦ b) = (a ◦ b)(1+ δ)

donde ◦ es uno de los operadores {+,−,×, /}, y |δ| < u.

Con este modelo podemos ver que

fl(a+ b) = fl(b+ a),

pero si queremos calcular la suma a+ b+ c, entonces

fl(fl(a+ b) + c) 6= fl(a+ fl(b+ c))

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

Page 7: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

Errores al realizar operaciones aritméticas (I)

• 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

• 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

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

Page 8: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

Errores al realizar operaciones aritméticas (I)

• 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

• 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

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

Page 9: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

Errores al realizar operaciones aritméticas (I)

• 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

• 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

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

Page 10: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

Errores al realizar operaciones aritméticas (II)

• Errores por sustracción o error por cancelación.

Ejemplo 1. Sea f (x) = (1− cosx)/x2. Para x = 1.2× 10−5 y una precisión a10 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) 12.08.2015 8 / 22

Page 11: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

Errores al realizar operaciones aritméticas (II)

• Errores por sustracción o error por cancelación.

Ejemplo 1. Sea f (x) = (1− cosx)/x2. Para x = 1.2× 10−5 y una precisión a10 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) 12.08.2015 8 / 22

Page 12: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

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

0.0000060000

�2

= 0.5

Ejemplo 2. Consideremos la función

f (x) = x�p

x+ 1−p

x�

Se puede ver que la función es creciente para x ≥ 0.Si queremos evaluarla en la computadora cuando x va aumentado de valor,¿qué resultados obtendremos?

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

Page 13: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

Errores al realizar operaciones aritméticas (IV)

En lugar de evaluar f (x) podemos utilizar

g(x) =x

px+ 1+

px.

y comparar los resultados con h(x) =p

x/2 usando variables tipo double:

x f(x) g(x) h(x)1.0e+05 1.581134877e+02 1.581134877e+02 1.581138830e+021.0e+06 4.999998750e+02 4.999998750e+02 5.000000000e+021.0e+07 1.581138790e+03 1.581138791e+03 1.581138830e+031.0e+08 5.000000056e+03 4.999999988e+03 5.000000000e+031.0e+09 1.581139077e+04 1.581138830e+04 1.581138830e+041.0e+10 4.999994417e+04 5.000000000e+04 5.000000000e+041.0e+11 1.581152901e+05 1.581138830e+05 1.581138830e+051.0e+12 5.000038072e+05 5.000000000e+05 5.000000000e+051.0e+13 1.578591764e+06 1.581138830e+06 1.581138830e+061.0e+14 5.029141903e+06 5.000000000e+06 5.000000000e+061.0e+15 1.862645149e+07 1.581138830e+07 1.581138830e+071.0e+16 0.000000000e+00 5.000000000e+07 5.000000000e+071.0e+17 0.000000000e+00 1.581138830e+08 1.581138830e+081.0e+18 0.000000000e+00 5.000000000e+08 5.000000000e+081.0e+19 0.000000000e+00 1.581138830e+09 1.581138830e+09

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

Page 14: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

Errores al realizar operaciones aritméticas (V)

Y si en vez de double usamos variables tipo float se obtiene:

x f(x) g(x) h(x)1.0e+00 4.142135382e-01 4.142135680e-01 5.000000000e-011.0e+01 1.543471813e+00 1.543471217e+00 1.581138849e+001.0e+02 4.987525940e+00 4.987562180e+00 5.000000000e+001.0e+03 1.580810547e+01 1.580743790e+01 1.581138802e+011.0e+04 4.997253418e+01 4.999875259e+01 5.000000000e+011.0e+05 1.586914062e+02 1.581134949e+02 1.581138763e+021.0e+06 4.882812500e+02 4.999998779e+02 5.000000000e+021.0e+07 2.441406250e+03 1.581138794e+03 1.581138794e+031.0e+08 0.000000000e+00 5.000000000e+03 5.000000000e+031.0e+09 0.000000000e+00 1.581138770e+04 1.581138867e+041.0e+10 0.000000000e+00 5.000000000e+04 5.000000000e+041.0e+11 0.000000000e+00 1.581138906e+05 1.581138750e+051.0e+12 0.000000000e+00 5.000000000e+05 5.000000000e+051.0e+13 0.000000000e+00 1.581138750e+06 1.581138875e+061.0e+14 0.000000000e+00 5.000000000e+06 5.000000000e+061.0e+15 0.000000000e+00 1.581138800e+07 1.581138800e+071.0e+16 0.000000000e+00 5.000000000e+07 5.000000000e+071.0e+17 0.000000000e+00 1.581138720e+08 1.581138880e+08

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

Page 15: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

Errores al realizar operaciones aritméticas (VI)

Ejemplo 3. Considere las siguientes expresiones:

s1 = 1022 + 17 − 10 + 130 − 1022

s2 = 1022 − 10 + 130 − 1022 + 17s3 = 1022 + 17 − 1022 − 10 + 130s4 = 1022 − 10 − 1022 + 130 + 17s5 = 1022 − 1022 + 17 − 10 + 130s6 = 1022 + 17 + 130 − 1022 − 10

En teoría deberían dar el mismo resultado.¿Cuales son los valores que se obtienen en la computadora?

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

Page 16: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

Propagación del error en la suma

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

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) 12.08.2015 13 / 22

Page 17: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

Propagación del error en la suma

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

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) 12.08.2015 13 / 22

Page 18: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

Propagación del error en la suma

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

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) 12.08.2015 13 / 22

Page 19: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

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) 12.08.2015 14 / 22

Page 20: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

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) 12.08.2015 14 / 22

Page 21: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

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) 12.08.2015 15 / 22

Page 22: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

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) 12.08.2015 16 / 22

Page 23: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

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) 12.08.2015 17 / 22

Page 24: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

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) 12.08.2015 18 / 22

Page 25: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

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) 12.08.2015 18 / 22

Page 26: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

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) 12.08.2015 19 / 22

Page 27: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

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) 12.08.2015 19 / 22

Page 28: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

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–214, 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) 12.08.2015 20 / 22

Page 29: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

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) 12.08.2015 21 / 22

Page 30: Propagación de errores - CIMATjoaquin/cursos/mat251/clases/clase02.pdf · Errores al realizar operaciones aritméticas (I) Hay que especificar el tipo de redondeo que se afectúa

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 coeficientes 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) 12.08.2015 22 / 22