You are on page 1of 8

Preliminares Matemáticos

Universidad Antonio Nariño

2 Aritmética de una computadora


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

2.1 Númeración binaria


El número 5307 se puede descomponer en potencias de diez ası́:

5 · 103 + 3 · 102 + 0 · 101 + 7 · 100

Siguiendo con el mismo razonamiento, podemos definir una numeración binaria


o en base 2. Ası́, el número 10110 escrito en base 2 o binaria equivale al siguiente
número en base 10 o decimal:

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
subı́ndice del número.
Podemos utilizar facilmente un algoritmo eficiente para hallar una representación
en base 2 de cualquier número natural m. En efecto si m = b0 · 20 + b1 · 21 + b2 ·
22 + . . . + bn · 2n , entonces

m b0
= + b1 · 20 + b2 · 21 + b3 · 22 + . . . + bn · 2n−1
2 2 | {z }
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:
R0 b1
= + b2 · 20 + b3 · 21 + b4 · 22 + . . . + bn · 2n−2
2 2 | {z }
R1
entonces R0 = 2R1 + b1 donde b1 es el resto de la división de R0 entre 2 y R1
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
número 1867

m = 1867 = 2 · 933 + 1 b0 =1
R0 = 933 = 2 · 466 + 1 b1 =1
R1 = 466 = 2 · 233 + 0 b2 =0
R2 = 233 = 2 · 116 + 1 b3 =1
R3 = 116 = 2 · 58 + 0 b4 =0
R4 = 58 = 2 · 29 + 0 b5 =0
R5 = 29 = 2 · 14 + 1 b6 =1
R6 = 14 = 2 · 7 + 0 b7 =0
R7 = 7 = 2 · 3 + 1 b8 =1
R8 = 3 = 2 · 1 + 1 b9 =1
R9 = 1 = 2 · 0 + 1 b10 =1
R10 = 0
Entonces (1867)10 = (11101001011)2

Ejercicios

2
1. Escriba (11001101)2 en base decimal
2. Obtener la representación binaria del número 5709

2.2 Fracciones binarias


El número 25.43 se puede descomponer en potencias de 10 ası́:

(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, pode-
mos entonces, inmediatamente, tener la repreentación en base 2 de cualquier
número real. Ası́ por ejemplo el número 0.11 en base 2 equivale al siguiente
número en base 10.

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
fracción binaria es el siguiente:
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


| {z }
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


| {z }
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.
2x = 1.2 c1 =1 F1 = 0.2
2F1 = 0.4 c2 =0 F2 = 0.4
2F2 = 0.8 c3 =0 F3 = 0.8
2F3 = 1.6 c4 =1 F4 = 0.6
2F4 = 1.2 c5 =1 F5 = 0.2
2F5 = 0.4 c6 =0 F6 = 0.4
.. .. ..
. . .

3
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:

(0.6)10 = (0.1001)2
En muchos casos la representación binaria requiere de un número infinito de
cifras, aunque su correspondiente representación decimal no lo requiera. Si
deseamos volver a la base 10, basta observar que:

x = 0.1001
= 2−1 + 2−4 + 2−5 + 2−8 + 2−9 + 2−12 + . . .

X X∞
= 2−1 2−4k + 2−4k
k=0 k=1

X
= (2−1 + 1) 2−4k − 1
k=0
 
3 1
= −1
2 1 − 2−4
3
= = 0.6
5
Ejercicios

3. Escriba el número decimal x = 0.8 como una fracción binaria.


4. Escriba (0.110)2 en base decimal

2.3 Números de máquina


Cada número real x puede ser representado en un sistema numérico de base
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
exponente ó caracterı́stica y la cadena a1 a2 a3 . . . se llama mantisa.
Si x 6= 0, a través de cambios en el exponente L puede lograrse siempre que la
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.
Una representación en forma de punto flotante normalizada del número π =
3.14159265 . . . para la base 10 es: 0.314159265 . . . · 101

La representación interna de números doble precisión, norma IEEE utiliza 64


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
este sistema tiene al menos 16 cifras decimales de precisión. El exponente de 11
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ı́a una repre-
sentación adecuada de los números con magnitud pequeña. Para garantizar que
estos números también sean representables, se resta 1023 de la caracterı́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 ẽ = 0.27182 · 101 . Para redondear,
0.2718281828459 . . . + 0.000005 = 0.2718331828459 . . . y al truncar se obtiene el
valor redondeado ê = 0.27183 · 101 .

Definición 2.3.1 (error relativo y absoluto) Si p∗ e una aproximación de



p, el error absoluto es |p − p∗ | y el error relativo es |p−p |
|p| , siempre que p 6= 0.

Uno de los cálculos más comunes que producen errores tiene que ver con la
cancelación de cifras significativa debido a la resta de números casi iguales:

Ejercicio resuelto 3.
Sean p = 0.54617 y q = 0.54601. Calcular p − q con una aritmética de cuatro
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

|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∗
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

|r − r∗ | |0.00016 − 0.0001|
= = 0.375
|r| 0.00016

5
lo que también produce sólo una cifra de precisión

Si una representación con un número finito de cifras o un cálculo introduce un


error, éste aumenta al dividir entre un número con magnitud pequeña.

Ejercicios

5. Evalue f (x) = x3 − 6.1x2 + 3.2x + 1.5 en x = 4.71 con una aritmética de


tres cifras. Determine el error absoluto y el error relativo
6. Utilice la fórmula cuadratica para hallar las raı́ces de la ecuación x2 +
62.10x + 1 con aritmética de redondeo a cuatro cifras. Determine el error
relativo

Definición 2.3.2 (números de máquina) El conjunto M de los números


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
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 6= 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


números de M. Ésta es de entrada una gran limitación y una enorme fuente de
errores.

Ejercicio resuelto 4.
Construir explicitamente la máquina correspondiente a M(2, 2, −2, 2)
Teniendo en cuenta la definición anterior,

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
1
xmin = 0.102 · 10−2 = (1 · 2−1 + 0 · 2−2 ) · 2−2 =
8
y el mayor número positivo de la máquina es

xmax = 0.112 · 22 = (1 · 2−1 + 1 · 2−2 ) · 22 = 3


El conjunto

6
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
se observa su distribución en la recta real no es uniforme, cerca al origen hay
mayor densidad y los números mayores que 3 no pueden ser dominados por
esta “mini2 -máquina”. Si en algún proceso de cálculo se sobrepasa este valor
máximo xmax , se produce un error conocido con el nombre de overflow y el
proceso se detiene. Los números reales x : 18 < x < 3 que no pertenecen a M+
se aproximan al siguiente número (a la derecha) de máquina más cercano. Por
ejemplo, 2.6 −→ 3. De igual manera los números negativos entre -3 y − 81 que
no estan en la máquina se aproximan al anterior número (a la izquierda) de
M : −0.7 → −0.75 = −3 4 . Los números reales que se encuentran en el intervalo
( −1 ,
8 8
1
) son reemplazados por cero, por ejemplo 0.12 → 0, pero la máquina
no detiene el proceso de cálculo cuando hace estos “arrastres”. En este caso
hablamos de underflow.(Mantilla)

Ejercicios

Sea M = M(2, 3, −3, 4)


7. Construya explicitamente la máquina correspondiente
8. Identifique el xmin y el xmax de la máquina
9. Determine el intervalo de números reales que es reemplazado por cero
10. Determine el subconjunto de números reales para el cual se produce over-
flow
11. ¿el número real 2.6 es aproximado a qué número de la máquina?
12. ¿el número real -0.9 es aproximado a qué número de la máquina?

7
3 Bibliografı́a
Mantilla Ignacio, Análisis Numérico, Universidad Nacional de Colombia

Burden Richard, Análisis Numérico, Thomson.

You might also like