Sei sulla pagina 1di 11

Programacin y Mtodos Numricos

Errores de redondeo

Carlos Conde, Arturo Hidalgo y Alfredo Lpez


ETSI Minas de la Universidad Politcnica de Madrid

EJERCICIOS RESUELTOS SOBRE ERRORES DE REDONDEO


1) Considrese un nmero estrictamente positivo del sistema de
nmeros mquina F(s+1, m, M, 10). Supongamos que tal nmero es:
z = 0.d1d2.....ds10e
Responde justificadamente a las siguientes cuestiones:
a) Cul es la distancia entre el nmero mquina z y el nmero z?.
b) Cul es la distancia entre el nmero z y el nmero mquina ms
pequeo que sea superior al que es inmediatamente superior al
inmediatamente superior a z?
?
z

Solucin:
a) La distancia pedida ser z (-z) = 2z = 2(0.d1d2....ds)10e.
b) Siendo w el nmero mquina inmediatamente superior al que es
inmediatamente superior al inmediatamente superior a z, suponiendo que los
exponentes de z y de w sean el mismo, se tiene que:
w = 0.d1d2....ds-1ds10e + 0.00...0310e
Por tanto, en ese caso w z = 310e-s. Obsrvese que para que el exponente
de w y de z sean el mismo la mantisa de z debe ser inferior a 0.99...97.
En el caso en que z sea un nmero de la forma z = 0.99....9710e =
99....97 10e-s el nmero mquina siguiente sera z1 = 0.99....9810e =
99...9810e-s , el siguiente a l z2 = 0.99...9910e = 99...9910e-s y el nmero
mquina siguiente a z2 ser w= 0.10...0010e+1 = 100....0010e-s. Por tanto en
este caso tambin la distancia pedida es w z = 310e-s
En el caso en que z sea un nmero de la forma z = 0.99....9810e =
99....98 10e-s el nmero mquina siguiente sera z1 = 0.99....9910e =
99...9910e-s , el siguiente a l z2 = 0.10...0010e+1 = 100...010e-s y el nmero
mquina siguiente a z2 ser w= 0.10...0110e+1 = 100....1010e-s. Por tanto en
este caso la distancia pedida es w z = (100...10 99...98)10e-s = 1210e-s.
1

Programacin y Mtodos Numricos


Errores de redondeo

Carlos Conde, Arturo Hidalgo y Alfredo Lpez


ETSI Minas de la Universidad Politcnica de Madrid

Y , finalmente, en el caso en que z sea un nmero de la forma


z = 0.99....9910e = 99....99 10e-s el nmero mquina siguiente es z1 =
0.10...0010e+1 = 100...010e-s, el siguiente a l z2 = 0.10...0110e+1 =
100....1010e-s y el nmero mquina siguiente a z2 es w= 0.10...0210e+1 =
100....2010e-s. Por tanto en este caso la distancia pedida resulta ser:
w z = (100...20 99...99)10e-s = 2110e-s.
En resumen, la distancia pedida es:

310e- s

1210e- s

e- s
2110

" z / 0.10...0010e z 0.99....9710e


Si
Si

z = 0.99....9810e
z = 0.99....9910e

2) Si se utiliza la estrategia de redondeo, cul es el nmero mquina del


sistema F(4, -10, 10, 10) que se obtiene como potencia cuarta del nmero
mquina que aproxima al nmero p ?. Y cual sera el nmero mquina
que aproximara a p 4 ?.
Solucin:
En el sistema F(4, -10, 10, 10) el nmero p = 3.141592... es redondeado por el
nmero mquina: z = 0.314101. Se tiene entonces que el nmero real:
z2 = zz = 0.09859..102
es aproximado por el nmero mquina: w = 0.986101. A su vez el nmero real
w2 (que aproximara z4) es:
w2 = ww = 0.97219..102
que se aproximara redondeando por el nmero mquina: v = 0.972102.
El nmero real p 4 es: p 4 = 97.40909.... y se aproximara mediante redondeo
por el nmero mquina q = 0.974102. El error cometido al operar de una u otra
forma es por ello: 0.002102 = 0.2.

Programacin y Mtodos Numricos


Errores de redondeo

Carlos Conde, Arturo Hidalgo y Alfredo Lpez


ETSI Minas de la Universidad Politcnica de Madrid

3) Cuntos nmeros mquina del sistema F(4, -10, 10, 10) son
estrictamente mayores que 103 y estrictamente inferiores que 1237?.
Solucin:
El nmero 103 en el sistema de nmeros mquina se representa por: z =
0.103103. Estrictamente mayores que l pero con el mismo exponente
existirn los nmeros mquina 0.104103, 0.105103, 0.106103, ....., 0.999103.
Es decir 896 nmeros.
Por otra parte el nmero mquina que aproxima a 1237 ser 0.123104 (si se
acta por truncado) o 0.124104 si se procede mediante redondeo. En todo
caso el mayor nmero mquina estrictamente inferior a 1237 es 0.123104. Con
exponente igual a 4 y que sean menores o iguales que 0.123104 se tienen los
nmeros mquina 0.100104, 0.101104 , 0.102104 , ...., 0.122104 y 0.123104.
Es decir 24 nmeros mquina.
En resumen se tienen 896 + 24 = 920 nmeros mquina del sistema F(4, -10,
10, 10) estrictamente superiores a 103 y estrictamente inferiores a 1237.
4) Cuantos nmeros mquina del sistema F(5, -10, 10, 10) son
estrictamente mayores que 23 y menores que 8429?.
Solucin:
El nmero real 23 se representa en el sistema F(5, -10, 10, 10) por el nmero
mquina z = -0.2300102. Sern mayores que l todos aquellos nmeros
mquina negativos con exponente igual a 2 en los que, independientemente del
valor de sus dos ltimos dgitos decimales de la mantisa, el primer dgito sea un
2 y el segundo un 0, un 1 o un 2 (es decir 10103 = 300 nmeros) o en los que
sus tres ltimos dgitos decimales tomen el valor que sea y el primer dgito sea
igual a 1 (es decir 101010 = 1000 nmeros).
Asimismo sern superiores a 23 todos aquellos nmeros mquina negativos
con exponentes inferiores a 2, es decir con exponentes 1, 0, -1, -2, ..., -10. Ello
proporciona otros 129101010 = 108000 nmeros mquina adicionales.

Programacin y Mtodos Numricos


Errores de redondeo

Carlos Conde, Arturo Hidalgo y Alfredo Lpez


ETSI Minas de la Universidad Politcnica de Madrid

En resumen, en el sistema F(5, -10, 10, 10) habr 109300 nmeros mquina
negativos estrictamente superiores a 23.
A ellos debe aadirse el nmero 0 y los nmeros positivos estrictamente
inferiores a 8429 = 0.8429104. Estos sern:

Todos aquellos nmeros en los que los dgitos de la mantisa tomen


cualquier valor permitido y su exponente sea inferior a 4, es decir :
149101010= 126000 nmeros mquina
Todos aquellos nmeros mquina con exponente igual a 4 en los que el
primer dgito de la mantisa sea 1, 2, 3, 4, 5, 6 7 y los otros tres dgitos

tomen cualquier valor, es decir:


7101010 = 7000 nmeros mquina
Todos aquellos nmeros mquina con exponente igual a 4 en los que el

primer dgito de la mantisa sea 8, el segundo 0, 1, 2 3 y los otros dos


dgitos tomen cualquier valor, es decir:
41010 = 400 nmeros mquina
Todos aquellos nmeros mquina con exponente igual a 4 en los que el

primer dgito de la mantisa sea 8, el segundo sea 4, el tercero sea 0 1


y el cuarto dgito tomen cualquier valor, es decir:
210 = 20 nmeros mquina
Todos aquellos nmeros mquina con exponente igual a 4 en los que el
primer dgito de la mantisa sea 8, el segundo sea 4, el tercero sea 2 y
el cuarto dgito tome valor 0, 1, 2, 3, 4, 5, 6, 7 8, es decir:
9 nmeros mquina

En resumen hay (126000 + 7000 + 400 + 20 + 9) = 133429 nmeros mquina


positivos estrictamente inferiores a 8429.
Contabilizando todos los nmeros mquina (los 109300 negativos, ms los
133429 positivos, ms el nulo) puede concluirse que en el sistema F(5, -10, 10,
10) existirn 242730 nmeros mquina mayores que 23 e inferiores a 8429.

Programacin y Mtodos Numricos


Errores de redondeo

Carlos Conde, Arturo Hidalgo y Alfredo Lpez


ETSI Minas de la Universidad Politcnica de Madrid

5) El ltimo equipo informtico lanzado por la empresa PowerfullBit


trabaja con nmeros binarios y utiliza la tcnica de redondeo para
aproximar los nmeros reales. El comercial de la empresa, Ido Ntknow,
asegura que la mquina dedica 5 bits para almacenar los exponentes
(siendo el primero de ellos para el signo). Adems sabe que entre los bits
de la mantisa el primero se destina a almacenar el signo y, en un
catlogo, encontr que la unidad de redondeo de la mquina tiene el valor
u = 0.001953125. Pero Ido Ntknow no sabe cual es el nmero de overflow
de la mquina que tiene que vender. Indcale entre las opciones
siguientes cul es dicho nmero de overflow si este se expresa en base
10:
a) Noverflow = 65408
b) Noverflow = 65472
c) Noverflow = 65409
d) Noverflow = 65504
Solucin:
La unidad de redondeo de un sistema de nmeros mquina con (s+1) bits para la
mantisa (el primero para el signo y s bits para los dgitos decimales de la mantisa) que
trabaje mediante la tcnica de aproximacin de redondeo est dada por la expresin:
u = 2-(s+1)
por lo que si u = 0.001953125 se tiene que:
0.001953125 = 2-(s+1)

s = -1 -

ln(0.001953125)
=8
ln(2)

Por tanto el sistema de nmeros mquina utilizado emplea 8 bits para los decimales de
la mantisa.
Por otra parte, el mayor exponente que puede utilizarse en este sistema de nmeros
mquina ser, en binario, el nmero:
que, en base 10, es:

M2 = + 1111
M = 23 + 22 + 21 + 20 = 24 1 = 15

Por tanto el mayor nmero mquina tendr el valor:


N = (1.11111111)2 215 =

Programacin y Mtodos Numricos


Errores de redondeo

Carlos Conde, Arturo Hidalgo y Alfredo Lpez


ETSI Minas de la Universidad Politcnica de Madrid

= (20 + 2-1 + 2-2 + 2-3 + 2-4 + 2-5 + 2-6 + 2-7 + 2-8 ) 215 =
= (28 + 27 + 26 + 25 + 24 + 23 + 22 + 21 + 20 ) 27 =
= (29 1) 27 = 65408
El nmero de overflow ser el primer nmero positivo que no puede ser aproximado por
este nmero mquina N. Como se est actuando mediante la tcnica de redondeo tal
nmero ser:
Noverflow = (1.111111111)2 215 =
= (20 + 2-1 + 2-2 + 2-3 + 2-4 + 2-5 + 2-6 + 2-7 + 2-8 + 2-9 ) 215 =
= (29 + 28 + 27 + 26 + 25 + 24 + 23 + 22 + 21 + 20 ) 26 =
= (210 1) 26 = 65472

6) Se quiere calcular una sucesin de nmeros que responde a la


siguiente expresin:
(i + 1)
xi = 1 + (-1)i
xi-1 (i = 2, 3, ..)
x1 = a ,
i
El clculo se programa en una mquina en la que el valor de la constante
se evala con un error por lo que se calculan en realidad los nmeros:
(i + 1)
y1 = - ,
yi = 1 + (-1)i
yi-1 (i = 2, 3, ..)
i
Obtn la expresin de |xn yn| siendo n un elemento genrico de la
sucesin.
Solucin:
La relacin entre los primeros elementos de la sucesin es:
x1 = y1 +

3
3
3
x1 = 1 + ( y1 + ) = y2 + .
2
2
2
4
4
3
x3 = 1 + (-1)3 x2 = 1 - ( y2 + ) = y3 - 2
3
3
2
5
5
5
x4 = 1 + (-1)4 x3 = 1 + ( y3 - 2) = y4 -
4
4
2
6
6
5
x5 = 1 + (-1)5 x4 = 1 - ( y4 - ) = y5 + 3
5
5
2

x2 = 1 + (-1)2

............
6

Programacin y Mtodos Numricos


Errores de redondeo

Carlos Conde, Arturo Hidalgo y Alfredo Lpez


ETSI Minas de la Universidad Politcnica de Madrid

Los clculos anteriores parecen indicar que el valor absoluto del error absoluto responde
a la expresin:
i +1
xi yi =

2
Ms concretamente, si se observa que el signo del error absoluto cambia cada dos
elementos se podra escribir que el error absoluto parece comportarse segn la
siguiente ley:
x 2i1 y 2i1 = ( 1)(i+1) i
2i + 1 (i = 1,2,3,....)
x 2i y 2i = ( 1)(i+1)

Verifiquemos que efectivamente el error responde a esta expresin. Para ello


procederemos por induccin admitiendo que para un valor del subndice impar, el valor
(2i-1) se verifica que:
x 2i1 y 2i1 = ( 1)(i+1) i
Se tendr entonces que:
x2i = 1 + (-1)2i

2i + 1
2i + 1
x2i-1 = 1 +
(y2i-1 +(-1)(i+1) i) =
2i
2i

= y2i + (-1)(i+1)

(2i + 1)i
(2i + 1)
= y2i +(-1)(i+1)

2i
2

por lo que:
x 2i y 2i = ( 1)(i+1)

2i + 1

Supongamos entonces que para un determinado ndice par, 2i, se verifica que:
x 2i y 2i = ( 1)(i+1)

Se tendr entonces que:


x2i+1 = 1 + (-1)(2i+1)

2i + 1

2i + 2
2i + 2
2i + 1
x2i = 1 (y2i +(-1)(i+1)
) =
2i + 1
2i + 1
2

(2i + 2)(2i + 1)
= y2i+1 +(-1)(i+2)(i+1) =
(2i + 1)2
por lo que si consideramos que 2i+1 = 2(i+1) 1 podemos escribir que:

= y2i+1 +(-1)(i+2)

x2(i+1)-1 = y2(i+1)-1 + (-1)((i+1)+1)(i+1)


que responde a la expresin general antes encontrada (sustituyendo i por i+1).

Programacin y Mtodos Numricos


Errores de redondeo

Carlos Conde, Arturo Hidalgo y Alfredo Lpez


ETSI Minas de la Universidad Politcnica de Madrid

7. Razona la veracidad o falsedad de las siguientes afirmaciones:


a) Todos los nmeros reales que expresados en base 10 tengan
un nmero finito de decimales significativos, al expresarlos
en base 2 o bien tienen un nmero finito de decimales
significativos o bien sus cifras decimales son peridicas a
partir de algn decimal.
b) El error de prdida de significado tiene menos importancia
cuando se opera con nmeros de gran valor absoluto,
aunque tengan rdenes de magnitud muy diferente, que
cuando se trabaja con nmeros pequeos.
c) La unidad de redondeo de un sistema de nmeros
mquina F(s, m, M, 2) determina el mayor error relativo que
se comete al codificar cualquier nmero en dicho sistema.
Por ello, el error relativo en el resultado una operacin
aritmtica elemental (suma, resta , producto o divisin) entre
dos nmeros mquina de dicho sistema siempre ser inferior
o igual al doble de la unidad de redondeo.
No se considerarn correctas aquellas respuestas que no estn
debidamente justificadas.
Solucin:
a) Sea (a)10 un nmero expresado en base 10 que tenga un nmero finito de decimales.
Su expresin en base 2, que representaremos por (a)2, tendr como parte entera la
expresin en base 2 de la parte entera de (a)10 y la parte decimal de (a)2 se obtendr
expresando en binario la parte decimal de (a)10. La parte entera de (a)10 se expresa en
binario dividindola sucesivamente por 2 y atendiendo al resto de cada una de dichas
divisiones (vanse los apuntes de la asignatura para mayor detalle). En todo caso el
nmero de dgitos significativos de la parte entera ser nsiendo 2n la menor potencia
positiva que es estrictamente mayor que (a)10. Por tanto para analizar si la parte decimal
de (a)2 tiene un nmero finito de decimales o si hay alguna periodicidad en estos bastar
con analizar cmo se expresa en binario la parte decimal de (a)10.
Para ello denotemos por 0.d1d2d3...dm a la expresin de la parte decimal de (a)10 en la
que suponemos que slo hay m decimales significativos (por ir ilustrando cuanto se
diga con un ejemplo imaginemos que esta parte decimal fuese 0.627 habiendo 3

Programacin y Mtodos Numricos


Errores de redondeo

Carlos Conde, Arturo Hidalgo y Alfredo Lpez


ETSI Minas de la Universidad Politcnica de Madrid

decimales significativos). La expresin binaria de esta parte decimal ser


0.b1b2b3.....bs...... El valor del dgito binario b1 se corresponder con la parte entera de 2.
( 0.d1d2d3...dm) y la parte decimal del nmero obtenido se guardar para el clculo de b2.
(En el caso del nmero tomado como ejemplo se tendr que 2.(0.627) = 1.254 por lo
que b1 el primer dgito binario de la parte decimal de (a)2 ser 1 y utilizaremos el
nmero 0.254 para determinar posteriormente b2). En todo caso el nmero resultante
para poder calcular a partir de l el dgito b2 tendr a lo sumo m decimales
significativos. Denotemos este nmero como 0.d1' d '2 .d 3' ....d 'm (en el ejemplo 0.254).
Si fuesen nulos todos los dgitos de este nuevo nmero decimal ya no habra ms
decimales significativos en la parte decimal de (a)2. Si no fuesen todos nulos, el dgito
b2 se determinar como la parte entera del nmero que se obtiene realizando la
operacin 2.( 0.d1' d '2 .d 3' ....d 'm ) mientras que la parte decimal del nmero as obtenido se
reservar para el clculo de b3. (En el ejemplo, 2.(0.254) = 0.508 siendo b2 = 0 y
reservando el nmero 0.508 para el clculo posterior de b3). Observemos que la parte
decimal as obtenida tendr, a lo sumo, m dgitos decimales significativos. Denotemos
(2)
(2)
por 0.d1(2) d (2)
(en el ejemplo 0.508).
2 .d 3 ....d m
(2)
(2)
Si fuesen nulos todos los dgitos de este nuevo nmero decimal 0.d1(2) d (2)
2 .d 3 ....d m ya

no habra ms decimales significativos en la expresin de (a)2. Si no lo fuesen se


volvera a repetir el proceso para determinar b3.
Un paso genrico de este proceso, el que conduce a la determinacin de bi+1, partir de
(i)
(i)
un nmero decimal de la forma 0.d1(i) d (i)
2 .d 3 ....d m y consistir en denotar por bi+1 a la
(i)
(i)
parte entera del nmero 2.( 0.d1(i) d (i)
2 .d 3 ....d m ), reservando la parte decimal del valor as

obtenido, 0.d1(i +1) d (i2 +1) .d 3(i +1) ....d (im+1) para el clculo de posteriores dgitos binarios. Si

0.d1(i +1) d (i2 +1) .d 3(i +1) ....d (im+1) tuviera sus m decimales iguales a 0 ya no habra ms decimales
significativos en la parte decimal de (a)2. Y si no fuesen nulos se continuara el proceso.
Pero m dgitos decimales se pueden combinar slo de 10m formas distintas (en el
ejemplo, con 3 decimales slo podemos formar 1000 nmeros diferentes 0.000, 0.001,
0.002, ...., 0.998, 0.999- ). Por tanto, antes o despus uno de los nmeros
) (k )
(k )
0.d1(k ) d (k
2 .d 3 ....d m que se obtengan o bien ser nulo o bien coincidir con otro nmero
(i)
(i)
0.d1(i) d (i)
2 .d 3 ....d m previamente calculado. En el primer caso (a)2 tendr un nmero finito

(k) decimales. En el segundo caso la expresin de la parte decimal de (a)2 tendr una
periodicidad a partir del i-simo dgito (repitindose peridicamente los dgitos
bibi+1...bk).

Programacin y Mtodos Numricos


Errores de redondeo

Carlos Conde, Arturo Hidalgo y Alfredo Lpez


ETSI Minas de la Universidad Politcnica de Madrid

En resumen, la afirmacin realizada es verdadera.


b) Al sumar dos nmeros en un ordenador los exponentes de ambos deben igualarse.
As si, trabajando en base 10, el exponente del sumando con mayor valor absoluto es
10A y el del sumando de menor valor absoluto fuese 10a, este ltimo ver su mantisa
multiplicada por 10a-A para que su exponente sea tambin 10A. Ello equivale a introducir
(a A) decimales nulos antes del primer dgito significativo de la mantisa del sumando
con menor valor absoluto. Y como en el valor de la suma resultante slo se conservarn
un nmero finito de dgitos de la mantisa, eso es lo mismo que decir que se pierden los
(A-a) ltimos dgitos de la mantisa del sumando de menor valor absoluto. Este error, la
prdida de significado de los (A-a) ltimos decimales del sumando de menor valor
absoluto, es el que se conoce con el nombre de error de prdida de significado, y es
mayor cuanto mayor sea la diferencia entre los exponentes A y a, siendo el valor (A-a)
lo nico que le influye. Por tanto la afirmacin que se realiza en el enunciado no es
correcta.
c) La primera parte de la afirmacin es correcta pues la unidad de redondeo, por
definicin, representa el mayor error relativo que se comete al aproximar un nmero por
un nmero mquina.
La segunda parte de la afirmacin tambin es correcta (siempre que el nmero
resultante de la operacin realizada pueda ser aproximado por alguno de los nmeros
que forman parte del sistema de nmeros mquina que se considere). En ese caso, la
multiplicacin o divisin de nmeros mquina (que por ser nmeros mquina se
codifican sin error) sera igual a un nmero real que al ser aproximado por un nmero
mquina se vera afectado por un error relativo acotado por la unidad de redondeo. Y en
la suma o resta de dos nmeros mquina el valor resultante slo se vera afectado por el
error de prdida de significado del menor de ellos que tambin ser inferior a la unidad
de redondeo. Luego en ese caso la afirmacin es cierta (y aun podra rebajarse la cota
del error relativo en el resultado de la operacin pues esta podra ser slo la unidad de
redondeo en lugar del doble de esta como se dice en el enunciado).
NOTA:
La nica situacin en la que la afirmacin podra ser considerada como incorrecta es
aquella en la que el resultado de la operacin es un nmero mquina que supere, en
valor absoluto, el nmero de overflow. Si por ejemplo denotamos por A al mayor de
los nmeros mquina y por a al nmero mquina de menor valor absoluto, el cociente
entre ambos nos conducira a un nmero que no puede ser aproximado por ninguno de

10

Programacin y Mtodos Numricos


Errores de redondeo

Carlos Conde, Arturo Hidalgo y Alfredo Lpez


ETSI Minas de la Universidad Politcnica de Madrid

los nmeros mquina del sistema. Como en dicho caso no tiene mayor sentido hablar de
error de redondeo en la operacin pues la operacin no puede ser realizada, puede
considerarse que la afirmacin es correcta.

11

Potrebbero piacerti anche