Preliminares Matem´ticos a

Universidad Antonio Nari˜o n

2

Aritm´tica de una computadora e

En nuestro mundo matem´tico tradicional permitimos la exitencia de n´meros a u √ con una cantidad infinita de cifras, por ejemplo 3, sin embargo en las computadoras es imposible manejar una cantidad de informaci´n infinita. M´s a´n o a u el resultado de multiplicar dos n´meros con cuatro cifras decimales es en general u un n´mero con ocho cifras decimales, si tenemos que efectuar varias multiplicau ciones sucesivas es imposible manejar una cantidad siempre creciente de cifras decimales. El computador s´lo utiliza n´meros con una cantidad finita de cifras, de modo o u que los c´lculos se realizan unicamente con respresentaciones aproximadas de a los n´meros verdaderos. En una computadora com´n, solo se usa un subconu u junto relativamente peque˜o del sistema de n´meros reales para representarlos a n u todos. Este subconjunto contiene s´lo algunos n´meros racionales. Aunque los o u errores individuales debidos a esta causa sean peque˜os, su efecto acumulativo n puede en un gran n´mero de operaciones crecer rapidamente, y debemos tener u en cuenta que actualmente las operaciones aritm´ticas, especialmente cuando e son muchas, las deben realizar computadoras. Antes de estudiar las causas del error con algo de profundidad empezaremos por conocer otro sistema num´rico, e com´n en los computadores actuales: el sistema num´rico en base dos (desde u e luego, esto no impide que la comunicaci´n con el computador se haga en base o 10, con la cual estamos familiarizados: ¡el computador debe traducirnos su respuesta!). Luego explorararemos el mundo de la aritm´tica con un n´mero finito e u de cifras.

2.1

N´ meraci´n binaria u o
5 · 103 + 3 · 102 + 0 · 101 + 7 · 100

El n´mero 5307 se puede descomponer en potencias de diez as´ u ı:

Siguiendo con el mismo razonamiento, podemos definir una numeraci´n binaria o o en base 2. As´ el n´mero 10110 escrito en base 2 o binaria equivale al siguiente ı, u n´mero en base 10 o decimal: u 1 · 24 + 0 · 23 + 1 · 22 + 1 · 21 + 0 · 20 = 16 + 0 + 4 + 2 + 0 = (22)10

1

Cuando hay lugar a confusi´n se acostumbra escribir el n´mero de la base como o u sub´ ındice del n´mero. u Podemos utilizar facilmente un algoritmo eficiente para hallar una representaci´n o en base 2 de cualquier n´mero natural m. En efecto si m = b0 · 20 + b1 · 21 + b2 · u 22 + . . . + bn · 2n , entonces b0 m = + b1 · 20 + b2 · 21 + b3 · 22 + . . . + bn · 2n−1 2 2
R0

b0 = + R0 2 luego m = 2R0 + b0 , es decir que b0 es el resto de divivir m entre 2 y R0 es el cociente. De igual manera: b1 R0 = + b2 · 20 + b3 · 21 + b4 · 22 + . . . + bn · 2n−2 2 2
R1

entonces R0 = 2R1 + b1 donde b1 es el resto de la divisi´n de R0 entre 2 y R1 o es el cociente. Si continuamos este proceso encontraremos todos los bk , 0 ≤ k ≤ n. Ejercicio resuelto 1. Obtener, mediante el proceso indicado arriba, la representaci´n binaria del o n´mero 1867 u

m = 1867 = 2 · 933 + 1 R0 = 933 = 2 · 466 + 1 R1 = 466 = 2 · 233 + 0 R2 = 233 = 2 · 116 + 1 R3 = 116 = 2 · 58 + 0 R4 = 58 = 2 · 29 + 0 R5 = 29 = 2 · 14 + 1 R6 = 14 = 2 · 7 + 0 R7 = 7 = 2 · 3 + 1 R8 = 3 = 2 · 1 + 1 R9 = 1 = 2 · 0 + 1 R10 = 0 Entonces (1867)10 = (11101001011)2 Ejercicios 2

b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10

=1 =1 =0 =1 =0 =0 =1 =0 =1 =1 =1

1. Escriba (11001101)2 en base decimal 2. Obtener la representaci´n binaria del n´mero 5709 o u

2.2

Fracciones binarias

El n´mero 25.43 se puede descomponer en potencias de 10 as´ u ı: (25.43)10 = 2 · 101 + 5 · 100 + 4 · 10−1 + 3 · 10−2 Si sabemos representar los reales del intervalo (0,1) en el sistema binario, podemos entonces, inmediatamente, tener la repreentaci´n en base 2 de cualquier o n´mero real. As´ por ejemplo el n´mero 0.11 en base 2 equivale al siguiente u ı u n´mero en base 10. u 1 · 2−1 + 1 · 2−2 = 0.5 + 0.25 = 0.75 entonces, de acuerdo con el ejercicio resuelto 2.1.1 , tendremos (1867.75)10 = (11101001011.11)2 . Un eficiente algoritmo para pasar una fracci´n decimal a la correspondiente o fracci´n binaria es el siguiente: o Sea x ∈ (0, 1), x = c1 · 2−1 + c2 · 2−2 + c3 · 2−3 + . . . + cn · 2−n entonces 2x = c1 + c2 · 2−1 + c3 · 2−2 + . . . + cn · 2−n+1
F1

Notese que F1 ∈ (0, 1), entonces c1 es la parte entera de 2x, es decir: c1 = [2x] y F1 es su parte fraccionaria. 2F1 = c2 + c3 · 2−1 + . . . + cn · 2−n+2
F2

entonces c2 = [2F1 ] Continuando con este proceso encontramos todos los ck , 1 ≤ k ≤ n Ejercicio resuelto 2. Escriba el n´mero decimal x = 0.6 como una fracci´n binaria. u o 2x = 1.2 2F1 = 0.4 2F2 = 0.8 2F3 = 1.6 2F4 = 1.2 2F5 = 0.4 . . . c1 c2 c3 c4 c5 c6 =1 =0 =0 =1 =1 =0 . . . 3 F1 F2 F3 F4 F5 F6 = 0.2 = 0.4 = 0.8 = 0.6 = 0.2 = 0.4 . . .

Es evidente que a partir de c4 se repiten los siguientes cuatro valores: c5 = c1 , c6 = c2 , . . . , es decir que la trepresentaci´n binaria de x resulta peri´dica: o o (0.6)10 = (0.1001)2 En muchos casos la representaci´n binaria requiere de un n´mero infinito de o u cifras, aunque su correspondiente representaci´n decimal no lo requiera. Si o deseamos volver a la base 10, basta observar que: x = 0.1001 = 2−1 + 2−4 + 2−5 + 2−8 + 2−9 + 2−12 + . . .
∞ ∞

= 2−1
k=0

2−4k +
k=1 ∞

2−4k

= (2−1 + 1)
k=0

2−4k − 1 −1

=

1 3 2 1 − 2−4 3 = = 0.6 5

Ejercicios 3. Escriba el n´mero decimal x = 0.8 como una fracci´n binaria. u o 4. Escriba (0.110)2 en base decimal

2.3

N´ meros de m´quina u a

Cada n´mero real x puede ser representado en un sistema num´rico de base u e B ∈ Z+ , en la forma: x = ±0.a1 a2 a3 . . . · B L Esta representaci´n se llama de punto flotante de x para la base B. L se llama o exponente ´ caracter´ o ıstica y la cadena a1 a2 a3 . . . se llama mantisa. Si x = 0, a trav´s de cambios en el exponente L puede lograrse siempre que la e primera cifra de la mantisa no sea cero; as´ por ejemplo, 0.0001·B L = 0.1·B L−3 . ı De esta manera se obtiene una representaci´n de punto flotante normalizada. o Una representaci´n en forma de punto flotante normalizada del n´mero π = o u 3.14159265 . . . para la base 10 es: 0.314159265 . . . · 101 La representaci´n interna de n´meros doble precisi´n, norma IEEE utiliza 64 o u o bits: 1. El primer bit es un identificador de signo, denotado como s: (−1)s . 4

2. Le sigue un exponente de 11 bits, c 3. y una mantisa de 52 bits, f La base para el exponente es 2. Como 52 d´ ıgitos binarios corresponden a entre 16 y 17 d´ ıgitos decimales, podemos suponer que un n´mero representado en u este sistema tiene al menos 16 cifras decimales de precisi´n. El exponente de 11 o d´ ıgitos binarios proporciona un intervalo de 0 a 211 − 1 = 2047. Sin embargo el uso exclusivo de enteros positivos para el exponente no permitir´ una repreıa sentaci´n adecuada de los n´meros con magnitud peque˜a. Para garantizar que o u n estos n´meros tambi´n sean representables, se resta 1023 de la caracter´ u e ıstica, de modo que el intervalo del exponente es en realidad de -1023 a 1024: 2c−1023 . Supongamos que, en lugar de punto flotante binario, tenemos punto flotante decimal con k cifras signicativas. El truncamiento se obtiene al suprimir de la mantisa las cifras k + 1, k + 2, . . ., dejando unicamente las primeras k cifras signicativas. El redondeo se obtiene sumando a la mantisa 0.5·10−k y en seguida se truncan k cifras significativas. Por ejemplo, consideremos e = 2.718281828459 . . . = 0.2718281828459 . . . · 101 . Al truncar a 5 cifras signicativas se obtiene e = 0.27182 · 101 . Para redondear, ˜ 0.2718281828459 . . . + 0.000005 = 0.2718331828459 . . . y al truncar se obtiene el valor redondeado e = 0.27183 · 101 . ˆ Definici´n 2.3.1 (error relativo y absoluto) Si p∗ e una aproximaci´n de o o |p−p∗ | ∗ p, el error absoluto es |p − p | y el error relativo es |p| , siempre que p = 0. Uno de los c´lculos m´s comunes que producen errores tiene que ver con la a a cancelaci´n de cifras significativa debido a la resta de n´meros casi iguales: o u Ejercicio resuelto 3. Sean p = 0.54617 y q = 0.54601. Calcular p − q con una aritm´tica de cuatro e cifras. Determinar el error relativo El valor exacto de r = p − q es r = 0.00016. Al redondear p y q a cuatro cifras, tenemos p∗ = 0.5462 y q ∗ = 0.5460, entonces r∗ = p∗ − q ∗ = 0.0002 es la aproximaci´n de cuatro cifras de r. Como o |r − r∗ | |0.00016 − 0.0002| = = 0.25 |r| 0.00016 el resultado s´lo tiene una cifra significativa, en tanto que la precisi´n para p∗ o o y q ∗ fue de cuatro y cinco cifras significativas, respectivamente. Si se usa el truncamiento para obtener las cuatro ciras, las aproximaciones de cuatro cifras de p, q y r son p∗ = 0.5461 q ∗ = 0.5460 y r∗ = 0.0001. Con esto se obtiene |0.00016 − 0.0001| |r − r∗ | = = 0.375 |r| 0.00016 5

lo que tambi´n produce s´lo una cifra de precisi´n e o o Si una representaci´n con un n´mero finito de cifras o un c´lculo introduce un o u a error, ´ste aumenta al dividir entre un n´mero con magnitud peque˜a. e u n Ejercicios 5. Evalue f (x) = x3 − 6.1x2 + 3.2x + 1.5 en x = 4.71 con una aritm´tica de e tres cifras. Determine el error absoluto y el error relativo 6. Utilice la f´rmula cuadratica para hallar las ra´ o ıces de la ecuaci´n x2 + o 62.10x + 1 con aritm´tica de redondeo a cuatro cifras. Determine el error e relativo Definici´n 2.3.2 (n´ meros de m´quina) El conjunto M de los n´meros o u a u de la forma de punto flotante normalizada, que pueden ser representados en un computador, se llama conjuntos de n´meros de m´quina. M depende de u a la base B, de la longitud de la mantisa M , y del rango para el exponente L ∈ {−k, −k + 1, . . . , K − 1, K}, siendo k, K ∈ Z+ . Explicitamente, M = M(B.M, −k, K) = {0} ∪ {0.a1 a2 a3 . . . aM · B L : a1 , a2 , . . . , aM ∈ {0, 1, 2, . . . , B − 1}, a1 = 0 L ∈ {−k, −k + 1, . . . , K − 1, K}} Mantilla El computador s´lo puede calcular con n´meros de M y s´lo puede arrojar o u o ´ n´meros de M. Esta es de entrada una gran limitaci´n y una enorme fuente de u o errores. Ejercicio resuelto 4. Construir explicitamente la m´quina correspondiente a M(2, 2, −2, 2) a Teniendo en cuenta la definici´n anterior, o M = {0} ∪ {±0.1a · 2L : a ∈ {0, 1}, L ∈ {−2, −1, 0, 1, 2}} El menor n´mero positivo de M(2, 2, −2, 2) es u xmin = 0.102 · 10−2 = (1 · 2−1 + 0 · 2−2 ) · 2−2 = y el mayor n´mero positivo de la m´quina es u a xmax = 0.112 · 22 = (1 · 2−1 + 1 · 2−2 ) · 22 = 3 El conjunto 6 1 8

1 3 1 3 1 3 3 M+ = { , , , , , , 1, , 2, 3} 8 16 4 8 2 4 2 contiene todos los n´meros positivos de M escritos en forma ascendente. Como u se observa su distribuci´n en la recta real no es uniforme, cerca al origen hay o mayor densidad y los n´meros mayores que 3 no pueden ser dominados por u esta “mini2 -m´quina”. Si en alg´n proceso de c´lculo se sobrepasa este valor a u a m´ximo xmax , se produce un error conocido con el nombre de overflow y el a proceso se detiene. Los n´meros reales x : 1 < x < 3 que no pertenecen a M+ u 8 se aproximan al siguiente n´mero (a la derecha) de m´quina m´s cercano. Por u a a 1 ejemplo, 2.6 −→ 3. De igual manera los n´meros negativos entre -3 y − 8 que u no estan en la m´quina se aproximan al anterior n´mero (a la izquierda) de a u u M : −0.7 → −0.75 = −3 . Los n´meros reales que se encuentran en el intervalo 4 a ( −1 , 1 ) son reemplazados por cero, por ejemplo 0.12 → 0, pero la m´quina 8 8 no detiene el proceso de c´lculo cuando hace estos “arrastres”. En este caso a hablamos de underflow.(Mantilla) Ejercicios Sea M = M(2, 3, −3, 4) 7. Construya explicitamente la m´quina correspondiente a 8. Identifique el xmin y el xmax de la m´quina a 9. Determine el intervalo de n´meros reales que es reemplazado por cero u 10. Determine el subconjunto de n´meros reales para el cual se produce overu flow 11. ¿el n´mero real 2.6 es aproximado a qu´ n´mero de la m´quina? u e u a 12. ¿el n´mero real -0.9 es aproximado a qu´ n´mero de la m´quina? u e u a

7

3

Bibliograf´ ıa

Mantilla Ignacio, An´lisis Num´rico, Universidad Nacional de Colombia a e Burden Richard, An´lisis Num´rico, Thomson. a e

8