Cálculo numérico. Aritmética en punto flotante. José Luis Morales http://allman.rhon.itam.mx/∼jmorales Departamento de Matemáticas. ITAM. 2012. 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 dp−1 d1 d2 x = ± d0 + 1 + 2 + · · · + p−1 β β β 0 ≤ di ≤ β − 1, βE 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 dp−1 d1 d2 x = ± d0 + 1 + 2 + · · · + p−1 β β β 0 ≤ di ≤ β − 1, βE 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 dp−1 d1 d2 x = ± d0 + 1 + 2 + · · · + p−1 β β β 0 ≤ di ≤ β − 1, βE 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 dp−1 d1 d2 x = ± d0 + 1 + 2 + · · · + p−1 β β β 0 ≤ di ≤ β − 1, βE 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 dp−1 d1 d2 x = ± d0 + 1 + 2 + · · · + p−1 β β β 0 ≤ di ≤ β − 1, βE 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 dp−1 d1 d2 x = ± d0 + 1 + 2 + · · · + p−1 β β β 0 ≤ di ≤ β − 1, βE 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. 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 (32 bits) signo exponente mantisa 1 8 23 bit bits bits 1 11 52 bit bits bits Precisión doble (64 bits) signo exponente mantisa 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 r = |x − float (x)| , |x| x 6= 0. 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 r = |x − float (x)| , |x| x 6= 0. 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 r = |x − float (x)| , |x| x 6= 0. 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 r = |x − float (x)| , |x| x 6= 0. 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) d/2 d/2 d/2 |y − x| ≤ ≤ ≤ = M . |x| |x| |y| |.10 . . . 0 × β E | Corolario: float (x) = (1 + δ)x, José Luis Morales http://allman.rhon.itam.mx/∼jmorales |δ| ≤ M . 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 + δ), Prueba. Utilizar el corolario anterior. José Luis Morales http://allman.rhon.itam.mx/∼jmorales |δ| ≤ M . 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 + δ) = x0 + y 0 , José Luis Morales http://allman.rhon.itam.mx/∼jmorales |δ| ≤ M . Cálculo numérico. Aritmética en punto flotante. A= −1 1 1 = 1 0 `21 1 u11 u12 0 u22 , 0 < << 1 Claramente, u11 = , u12 = −1, `21 = −1 , u22 = 1 + −1 . En aritmética de PF, para suficientemente pequeño, û22 = −1 . Si `21 se calcula exactamente, tenemos que 0 0 A − L̂Û = . 0 1 Elección del pivote . José Luis Morales http://allman.rhon.itam.mx/∼jmorales Cálculo numérico. Aritmética en punto flotante. 0 A = LU = 1 1 −1 = 1 0 1 1 1 0 −(1 + ) , 0 < << 1. En aritmética de punto flotante 1 1 Û = . 0 −1 Por lo tanto 0 A − L̂Û = 0 0 0 0 Elección del pivote 1. Observación: 0 A = P A, P = . 0 1 1 0 . P es una matriz de permutación. 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 )(1 + 1 ) = x1 (1 + 1 ) + x2 (1 + 1 ), |1 | ≤ M . s3 = float (s2 + x3 )(1 + 2 ) = x1 (1 + 1 )(1 + 2 ) + x2 (1 + 1 )(1 + 2 ) + x3 (1 + 2 ), José Luis Morales http://allman.rhon.itam.mx/∼jmorales |2 | ≤ M . 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 ) = x01 + x02 + · · · + x0n = x1 (1 + 1 )(1 + 2 ) · · · (1 + n−1 ) + {z } | x2 (1 + 1 )(1 + 2 ) · · · (1 + n−1 ) + · · · + | {z } 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 , entonces: (1 + η1 ) = (1 + 1 )(1 + 2 ) · · · (1 + n−1 ) | {z } 0M = 1.06M , η1 ≤ (n − 1)0M 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 )| |x1 + x2 + · · · + xn | |x1 η1 + x2 η2 + · · · + xn ηn | ≤ ||x1 + x2 + · · · + xn | |η1 |(|x1 | + |x2 | + · · · + |xn |) ≤ |x1 + x2 + · · · + xn | 0 ≤ nM cond (sn ) r = en donde cond (sn ) = |x1 | + |x2 | + · · · + |xn | |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.