Anda di halaman 1dari 28

Cálculo numérico. Aritmética en punto flotante.

José Luis Morales


http://allman.rhon.itam.mx/∼jmorales

Departamento de Matemáticas. ITAM. 2011.

José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.


Sistemas de números en punto flotante F

F está caracterizado por los enteros β, L, U , p en donde


β es la base del sistema
L es el menor exponente (entero negativo)
U es el mayor exponente (entero positivo)
p es la precisión

 
d1 d2 dp−1
x = ± d0 + 1 + 2 + · · · + p−1 β E
β β β

0 ≤ di ≤ β − 1, L ≤ E ≤ U.

F es un sistema normalizado si d0 6= 0

José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.


Sistemas de números en punto flotante F

F está caracterizado por los enteros β, L, U , p en donde


β es la base del sistema
L es el menor exponente (entero negativo)
U es el mayor exponente (entero positivo)
p es la precisión

 
d1 d2 dp−1
x = ± d0 + 1 + 2 + · · · + p−1 β E
β β β

0 ≤ di ≤ β − 1, L ≤ E ≤ U.

F es un sistema normalizado si d0 6= 0

José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.


Sistemas de números en punto flotante F

F está caracterizado por los enteros β, L, U , p en donde


β es la base del sistema
L es el menor exponente (entero negativo)
U es el mayor exponente (entero positivo)
p es la precisión

 
d1 d2 dp−1
x = ± d0 + 1 + 2 + · · · + p−1 β E
β β β

0 ≤ di ≤ β − 1, L ≤ E ≤ U.

F es un sistema normalizado si d0 6= 0

José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.


Sistemas de números en punto flotante F

F está caracterizado por los enteros β, L, U , p en donde


β es la base del sistema
L es el menor exponente (entero negativo)
U es el mayor exponente (entero positivo)
p es la precisión

 
d1 d2 dp−1
x = ± d0 + 1 + 2 + · · · + p−1 β E
β β β

0 ≤ di ≤ β − 1, L ≤ E ≤ U.

F es un sistema normalizado si d0 6= 0

José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.


Sistemas de números en punto flotante F

F está caracterizado por los enteros β, L, U , p en donde


β es la base del sistema
L es el menor exponente (entero negativo)
U es el mayor exponente (entero positivo)
p es la precisión

 
d1 d2 dp−1
x = ± d0 + 1 + 2 + · · · + p−1 β E
β β β

0 ≤ di ≤ β − 1, L ≤ E ≤ U.

F es un sistema normalizado si d0 6= 0

José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.


Sistemas de números en punto flotante F

F está caracterizado por los enteros β, L, U , p en donde


β es la base del sistema
L es el menor exponente (entero negativo)
U es el mayor exponente (entero positivo)
p es la precisión

 
d1 d2 dp−1
x = ± d0 + 1 + 2 + · · · + p−1 β E
β β β

0 ≤ di ≤ β − 1, L ≤ E ≤ U.

F es un sistema normalizado si d0 6= 0

José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.


Sistemas de números en punto flotante F

x = ± b0 b1 b2 b3 ×2E .

José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.


Almacenamiento: β = 2

Observar que d0 es siempre igual a 1. Entonces el espacio de d0 se


destina al signo del número: 0: positivo; 1: negativo

signo exponente mantisa

Precisión sencilla de 32 bits


signo 1 bit
exponente 8 bits
mantisa 23 bits
Precisión doble de 64 bits
signo 1 bit
exponente 11 bits
mantisa 52 bits

José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.


Representación de números reales en PF

Si x es un número real en el rango [−M, M ], entonces la regla de


asignación de números en punto flotante es

x 7→ float (x)
en donde float (x) es el el número en PF más cercano a x en
la métrica | · |.
En caso de empate ...¿ float (x)?

José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.


Representación de números reales en PF

Si x es un número real en el rango [−M, M ], entonces la regla de


asignación de números en punto flotante es

x 7→ float (x)
en donde float (x) es el el número en PF más cercano a x en
la métrica | · |.
En caso de empate ...¿ float (x)?

José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.


Representación de números reales en PF

Si x es un número real en el rango [−M, M ], entonces la regla de


asignación de números en punto flotante es

x 7→ float (x)
en donde float (x) es el el número en PF más cercano a x en
la métrica | · |.
En caso de empate ...¿ float (x)?

José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.


Análisis de error

Error absoluto
ǫa = |x − float (x)|.

El error relativo se define como


|x − float (x)|
ǫr = , x 6= 0.
|x|

Una conclusión casi inmediata es la siguiente:

José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.


Análisis de error

Error absoluto
ǫa = |x − float (x)|.

El error relativo se define como


|x − float (x)|
ǫr = , x 6= 0.
|x|

Una conclusión casi inmediata es la siguiente:

José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.


Análisis de error

Error absoluto
ǫa = |x − float (x)|.

El error relativo se define como


|x − float (x)|
ǫr = , x 6= 0.
|x|

Una conclusión casi inmediata es la siguiente:

José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.


Análisis de error

Error absoluto
ǫa = |x − float (x)|.

El error relativo se define como


|x − float (x)|
ǫr = , x 6= 0.
|x|

Una conclusión casi inmediata es la siguiente:

José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.


Error unitario

Lema: Sea F un sistema en punto flotante y x un número real en


el rango [-M,M]. Entonces:

1
ǫr ≤ ǫM = β 1−p
2

El número ǫM es llamado: a) épsilon de la máquina; b) error


unitario por redondeo; c) precisión de la máquina.

José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.


Prueba
Supongamos que x ∈ R+ tal que x ∈ [y, ȳ] (dos números
consecutivos de F).

y = .y1 y2 . . . yp × β E , y1 6= 0
E
ȳ = y + .00 . . . 1 × β ,
d = β E−p

Si suponemos que y = float (x)


|y − x| d/2 d/2 d/2
≤ ≤ ≤ = ǫM . 
|x| |x| |y| |.10 . . . 0 × β E |
Corolario:

float (x) = (1 + δ)x, |δ| ≤ ǫM .

José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.


Aritmética en PF

Si la suma en F tiene la propiedad x ⊕ y = float (x + y). Entonces


es posible probar el siguiente resultado:

Teorema: Sea F un sistema en punto flotante; x, y ∈ F. Si el


resultado float (x + y) ∈ F entonces:

float (x + y) = (x + y)(1 + δ), |δ| ≤ ǫM .

Prueba. Utilizar el corolario anterior. 

José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.


Interpretaciones

Error relativo en el resultado. Forward error analysis.

|float (x + y) − (x + y)|
≤ ǫM
|x + y|

Error proyectado en los datos. Backward error analysis.

float (x + y) = x(1 + δ) + y(1 + δ) = x′ + y ′ , |δ| ≤ ǫM .

José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.


Ejemplo de análisis de error. La suma.
Analizar (cuantificar) el error cometido en la suma, en punto
flotante, de n números en F:
sn = float (x1 + x2 + · · · + xn )

s2 = float (x1 + x2 )
= (x1 + x2 )(1 + ǫ1 )
= x1 (1 + ǫ1 ) +
x2 (1 + ǫ1 ), |ǫ1 | ≤ ǫM .

s3 = float (s2 + x3 )
= (s2 + x3 )(1 + ǫ2 )
= x1 (1 + ǫ1 )(1 + ǫ2 ) +
x2 (1 + ǫ1 )(1 + ǫ2 ) +
x3 (1 + ǫ2 ), |ǫ2 | ≤ ǫM .
José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.
continuación ...

sn = float (sn−1 + xn )
= (sn−1 + xn )(1 + ǫn−1 )
= x1 (1 + ǫ1 )(1 + ǫ2 ) · · · (1 + ǫn−1 ) +
x2 (1 + ǫ1 )(1 + ǫ2 ) · · · (1 + ǫn−1 ) +
x3 (1 + ǫ2 ) · · · (1 + ǫn−1 )
..
.
xn−1 (1 + ǫn−2 )(1 + ǫn−1 ) +
xn (1 + ǫn−1 ),

en donde

|ǫi | ≤ ǫM , i = 1, 2, . . . , (n − 1).

José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.


Error proyectado en los datos
Observación: la perturbación más grande se concentra en los dos
primeros sumandos.
sn = float (x1 + x2 + · · · + xn−1 + xn )
= x′1 + x′2 + · · · + x′n−1 + x′n
= x1 (1 + ǫ1 )(1 + ǫ2 ) · · · (1 + ǫn−1 ) +
| {z }
x2 (1 + ǫ1 )(1 + ǫ2 ) · · · (1 + ǫn−1 ) +
| {z }
..
.
xn−1 (1 + ǫn−2 )(1 + ǫn−1 ) +
xn (1 + ǫn−1 ).
| {z }
P: ¿Cuál es la magnitud (absoluta/relativa) de dicho error?
R: Acotar la cantidad η1 definida como
(1 + η1 ) = (1 + ǫ1 )(1 + ǫ2 ) · · · (1 + ǫn−1 ) .
| {z }
José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.
Error proyectado en los datos
Observación: la perturbación más grande se concentra en los dos
primeros sumandos.
sn = float (x1 + x2 + · · · + xn−1 + xn )
= x′1 + x′2 + · · · + x′n−1 + x′n
= x1 (1 + ǫ1 )(1 + ǫ2 ) · · · (1 + ǫn−1 ) +
| {z }
x2 (1 + ǫ1 )(1 + ǫ2 ) · · · (1 + ǫn−1 ) +
| {z }
..
.
xn−1 (1 + ǫn−2 )(1 + ǫn−1 ) +
xn (1 + ǫn−1 ).
| {z }
P: ¿Cuál es la magnitud (absoluta/relativa) de dicho error?
R: Acotar la cantidad η1 definida como
(1 + η1 ) = (1 + ǫ1 )(1 + ǫ2 ) · · · (1 + ǫn−1 ) .
| {z }
José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.
Resultado técnico

Lema: Si (n − 1)ǫM ≤ 1/10 y |ǫi | ≤ ǫM ,

(1 + η1 ) = (1 + ǫ1 )(1 + ǫ2 ) · · · (1 + ǫn−1 )
| {z }
entonces:

η1 ≤ (n − 1)ǫ′M , ǫ′M = 1.06ǫM ,

José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.


Error relativo en el resultado

|sn − (x1 + x2 + · · · + xn )|
ǫr =
|x1 + x2 + · · · + xn |
|x1 η1 + x2 η2 + · · · + xn ηn |

|x1 + x2 + · · · + xn |
|η1 |(|x1 | + |x2 | + · · · + |xn |)

|x1 + x2 + · · · + xn |

≤ nǫM cond (sn )

en donde
|x1 | + |x2 | + · · · + |xn |
cond (sn ) =
|x1 + x2 + · · · + xn |

cond (·) es llamado el número de condición del problema.

José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.


Las raı́ces de una cuadrática 1

x2 − bx + c = 0.

b2 − 4c

r =
2
b = 3.6778, c = 0.0020798
r1 = 3.67723441190 . . . r2 = 0.00056558809 . . .

En aritmética decimal de 5 dı́gitos

b2 1.3526 × 101
4c 8.3193 × 10−3
b√2 − 4c 1.3518 × 101
b2 √
− 4c 3.6767 × 100
b − √b2 − 4c 1.1000 × 10−3
(b − b2 − 4c)/2 5.5000 × 10−4

José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.


Las raı́ces de una cuadrática 2


b + b2 −√ 4c 7.3545 × 100
r̂1 = (b + b2 − 4c)/2 3.6773 × 100

Observar que c = r1 ∗ r2 . Por lo tanto


c
r̂2 = = 5.6558 × 10−4
r̂1

José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante.

Anda mungkin juga menyukai