2. Representación de números 1 Julio C. Carrillo E. Escuela de Matemáticas, UIS
2. Representación de números 2 1. Representación de punto flotante normalizada La notación científica es un tipo de representación de números reales la cual es particularmente para representar y operar numéricamente, en particular, con aquellos de tales números que son demasiado pequeños o demasiado grandes. Como veremos, este tipo de problema también se presentan cuando en una computadora se tratan de representar y manipular números reales, pero con una dificultad adicional: toda calculadora o computadora solo trabaja con números finitos, más no infinitos. Una variación de la notación científica da la solución a este problema.
2. Representación de números 3 Sea β la base a ser utilizada por una computadora para representar número reales. Entonces todo número real no nulo x puede ser representado en la forma de punto flotante normalizada (notación científica normalizada) como: x = σ (0.a 1 a 2 a t a t+1 ) β β e donde σ = ±, a 1 0 y e es un entero. Los números a 1,a 2,... son dígitos tales que 0 a i < β. Por ejemplo, en base 10, 37,21829 = 0,37211829 10 2 0,00227 = 0,2271828 10 2 3000527,11059 = 0,300052711059 10 7 En esta representación, el exponente e es un número entero que no necesariamente se considera que tiene representación en la base β.
2. Representación de números 4 Por ejemplo, en base 2, 3 16 = 0,011 2 1 = 0,110 2 2. Debe aclararse que en la representación de punto flotante normalizada en una base β dada, los números reales pueden tener una representación decimal finita, infinita periódica o infinita no periódica. Aún más, también puede suceder que números reales que tienen representación finita en una base pueden tener representación infinita en otra base. Por ejemplo, 1 10 = (0,1) 10 = (0,00011 0011 0011 0011 0011 ) 2. = (0,06314 6314 6314 6314 6314 6314 6314 ) 8 Como una calculadora o computadora tiene únicamente capacidad de representar y almacenar cantidades finitas, este tipo de máquinas únicamente operan con números que se puedan representar con un número finito de dígitos. Los números reales que son representados
2. Representación de números 5 en un computador son llamados números de máquina. Como todo número usado en cálculos numéricos por el sistema de una computadora debe ser conforme al formato de los números en tal sistema, este número debe tener una expansión finita. Es importante destacar que la mayoría de números reales no pueden ser representados exactamente en un computador. El sistema numérico utilizado por un computador no es un continuo pero si es un conjunto discreto. A fin de ejemplificar la anteriormente mencionado, consideremos todos los números de punto flotante que se pueden representar de la forma x = ±(0.b 1 b 2 b 3 ) 2 2 ±k donde b 1,b 2,b 3 y k son dígitos binarios. En este caso existen dos elecciones para el signo ±, dos opciones para b 1, dos opciones para b 2, dos opciones para b 3 y tres opciones para el exponente: ±1,0. En total, existen 2 2 2 2 3 = 48 diferentes números que tienen esta
2. Representación de números 6 forma. Los números de este sistema son dados así:
2. Representación de números 7 El menor y el mayor número, no negativos, que se pueden representar en este sistema son, respectivamente, 0,001 2 1 = 1 16 0,111 2 1 = 7 4 (menores mantisa y exponente) (mayores mantisa y exponente) Los números positivos de este sistema en este rango es un conjunto discreto el cual es dado en la siguiente figura. Si en el proceso de un cálculo numérico, el resultado es un número x de la forma ±q e, donde e está fuera del rango permitido, entonces se dice que un desbordamiento o un subdesbordamiento ha ocurrido o que x esta fuera del rango del computador. Generalmente el desbordamiento resulta en un error fatal para, y la ejecución normal del programa se para. Un subdesbordamiento se resuelve fácilmente al hacer x igual a cero.
2. Representación de números 8 En en un computador con un sistema de números de punto flotante como el considerado anteriormente, cualquier número no nulo más cercano a 0 que a 1 16 puede producir subdesbordamiento a cero y cualquier número fuera del rango 1,75 = 7 4 y 1,75 = 7 4 puede desbordar la máquina a infinito. En efecto, al utilizar la forma de punto flotante normalizada encontramos que estos números (excepto el cero) tienen la forma x = ±(0,1b 2 b 3 ) 2 2 ±k. Los números de máquina no negativos se encuentran representados en la siguiente figura, y se encuentran en el rango 1 4 y 7 4. En efecto, el menor numero de máquina positivo es(0,100) 2 1 = 1 4. 3 Por ejemplo, 16 = 0,011 2 1 escrito en forma de punto flotante normalizada es 3 16 = 0,110 2 2 en donde 2 = e k = 0,±1.
2. Representación de números 9 2. Representación de punto flotante En representación de punto flotante, un número es representado internamente por un bit con signo (interpretado como mas o menos), un exponente entero exacto e, llamado característica, y una mantisa de la forma 1.f = 1+f. Juntas representan el número ( 1) s β e E (1.f) 2 (1) donde s = 0 corresponde a + y s = 1 a, 2 es la base de la representación (algunas veces la base es 8 o 16), y E es el sesgo del exponente (para la representación adecuada de números con magnitud pequeña), una constante entera fija para cualquier máquina y representación dada. Como ejemplo, ver la siguiente tabla.
2. Representación de números 10 Tipo #s #e #f w E p Media 1 5 10 16 15 11 Simple 1 8 23 32 127 24 Doble 1 11 52 64 1023 53 Extendida 1 15 112 128 16383 113 #s: bits del signo, #e: número de bits del exponente, #f: número de bits de la mantisa, E = 2 #e 1 1, w: número total de bits o longitud de la palabra, p = #f + 1: bits de precisión. Cuadro 1: Formatos binarios del estándar IEEE 754-2008.
2. Representación de números 11 Por ejemplo, el valor deeen la representación de un número de punto flotante en doble precisión debe cumplir con la condición 0 < e < (11 111 111 111) 2 = 2 11 1 = 2047. Para poder representar números muy pequeños se considera el sesgo a como (1 111 111 111) 2 = 2 10 1 = 1023 Así, el exponente de los números en esta representación cumplen con la condición que 1022 e 1023 1023. De igual modo, la mantisa de cada número no negativo debe cumplir la desiguadad b 1 (1.f) 2 (1,111111 11111) 2 = 2 2 52 a 10 es el número de dígitos que se usan en el exponente, el primero de ellos se usa para el signo. b Como 1 + r + + r n = rn+1 1, entonces 1 + 2 + + 2 r 1 n = 2 n+1 1 y 1 2 + 1 2 2 + + 1 2 n = 1 2 n.
2. Representación de números 12 dado que f incluye 52 bits. Como 2 52 2,22 10 16 = 0,222 10 15, entonces en cálculos corrientes 15 dígitos decimales significativos pueden ser obtenidos con doble precisión. El mayor número de máquina de doble precisión que se puede obtener es 2 1023 (2 2 52 ) 2 1024 1,8 10 308. El número de máquina más pequeño de doble precisión es 2 1022 2,2 10 308. Ejemplo 1. Determine la representación en número de máquina de simple precisión del número deciamal 52,234375. Solución. La part entera en binario es(52) 10 = (11010) 2, y la parte decimal es (0,234375) 10 = (0,001 111) 2. Entonces (52,234375) 10 = (110 100,001 111) 2 = (1,10 100001 1110) 2 2 5 es la representación en la forma de punto flotante en base 2, y (0,10100001 1110) 2 es la mantisa almacenada. Ahora el exponente es
2. Representación de números 13 (5) 10, y como e 127 = 5, entonces (e) 10 = (132) 10 = (10 000 100) 2 es el exponente almacenado. Por lo tanto, la representación buscada es ( 52,23437) 10 = [1 10 000 100 101 000 011 110 000 000 000 00] 2 Ejemplo 2. Determine el número decimal que corresponde al número de máquina (0100 0101 1101 1110 0100 0000 0000 0000) 2. Solución. Este número involucra 32 bits, por la cual corresponde a la representación de un número real x en simple precisión: 1 dígito binario para el signo, 7 para el exponente y 23 para la mantisa. Una
2. Representación de números 14 idea de esta distribución es, (0 100 0101 1 101 1110 0100 0000 0000 0000) 2. El exponente almacenado es (100 0101 1) 2 = (2 0 +2 1 +2 3 +2 7 ) 10 = (130) 10 y el exponente de x es e E = 139 127 = 12. La mantisa es positiva y representa el número x = (1,101 1110 01) 2 2 12 = (1101 1110 01000.) 2 = 2 3 +2 6 +2 7 +2 8 +2 9 +2 11 +2 12 = 7112.
2. Representación de números 15 3. Errores de computador en la representación de números Revisemos de nuevo el problema que ocurre en la representación en el computador de un número real dado x. Utilicemos un computador que utiliza números de máquina de 32 bits (precisión simple: #s = 1, #e = 8, #f = 23). Si x = 2 5321697 o x = 2 3251, estos exponentes exceden por desbordamiento y subdesbordamiento, resp., y el error relativo que se obtiene al reemplazar a x por el número de máquina más cercano axsería muy grande. Tal número está fuera del rango de números de máquina de 32 bits de longitud: en este caso el exponente e debe representar un número entre (2 7 1) = 127 y 128. A modo de discusión, consideremos un número real cualquiera x en forma punto de punto flotante en precisión simple de la forma x = q 2 e ( 1 2 q < 1, 126 e 127)
2. Representación de números 16 El proceso de reemplazar a x por su número de máquina más cercano es llamado redondeo de corrección, y el error involucrado es llamado error de redondeo el cual deseamos saber que tan grande es. Supongamos que x es representado en la forma binaria normalizada, x = (0,1b 2 b 3 b 24 b 25 ) 2 2 e. Un número de máquina cercano a x puede ser obtenido mediante redondeo por defecto o redondeo por exceso. En el primer caso simplemente resulta que no se consideran los dígitos b 24 b 25, puesto que sólo se pueden almacenar 23 dígitos en la mantisa. Este número de máquina es x = (0,1b 2 b 3 b 24 ) 2 2 e, el cual evidentemente se encuentra a la izquierda de x. Otro número de máquina, x +, esta a la derecha de x y es obtenido por redondeo por exceso. Este número es obtenido al sumar una unidad a b 24 en
2. Representación de números 17 la expresión de x. Así, x + = (0,1b 2 b 3 b 24 ) 2 +2 24 ) 2 e, pues(0,0 01) 2 = 2 24. El número más cercano de estos dos números a x es el número de máquina elegido para representar a x. Definición 1. Si x es una aproximación de x, el error absoluto en esta aproximación es x x y el error relativo es x x, si x 0. x Si x esta más cercano a x, entonces x x 1 2 x + x = 2 25+e
2. Representación de números 18 En este caso, el error relativo es acotado de la forma x x x 2 25+e (0,1b 2 b 3 b 24 ) 2 2 2 25 e 1 2 = 2 24 = u donde u es la unidad de redondeo para un computador con simple precisión con aritmética de punto flotante. Como el epsilon de la máquina se define como ε = 2 23 entonces u = 1 2 ε. Además, u = k, donde k es el número de dígitos binarios usados en la mantisa, incluyendo el bit oculto (k = 24 en simple precisión y k = 53 en doble precisión). De otro lado, si x está mas cercano a x + que a x, entonces x x + 1 2 x + x y de manera similar a como ya se hizo anteriormente se demuestra que el error relativo no es más grande que 2 24 = k. Así que en el caso del error por redondeo al número más cercano, el error relativo es acotado por u. Observe que cuando todos los dígitos o bits
2. Representación de números 19 son descartados, el proceso es llamado recorte. Si un palabra de computador de 32 bits se designa para números recortados, la cota de error relativo puede ser dos veces mas grande que la anterior, o 2u = 2 23 = ε. 4. Notación de números de máquina y análisis regresivo del error Veamos ahora el error que se produce cuando se realizan operaciones aritméticas con números de máquina. Por simplicidad, supongamos que estamos trabajando con números de máquina de cinco lugares decimales y que los vamos a sumar. Dos números de este tipo pueden ser x = 0,37218 10 4, y = 0,71422 10 1.
2. Representación de números 20 Suponiendo que el computador realiza operaciones aritméticas en un área que es el doble de la longitud de los números, es decir, que el computador tiene un acumulador de diez lugares. La mayoría de computadores realizan operaciones aritméticas en un área del doble de la longitud de la palabra, así que asumamos que el computador con el cual trabajamos tiene un acumulador en lugares de diez. Primero, el exponente de ambos números debe ser ajustado al mismo exponente. A continuación los números son sumadas en el acumulador y el resultado redondeado es puesto en formato de palabra de computador: x= 0,37218 00000 10 4 y= 0,00000 71422 10 4 x+y= 0,37218 71422 10 4 El número de máquina más cercano a x+y es z = 0,37219 10 4 y
2. Representación de números 21 el error relativo involucrado en esta operación de máquina es x+y z x+y = 0,00000 28578 104 0,37218 71422 10 4 0,77 10 5 Este typo de error es aceptable en computadores que manejen este tipo de precisión tan baja. Para analizar el error relativo cuando se realizan operaciones aritméticas con números de máquina, es conveniente considerar la notación f l(x) para denotar el número de máquina de punto flotante que corresponde al número real x. De hecho, la función fl depende del particular en particular que se considere. Por ejemplo, si trabajamos con números de máquina de cinco lugares decimales, entonces fl(0,3721871422 10 4 ) = 0,37219 10 4.
2. Representación de números 22 Para un computador con palabras de longitud de 32 bits (simple precisión), se tiene del resultado previamente establecido que x fl(x) x u (u = 2 24 ). En lo sucesivo consideramos que un redondeo se esta realizando. Haciendo δ = fl(x) x, x encontramos que esta desigualdad puede ser expresada de una manera equivalente, y más útil, como fl(x) = x(1+δ) con δ 2 24. Teniendo en cuenta los detalles con la suma de 1+ε, entonces fl(1+ε) > 1 si ε 2 23, fl(1+ε) = 1 si ε < 2 23.
2. Representación de números 23 Consecuentemente, si el epsilon de la máquina es el número de máquina más pequeño ε tal que fl(1+ε) > 1 entonces ε = 2 23. Existen rutinas para encontrar el epsilon de un computador, o bien, se puede escribir un programa que encuentre el menor entero positivo x = 2 m tal que 1+x > 1 en la máquina. Sea ahora que denota una de las operaciones aritméticas +,, o. Supongamos que en un computador se utilizan palabras de w bits de longitud, las cuales tienen una precisión p (ver Tabla 1, pag. 9). Bajo esta suposición el error relativo no excede 2 p. Por ejemplo, en simple precisión se tiene que las palabras son de 32 bits de longitud y la precisión es de orden 24; por esto, error relativo no excede 2 24. Por un análisis similar al anterior, se tiene que fl(x y) = (x+y)(1+δ) con δ 2 p.
2. Representación de números 24 En la mayoría de computadores las suposiciones acerca del error relativo y la estimación de δ no se cumplen. Por ejemplo, es posible que que x y y sean números de máquina para los cuales x y se desborda o subdesborda. La ecuación anterior puede ser escrita de diferentes maneras, algunas de las cuales sugieren interpretaciones alternativas de redondeo. Por ejemplo, fl(x y) = x(1+δ)+y(1+δ). Esto quiere decir que el resultado de sumar los números de máquina x y y no es en general x + y, pero si es en realidad la suma de x(1+δ) y y(1+δ). Podemos pensar que x(1+δ) es el resultado de una pequeña perturbación de x. Así, la versión de máquina de x+y, que es fl(x+y), es la suma exacta de las pequeñas perturbaciones de x y y. Este interpretación es un ejemplo de error de análisis regresivo,
2. Representación de números 25 y con él se intenta determinar que perturbación de los datos originales pueden causar que los resultados del computador sean exactos para un problema perturbado. En contraste, un análisis directo del error intenta determinar como las respuestas del computador difieren de las respuestas exactas con estos mismos datos. En este aspecto el cálculo científico a estimulado una nueva forma de ver los errores computacionales. Ejemplo 3. Si x, y y z son números en un computador con palabras de longitud de 32 bits (simple precisión, o float), estime la cota superior que puede se obtenida para el error relativo al calcular z(x+y). Solución. En el computador, primero se hace el cálculo de x+y. Esta operación aritmética da como resultado el número fl(x+y), el cual difiere de x+y por el redondeo. Por los principios establecidos,
2. Representación de números 26 existe un δ 1 tal que fl(x+y) = (x+y)(1+δ 1 ) con δ 1 2 24. Ahora bien, z es ya un número de máquina. Cuando este es multiplicado por el número de máquina fl(x+y), el resultado es el número de máquina fl(zfl(x + y)). Estos números también difieren de su contraparte exacta, y por ello, existen un δ 2 tal que fl(zfl(x+y)) = zfl(x+y)(1+δ 2 ) donde δ 2 2 24 De estas dos ecuaciones tenemos que fl(zfl(x+y)) = z(x+y)(1+δ 1 )(1+δ 2 ) = z(x+y)(1+δ 1 +δ 2 +δ 1 δ 2 ) z(x+y)(1+δ 1 +δ 2 ) = z(x+y)(1+δ), donde el término δ 1 δ 2 es ignorado, dado que δ 1 δ 2 2 48, y δ =
2. Representación de números 27 δ 1 +δ 2. Como δ δ 1 + δ 2 2 24 +2 24 = 2 23, entonces la cota superior que se espera para el error relativo es 2 24. Ejemplo 4. Encuentre, de ser posible, una estimación del error de redondeo relativo en el cálculo de la suma de dos números reales x y y en un computador con palabras de longitud de 32 bits. Determinar si en tal caso es cierto que z = fl(fl(x)+fl(y)) = [(x(1+δ)+y(1+δ)](1+δ) = (x+y)(1+δ) 2 (x+y)(1+2δ) y que el error relativo es acotado de la forma (x+y) z x+y = 2δ(x+y) x+y = 2δ) 2 23. Solución. La cantidad δ que ocurre en estos cálculos no siempre es
2. Representación de números 28 la misma. El cálculo correcto es z = fl(fl(x)+fl(y)) = [(x(1+δ 1 )+y(1+δ 2 )](1+δ 3 ) = [(x+y)+δ 1 x+δ 2 y(δ 3 x+δ 3 y +δ 1 δ 3 x+δ 2 δ 3 y] (x+y)+x(δ 1 +δ 3 )+y(δ 2 +δ 3 ). Por lo tanto, el error de redondeo relativo es (x+y) z x+y = x(δ 1 +δ 3 )+y(δ 2 +δ 3 ) x+y = (x+y)δ 3 +xδ 1 +yδ 2 x+y = δ 3 + xδ 1 +yδ 2 x+y el cual no puede ser acotado superiormente, porque el segundo término tiene en el denominador una cantidad que puede ser cero o cercana a cero. Observe que si x y y son números de máquina, entonces
2. Representación de números 29 δ 1 = δ 2 = 0 y entonces δ 3 es una cota superior de este error. Pero en este caso estos cálculos no se necesitan ya que cuando se combinan números de máquina mediante las cuatro operaciones elementales se tiene que asumir que el error relativo no debe exceder 2 24 en magnitud. En resumen, 1. Un número en simple precisión de punto flotante en una computador de palabra de longitud de 32 bits con representación estándar de punto flotante es almacenado en una sola palabra con el patrón de bits b 1 b 2 b 9 b 10 b 11 b 32 la cual es interpretada como el número real ( 1) b 1 2 (b 2b 3 b 9 ) 2 2 127 (1.b 10 b 11 b 32 ) 2. 2. Un número en doble precisión de punto flotante en una compu-
2. Representación de números 30 tador de palabra de longitud de 32 bits con representación estándar de punto flotante es almacenado en un dos palabras con el patrón de bits b 1 b 2 b 9 b 10 b 11 b 32 b 33 b 34 b 35 b 64 la cual es interpretada como el número real ( 1) b 1 2 (b 2b 3 b 12 ) 2 2 1023 (1.b 13 b 14 b 64 ) 2. 3. La relación entre un número real x y su número de máquina de punto flotante fl(x) puede ser escrita como fl(x) = x(1+δ) donde δ 2 24. Si denota cualquiera de las operaciones aritméticas, entonces podemos escribir en donde δ depende de x y y. fl(x y) = (x y)(1+δ),