Preliminares Matem´
aticos
Universidad Antonio Nari˜
no
2
Aritm´
etica de una computadora
En nuestro mundo matem´atico tradicional permitimos la exitencia de n´umeros con una cantidad infinita de cifras, por ejemplo √3, sin embargo en las com-putadoras es imposible manejar una cantidad de informaci´on infinita. M´as a´un el resultado de multiplicar dos n´umeros con cuatro cifras decimales es en general un n´umero 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´olo utiliza n´umeros con una cantidad finita de cifras, de modo que los c´alculos se realizan unicamente con respresentaciones aproximadas de los n´umeros verdaderos. En una computadora com´un, solo se usa un subcon-junto relativamente peque˜no del sistema de n´umeros reales para representarlos a todos. Este subconjunto contiene s´olo algunos n´umeros racionales. Aunque los errores individuales debidos a esta causa sean peque˜nos, su efecto acumulativo puede en un gran n´umero de operaciones crecer rapidamente, y debemos tener en cuenta que actualmente las operaciones aritm´eticas, 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´erico, com´un en los computadores actuales: el sistema num´erico en base dos (desde luego, esto no impide que la comunicaci´on 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´etica con un n´umero finito de cifras.
2.1
N´
umeraci´
on binaria
El n´umero 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´on binaria o en base 2. As´ı, el n´umero 10110 escrito en base 2 o binaria equivale al siguiente n´umero en base 10 o decimal:
Cuando hay lugar a confusi´on se acostumbra escribir el n´umero de la base como sub´ındice del n´umero.
Podemos utilizar facilmente un algoritmo eficiente para hallar una representaci´on en base 2 de cualquier n´umero natural m. En efecto sim=b0·20+b1·21+b2·
22+. . .+bn·2n, entonces
m 2 =
b0
2 +b1·2 0+b
2·21+b3·22+. . .+bn·2n−1
| {z }
R0
= b0 2 +R0
luegom= 2R0+b0, es decir queb0 es el resto de divivirmentre 2 yR0 es el cociente.
De igual manera:
R0 2 =
b1
2 +b2·2 0+b
3·21+b4·22+. . .+bn·2n−2
| {z }
R1
entoncesR0= 2R1+b1 donde b1 es el resto de la divisi´on deR0 entre 2 yR1 es el cociente.
Si continuamos este proceso encontraremos todos losbk, 0≤k≤n.
Ejercicio resuelto 1.
Obtener, mediante el proceso indicado arriba, la representaci´on binaria del n´umero 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
1. Escriba (11001101)2 en base decimal
2. Obtener la representaci´on binaria del n´umero 5709
2.2
Fracciones binarias
El n´umero 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´on en base 2 de cualquier n´umero real. As´ı por ejemplo el n´umero 0.11 en base 2 equivale al siguiente n´umero 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´on decimal a la correspondiente fracci´on binaria es el siguiente:
Seax∈(0,1),x=c1·2−1+c2·2−2+c3·2−3+. . .+c
n·2−n
entonces
2x=c1+c2·2−1+c3·2−2+. . .+cn·2−n+1
| {z }
F1
Notese queF1∈(0,1), entoncesc1 es la parte entera de 2x, es decir: c1= [2x] yF1 es su parte fraccionaria.
2F1=c2+c3·2−1+. . .+cn·2−n+2
| {z }
F2
entoncesc2= [2F1]
Continuando con este proceso encontramos todos losck, 1≤k≤n
Ejercicio resuelto 2.
Escriba el n´umero decimalx= 0.6 como una fracci´on 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
..
Es evidente que a partir dec4 se repiten los siguientes cuatro valores: c5=c1, c6=c2, . . . , es decir que la trepresentaci´on binaria de xresulta peri´odica:
(0.6)10= (0.1001)2
En muchos casos la representaci´on binaria requiere de un n´umero infinito de cifras, aunque su correspondiente representaci´on 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+. . .
= 2−1
∞
X
k=0 2−4k+
∞
X
k=1 2−4k
= (2−1+ 1)
∞
X
k=0
2−4k−1
=3 2
1
1−2−4
−1
=3 5 = 0.6
Ejercicios
3. Escriba el n´umero decimalx= 0.8 como una fracci´on binaria.
4. Escriba (0.110)2 en base decimal
2.3
N´
umeros de m´
aquina
Cada n´umero real x puede ser representado en un sistema num´erico de base B∈Z+, en la forma:
x=±0.a1a2a3. . .·BL
Esta representaci´on se llama de punto flotante de x para la baseB. L se llama exponente ´o caracter´ıstica y la cadenaa1a2a3. . . se llama mantisa.
Six6= 0, a trav´es de cambios en el exponenteL puede lograrse siempre que la primera cifra de la mantisa no sea cero; as´ı por ejemplo, 0.0001·BL = 0.1·BL−3. De esta manera se obtiene una representaci´on de punto flotante normalizada. Una representaci´on en forma de punto flotante normalizada del n´umero π = 3.14159265. . .para la base 10 es: 0.314159265. . .·101
La representaci´on interna de n´umeros doble precisi´on, norma IEEE utiliza 64 bits:
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´umero representado en este sistema tiene al menos 16 cifras decimales de precisi´on. 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´on adecuada de los n´umeros con magnitud peque˜na. Para garantizar que estos n´umeros tambi´en 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 cifrask+ 1, k+ 2, . . ., dejando unicamente las primeras k cifras signicativas. El redondeo se obtiene sumando a la mantisa 0.5·10−ky en seguida se truncankcifras significativas.
Por ejemplo, consideremose= 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´on 2.3.1 (error relativo y absoluto) Si p∗ e una aproximaci´on de p, el error absoluto es|p−p∗| y el error relativo es |p−|pp|∗|, siempre quep6= 0.
Uno de los c´alculos m´as comunes que producen errores tiene que ver con la cancelaci´on de cifras significativa debido a la resta de n´umeros casi iguales:
Ejercicio resuelto 3.
Seanp= 0.54617 yq = 0.54601. Calcularp−q con una aritm´etica 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, tenemosp∗= 0.5462 yq∗= 0.5460, entonces r∗=p∗−q∗= 0.0002 es la aproximaci´on de cuatro cifras der. Como
|r−r∗| |r| =
|0.00016−0.0002|
0.00016 = 0.25
el resultado s´olo tiene una cifra significativa, en tanto que la precisi´on para p∗ yq∗ fue de cuatro y cinco cifras significativas, respectivamente.
Si se usa el truncamiento para obtener las cuatro ciras, las aproximaciones de cuatro cifras dep,q yr sonp∗ = 0.5461 q∗ = 0.5460 yr∗ = 0.0001. Con esto
se obtiene
|r−r∗| |r| =
|0.00016−0.0001|
lo que tambi´en produce s´olo una cifra de precisi´on
Si una representaci´on con un n´umero finito de cifras o un c´alculo introduce un error, ´este aumenta al dividir entre un n´umero con magnitud peque˜na.
Ejercicios
5. Evaluef(x) =x3−6.1x2+ 3.2x+ 1.5 en x= 4.71 con una aritm´etica de tres cifras. Determine el error absoluto y el error relativo
6. Utilice la f´ormula cuadratica para hallar las ra´ıces de la ecuaci´on x2+ 62.10x+ 1 con aritm´etica de redondeo a cuatro cifras. Determine el error relativo
Definici´on 2.3.2 (n´umeros de m´aquina) El conjunto M de los n´umeros
de la forma de punto flotante normalizada, que pueden ser representados en un computador, se llama conjuntos de n´umeros de m´aquina. 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}, siendok, K∈Z+. Explicitamente,
M=M(B.M,−k, K)
={0} ∪ {0.a1a2a3. . . aM ·BL:a1, a2, . . . , aM ∈ {0,1,2, . . . , B−1}, a16= 0
L∈ {−k,−k+ 1, . . . , K−1, K}}
Mantilla
El computador s´olo puede calcular con n´umeros de M y s´olo puede arrojar n´umeros deM. ´Esta es de entrada una gran limitaci´on y una enorme fuente de errores.
Ejercicio resuelto 4.
Construir explicitamente la m´aquina correspondiente aM(2,2,−2,2)
Teniendo en cuenta la definici´on anterior,
M={0} ∪ {±0.1a·2L:a∈ {0,1}, L∈ {−2,−1,0,1,2}}
El menor n´umero positivo deM(2,2,−2,2) es
xmin = 0.102·10−2= (1·2−1+ 0·2−2)·2−2= 1 8 y el mayor n´umero positivo de la m´aquina es
xmax= 0.112·22= (1·2−1+ 1·2−2)·22= 3
M+={ 1 8,
3 16,
1 4,
3 8,
1 2,
3 4,1,
3 2,2,3}
contiene todos los n´umeros positivos deM escritos en forma ascendente. Como se observa su distribuci´on en la recta real no es uniforme, cerca al origen hay mayor densidad y los n´umeros mayores que 3 no pueden ser dominados por esta “mini2-m´aquina”. Si en alg´un proceso de c´alculo se sobrepasa este valor m´aximo xmax, se produce un error conocido con el nombre de overflow y el
proceso se detiene. Los n´umeros realesx: 18 < x <3 que no pertenecen aM+ se aproximan al siguiente n´umero (a la derecha) de m´aquina m´as cercano. Por ejemplo, 2.6 −→3. De igual manera los n´umeros negativos entre -3 y −1
8 que no estan en la m´aquina se aproximan al anterior n´umero (a la izquierda) de M: −0.7→ −0.75 = −3
4 . Los n´umeros reales que se encuentran en el intervalo (−1
8 , 1
8) son reemplazados por cero, por ejemplo 0.12 → 0, pero la m´aquina no detiene el proceso de c´alculo cuando hace estos “arrastres”. En este caso hablamos de underflow.(Mantilla)
Ejercicios
SeaM=M(2,3,−3,4)
7. Construya explicitamente la m´aquina correspondiente
8. Identifique elxmin y elxmaxde la m´aquina
9. Determine el intervalo de n´umeros reales que es reemplazado por cero
10. Determine el subconjunto de n´umeros reales para el cual se produce over-flow
11. ¿el n´umero real 2.6 es aproximado a qu´e n´umero de la m´aquina?
3
Bibliograf´ıa
Mantilla Ignacio, An´alisis Num´erico, Universidad Nacional de Colombia