Вы находитесь на странице: 1из 10

Captulo 1

Nociones Bsicas Sobre Errores


En este primer captulo an no estudiaremos los mtodos numricos, sino que veremos al-
gunos conceptos bsicos y sealaremos algunos factores que intervendrn en la resolucin de
problemas mediante el computador.
Existen diversas fases cuando intentamos resolver un problema mediante mtodos numri-
cos, la siguiente gura esquematiza ese procedimiento.
Puede suceder que los resultados nales obtenidos no sean justamente los esperados, aunque
todas las fases hayan sido ejecutadas correctamente, los motivos pueden ser varios y los revi-
saremos a continuacin.
1.1. Factores que intervienen en la resolucin numrica
de problemas
La mayora de los mtodos numricos que veremos aqu tienen un carcter iterativo, esto
signica que iniciarn con una estimativa inicial de la solucin, digamos x
(0)
, para luego con-
truir una sucesin de valores

x
(0)
, x
(1)
, x
(2)
, ...

de modo que lm
k
x
(k)
= x

, donde x

es
la solucin. Por lo general, x
(k+1)
ser calculado a partir de x
(k)
mediante un procedimiento
debidamente fundamentado. Frecuentemente, este procedimiento requerir un gran nmero de
clculos, por lo que ser necesario el auxilio de un computador. Lamentablemente, los computa-
dores presentan algunos inconvenientes que, si no se controlan, pueden ocasionar respuestas
catastrcas.
Ejemplo 1.1 Considere el trecho de un programa en MatLab
1
, tal como se muestra en la
gura 1.1. Observe que en teora, debera cobrarse $1000000. Sin embargo, debido al error
1
MatLab 6.0 sobre la plataforma Windows XP.
1
CAPTULO 1. NOCIONES BSICAS SOBRE ERRORES 2
Figura 1.1: Un error numrico grave cometido por el computador.
cometido por el computador, se terminara pagando $2000000. (Vea tambin el ejemplo 1.3,
pg. 3)
Laboratorio 1.1 Haga un programa en algn lenguaje de programacin que usted conozca,
de modo que en la prctica corrobore el anterior ejemplo 1.1.
Al resolver un problema por mtodos numricos, los resultados obtenidos pueden depender
de:
1. La precisin de los datos de entrada
2. La forma cmo stos son representados en el computador
3. Las operaciones numricas efectuadas
Cada uno de estos temas sern explicados brevemente a continuacin.
1.1.1. Precisin de los datos de entrada
Cuando ingresamos los datos de un problema, ya sea para calcular en un papel o trabajar
en el computador, ellos contienen una imprecisin inherente, quiere decir que no hay cmo
evitarlos. El siguiente ejemplo aclara esta armacin.
Ejemplo 1.2 Sabemos que para calcular el rea de un crculo, tenemos que ingresar numri-
camente el radio r y el valor de . El valor de r quiz pueda ser conocido exactamente (r = 2),
pero apenas podemos conocer una aproximacin de con un nmero nito de dgitos. As,
aproximando el valor de por 3.14, el rea del crculo ser:
3.14 (2)
2
= 12.56 m
2
Si consideramos 3.1416, entonces el rea del crculo estar dada por:
3.1416 (2)
2
= 12.5664 m
2
CAPTULO 1. NOCIONES BSICAS SOBRE ERRORES 3
Pero si consideramos 3.141592654, entonces el rea ser
3.141592654 (2)
2
= 12.566370616 m
2
Claramente, las imprecisiones de los datos de entrada ocasionan imprecisiones en los resulta-
dos.
En el ejemplo anterior vimos que el mejor resultado se obtuvo en el ltimo caso. Pero,
cuando usamos un computador, cuntos dgitos decimales reconoce ste? Veamos el siguiente
ejemplo.
Ejemplo 1.3 Usando MatLab 6.0 en una PC de 32-bit con sistema operativo Windows XP,
hicimos la siguiente operacin:
0.00000000000001 + 1
y el resultado obtenido fue 1.0000000000001, lo cual es satisfactorio. Luego, hicimos:
0.000000000000001 + 1
y obtuvimos como respuesta 1. Qu sucedi?
El ejemplo anterior nos hace ver que en el primer caso, cuando se usan los 14 dgitos
decimales a la derecha del punto, el sistema de cmputo no comete error. Mientras que, si se
usan 15 dgitos, el sistema nos otorga una respuesta errada.
La razn se debe a que todo computador trabaja con un nmero nito y bien reducido
de dgitos, en nuestro caso 14 a la derecha del punto, si el nmero de dgitos sobrepasa lo
esperado, el sistema lo trunca o redondea, dependiendo del sistema utilizado.
Laboratorio 1.2 Utilice un paquete o lenguaje de programacin en un computador, para
corroborar los resultados obtenidos en el ejemplo 1.3.
1.1.2. Representacin de los datos en el computador
Un nmero con representacin decimal nita puede tener una representacin innita en el
sistema binario. Como un computador trabaja con el sistema binario y con una cantidad
ja de dgitos, necesariamente trabajar con una aproximacin, por lo tanto no se obtendrn
resultados nales exactos.
El sistema con el que trabajamos comunmente es el decimal, un nmero x en este sistema
lo representaremos algunas veces, cuando se preste a confusin, por (x)
10
. Por otro lado, el
sistema con el que trabaja un computador hoy en da es el binario, un nmero y en este sistema
ser representado por (y)
2
. As por ejemplo,
(5)
10
y (101)
2
representan el nmero 5 en el sistema decimal y binario, respectivamente. El siguiente ejemplo
muestra cmo esta representacin aparentemente inofensiva, puede generar terribles errores
cuando se trabaja en un computador.
CAPTULO 1. NOCIONES BSICAS SOBRE ERRORES 4
Ejemplo 1.4 Considere la siguiente sumatoria:
S =
30000
X
i=1
a
i
Para a
i
= 0.5, el resultado exacto debera ser
S = 0.5
30000
X
i=1
1 = 0.5 30000 = 15000
Despus de implementar un pequeo programa en computador, el resultado fue tambin 15000.
Claramente, no hay por qu preocuparse en este caso, los resultados son los mismos. Pero, para
a
i
= (0.11)
10
, el resultado exacto debera ser
S = (0.11)
10
30000 = 3300
Sin embargo, el resultado obtenido por el computador fue
S = 3300.00000000063
Cmo explicar la diferencia de resultados en este caso?
Esto se debe a que el nmero (0.11)
10
, cuya representacin en el sistema decimal es nita,
tiene una representacin binaria innita:

0.000111000010100011110101110000101000111101

2
Si el computador trabajara con 14 dgitos despus del punto, el nmero debera ser cortado o
redondeado, lo cual representa ya un error. Todos los clculos subsiguientes sern afectados
por este hecho.
Laboratorio 1.3 Utilizando algn lenguaje de programacin, haga un programa para ejecutar
lo tratado en el ejemplo 1.4.
Por lo general, el error ocurrido depende de la representacin de los nmeros en la mquina
utilizada. La representacin de un nmero depende de la base elegida o disponible en la
mquina en uso y del nmero mximo de dgitos usados en su representacin. Cualquier
clculo que envuelva nmeros que no pueden ser representados a travs de un nmero nito de
dgitos, no otorgar como resultado un valor exacto. Cuanto mayor sea el nmero de dgitos
utilizados, mayor ser la precisin obtenida.
Como vimos en el ejemplo 1.4, un nmero puede tener representacin nita con respecto a
una base, pero una representacin innita en otra base. La base decimal es la que empleamos
generalmente, pero antiguamente fueron empleadas otras bases, como la base 12 y la base 60.
Un computador opera normalmente en el sistema binario (base 2).
Observe lo que pasa cuando un usuario interacta con el computador: los datos de entrada
son enviados al computador por el usuario en el sistema decimal, esa informacin es convertida
al sistema binario por el computador, seguidamente todas las operaciones son realizadas en
ese sistema. Los resultados nales sern convertidos para el sistema decimal y, nalmente,
sern transmitidos hacia el usuario. Todo este proceso es una fuente de errores que afecta el
resultado nal de los clculos.
CAPTULO 1. NOCIONES BSICAS SOBRE ERRORES 5
1.1.3. Las operaciones numricas efectuadas
Pero errores no slo ocurren en la imprecisin de los datos de entrada y su representacin
binaria. Errores ocurren tambin en las operaciones numricas efectuadas por un sistema de
cmputo (binario).
Conversin de nmeros en los sistemas decimal y binario
Cualquier nmero entero en la base , de la forma (a
j
a
j1
, ...a
2
a
1
a
0
)

, donde 0 a
k
1
y k = 0, ..., j, puede ser escrito en la forma polinomial
a
j

j
+ a
j1

j1
+ ... + a
2

2
+ a
1

1
+ a
0

0
Mediante esa representacin, podemos convertir fcilmente un nmero entero representado en
el sistema binario para el sistema decimal, e inversamente. Por ejemplo: (10111)
2
puede ser
representado por
1 2
4
+ 0 2
3
+ 1 2
2
+ 1 2
1
+ 1 2
0
Reordenando y resaltando la base 10
(10111)
2
= 1 2
4
+ 0 2
3
+ 1 2
2
+ 1 2
1
+ 1 2
0
= 2

2
3
+ 2

+ 3 = 2 10
1
+ 3 10
0
= (23)
10
Laboratorio 1.4 En algn lenguaje de programacin, haga un programa tal que, dado un
nmero entero binario, retorne su equivalente decimal. E inversamente, dado un entero deci-
mal, otorgue su equivalente binario.
Cmo convertir un nmero fraccionario de representacin decimal a binario?
Consideremos ahora la conversin de un nmero fraccionario de base 10 para la base 2. Por
ejemplo, r = 1.25, s = 0.666..., t = 0.414213562..., etc.
Notemos que r tiene una representacin nita, pero s y t tienen representaciones innitas.
En trminos generales, dado un nmero entre 0 y 1 en el sistema decimal, cmo obtener su
representacin binaria?
Considerando el nmero decimal fraccionario r = 0.125, existen dgitos binarios
d
1
, d
2
, ..., d
j
, ...
tal que (0.d
1
d
2
...d
j
...)
2
ser su representacin binaria en la base 2. As,
(0.125)
10
= d
1
2
1
+ d
2
2
2
+ ... + d
j
2
j
+ ... (1.1)
Multiplicando cada trmino de la expresin (1.1) por 2, tendremos
2 0.125 = d
1
+ d
2
2
1
+ d
3
2
2
+ ... + d
j
2
j+1
+ ...
Por tanto, d
1
representa la parte entera de 2 0.125, que es igual a 0, mientras que
d
2
2
1
+ d
3
2
2
+ ... + d
j
2
j+1
+ ...
CAPTULO 1. NOCIONES BSICAS SOBRE ERRORES 6
representa la parte fraccionaria de 2 0.125, que es 0.250.
Aplicando ahora el mismo procedimiento para 0.250, tendremos
0.250 = d
2
2
1
+ d
3
2
2
+ ... + d
j
2
j+1
+ ...
2 0.250 = 0.5 = d
2
+ d
3
2
1
+ d
4
2
2
+ ... + d
j
2
j+2
+ ...
de donde d
2
= 0. Repitiendo el procedimiento para 0.5 tenemos
0.5 = d
3
2
1
+ d
4
2
2
+ ... + d
j
2
j+2
+ ...
2 0.5 = 1 = d
3
+ d
4
2
1
+ ... + d
j
2
j+3
+ ...
de donde d
3
= 1. Como la parte fraccionaria de 2 0.5 es cero, el proceso de conversin
termina. En resumen tenemos: d
1
= 0, d
2
= 0 y d
3
= 1. Por lo tanto, el nmero (0.125)
10
tiene representacin nita en la base 2:
(0.125)
10
= (0.001)
2
Laboratorio 1.5 Usando los procedimientos anteriores para convertir nmeros fraccionarios
decimales, a binarios, haga un programa usando algn lenguaje de programacin y verique
que:
1. El nmero (0.5)
10
tiene una representacin binaria nita (0.1)
2
2. El nmero (0.11)
10
tiene una representacin binaria innita

0.000111000010100011110101110000101000111101

2
3. Verique cuntos dgitos el computador est considerando.
El hecho de que un nmero no tenga representacin nita en el sistema binario, puede
ocasionar la ocurrencia de errores aparentemente inexplicables en los clculos efectuados en
sistemas computacionales binarios. Un computador que opera en el sistema binario, necesa-
riamente tendr que almacenar una aproximacin para (0.11)
10
, debido a que slo posee una
cantidad ja de posiciones para guardar los dgitos de la mantisa de un nmero. Al ser esta
aproximacin usada para realizar los clculos, no puede esperarse un resultado exacto.
Laboratorio 1.6 (Precisin de una mquina) La precisin de la mquina se dene como
el menor nmero > 0 en aritmtica de punto otante, tal que (1 +) > 1. Este nmero
depende totalmente del sistema de representacin de la mquina: base numrica, total de dgitos
en la mantisa, de la forma cmo son realizadas las operaciones y del compilador utilizado. Es
importante conocer la precisin de la mquina porque en varios algoritmos se requiere ingresar
como dato de entrada un valor positivo, prximo de cero, para que sea usado como criterio de
comparacin para la detencin del algoritmo. El siguiente algoritmo determina dicha precisin:
Paso 1: A 1, S 2
Paso 2: Mientras S > 1, hacer
A
A
2
S 1 + A
CAPTULO 1. NOCIONES BSICAS SOBRE ERRORES 7
Paso 3: Hacer prec = 2A e imprimir prec.
1. Haga un programa en algn lenguaje de programacin que ejecute el algoritmo anterior.
2. Discuta su signicado prctico.
Aritmtica de Punto Flotante
Cualquier computador o calculadora representa un nmero en un sistema denominado
aritmtica de punto otante. En este sistema, el nmero r ser representado en la forma:
(.d
1
d
2
...d
t
)
e
donde
: La base en que la mquina opera
t : El nmero de dgitos en la mantisa, 0 d
j
1, j = 1, ..., t, d
1
6= 0
e : El exponente en el intervalo [u, u],
el valor de u depende de la mquina con que se est trabajando
En una computadora, slo una pequea cantidad de nmeros son representados exacta-
mente, por lo general, la representacin ser realizada por medio de truncamiento o redondeo.
Ejemplo 1.5 Considere una mquina que opera en el sistema = 10, t = 3, e [5, +5].
Los nmeros no nulos representados en este sistema sern de la forma
(.d
1
d
2
d
3
) 10
e
, 0 d
j
9, d
1
6= 0, e [5, +5]
El menor nmero, no nulo y en valor absoluto, expresado en esta mquina ser:
m = 0.100 10
5
Mientras que el mayor nmero es:
M = 0.999 10
+5
Ahora, en esta misma mquina. consideremos el subconjunto de nmeros reales caracterizados
por:
G = {x R : m |x| M}
Pueden ocurrir varias cosas:
x G Por ejemplo, si x = 235.89 = 0.23589 10
+3
. Este nmero posee 5 dgitos en la
mantisa. Debido a que t = 3, este nmero no ser considerado de forma exacta en esta
mquina. Si la mquina usa truncamiento, entonces el nmero ser representado como
0.235 10
+3
. Pero si la mquina usa redondeo, entonces el nmero ser representado
por 0.236 10
+3
.
|x| < m Por ejemplo, si x = 0.345 10
7
. Este nmero no puede ser representado en esta
mquina porque el exponente e es menor que 5. La mquina en estas condiciones
retorna una advertencia de underow.
|x| > M Por ejemplo, x = 0.875 10
9
. En este caso, el exponente es mayor que 5 y la
mquina no lo puede representar, advierte la ocurrencia de overow.
CAPTULO 1. NOCIONES BSICAS SOBRE ERRORES 8
Algunos lenguajes de computador permiten que las variables sean declaradas en doble
precisin. En este caso, tal variable ser representada en el sistema de aritmtica de punto
otante de la mquina, pero con aproximadamente el doble de dgitos disponibles en la mantisa.
Debemos resaltar que en estas condiciones, el tiempo de ejecucin y requerimientos de memoria
aumentan considerablemente.
La adicin en aritmtica de punto otante requiere el alineamiento de los puntos decimales
de los dos nmeros. Para eso, la mantisa de menor exponente debe ser desplazada para la
derecha.
Ejemplo 1.6 Sumar
x = 0.937 10
4
y y = 0.1272 10
2
Alineando los puntos decimales, tenemos
x = 0.937 10
4
y y = 0.001272 10
4
Entonces,
x + y = (0.937 + 0.001272) 10
4
= 0.938272 10
4
El resultado almacenado despus del truncamiento ser 0.9382 10
4
. Mientras que despus
del redondeo ser 0.9383 10
4
.
El cero puede representarse con una mantisa nula y cualquier exponente. Por lo general, se
utiliza el menor exponente posible de la mquina. Caso contrario, si se usa cualquier exponente
para denotar el cero, se pueden perder dgitos signicativos, tal como muestra el siguiente
ejemplo.
Ejemplo 1.7 Supongamos que tenemos una mquina que opera con base 10 y 4 dgitos en la
mantisa. Si denotramos al cero por 0.0000 10
4
, al sumarlo al nmero y = 0.3134 10
2
:
0.0000 10
4
+ 0.3134 10
2
= 0.0000 10
4
+ 0.003134 10
4
= (0.0000 + 0.003134) 10
4
= 0.003134 10
4
El resultado despus del truncamiento sera 0.0031 10
4
= 0.3100 10
2
. Esto signica que
fueron perdidos 2 dgitos del valor exacto.
Ejemplo 1.8 Represente los siguientes nmeros en un sistema de aritmtica de punto otante
(con redondeo y con truncamiento) de 3 dgitos, cuando = 10, m = 10
4
y M = 10
+4
:
3.14 10.053 238.15 2.71828 0.000007 718235.82
Para el primer caso, con truncamiento nos resulta 0.314 10, mientras que con redondeo
0.314 10. Para el segundo caso, con trucamiento obtenemos 0.100 10
2
y con redondeo
0.100 10
2
. Y as sucesivamente:
0.238 10
3
0.238 10
3
0.271 10 0.272 10
underow underow
overow overow
Todo esto nos da una idea de los posibles errores que pueden suceder, ya sea por desco-
nocimiento nuestro o por la limitacin del computador, en el proceso de la resolucin numrica
de problemas. Debemos advertir que an es posible realizar un anlisis ms completo del
manejo de errores, pero eso lo veremos en otra ocasin.
CAPTULO 1. NOCIONES BSICAS SOBRE ERRORES 9
1.2. Errores Absolutos y Errores Relativos
Denimos el error absoluto como la diferencia entre el valor exacto de un nmero x y su valor
aproximado x:
EA
x
= x x (1.2)
Frecuentemente, slo nos interesa la magnitud de este error. As por ejemplo, si x = 12.60 y
x = 12.81, el error absoluto es EA
x
= 12.60 12.81 = 0.21. Mientras que la magnitud de
este error es |0.21| = 0.21.
Esta idea puede ser extendida para comparar la proximidad de vectores. Por ejemplo,
consideremos los vectores en R
3
dados por
x =

6.1
5.8
11.3

y x =

6.2
5.9
10.9

Entonces, usando la norma eucldea, la magnitud del error estara dada ahora por
kx xk =
q
(6.1 6.2)
2
+ (5.8 5.9)
2
+ (11.3 (10.9))
2
= 0.4243
No obstante, el error absoluto denido en (1.2) quiz no tenga inters prctico en este caso.
En general, apenas el valor de x es conocido, lo que hace imposible obtener el error absoluto
exacto. Lo que se puede hacer en ese caso es obtener una cota superior o una estimativa para
el mdulo del error absoluto, tal como muestra el siguiente ejemplo.
Ejemplo 1.9 Conocindose que h3.14, 3.15i, podemos tomar para x un valor dentro de
este intervalo y tendremos que:
|EA

| = | x| < 0.01
En este caso diremos que el error absoluto de x con respecto a , en mdulo, es menor que
0.01. Ms an, diremos que el nmero x est representado con presicin menor que 0.01.
Ejemplo 1.10 En la prctica, a veces no es recomendable controlar algunos procesos basados
en el error absoluto. Por ejemplo, si usted gana un premio de S/. 10000000, y cuando va a
recogerlo le dicen que slo tienen S/. 9999990, entonces a usted puede que no le importe la
diferencia, pues apenas hay un error absoluto de S/. 10. Pero qu pasa si usted gan S/. 20 de
premio, y cuando usted va a recogerlo le dicen que apenas tienen S/. 10, observe que el error
absoluto sigue siendo S/. 10, probablemente no le agrade nada esta ltima situacin, pues se
trata de la mitad del premio.
Para evitar situaciones como la anterior, en la prctica es mejor utilizar otro criterio para
medir el error, ste es conocido como error relativo.
El error relativo es denido como el valor absoluto dividido por el valor aproximado, es
decir:
ER
x
=
EA
x
x
=
x x
x
CAPTULO 1. NOCIONES BSICAS SOBRE ERRORES 10
Frecuentemente, tambin se suele trabajar con el mdulo de este valor. Observe que el error
relativo respecto al primer premio de S/.10000000 es
ER
10000000
=
10
9999990
0.000001
Mientras que el error relativo respecto al segundo premio es
ER
20
=
10
10
= 1
Con esto, digamos que el error absoluto mide el error con ms justicia, pues considera la
grandeza de las cantidades que se estn comparando.
Ejercicio 1.1 Convierta los siguientes nmeros decimales para su forma binaria: 26, 1278 y
0.1217.
Ejercicio 1.2 Convierta los siguientes nmeros binarios para su forma decimal: (101101)
2
,
(0.111111101)
2
y (0.1101)
2
.
Laboratorio 1.7 El siguiente algoritmo calcula de una forma aproximada la raz n-sima de
un nmero no negativo a.
Algoritmo Sean a, n y > 0, donde es una tolerancia para el error absoluto ( = 10
9
).
1. Hacer x = a
2. Mientras |x
n
a| >
Hacer
x = x
(x
n
a)
nx
n1
, x 6= 0
3. Retornar x, una aproximacin para
n

a
En algn lenguaje de programacin, haga un programa para ejecutar este algoritmo. Modique
el programa para que retorne tambin el nmero de pasos (iteraciones). Cmo utilizara el
error relativo para controlar el algoritmo?
Laboratorio 1.8 (Clculo de e
x
) En algn lenguaje de programacin, haga un programa
para calcular e
x
mediante la serie de Taylor con n trminos. El valor de x y el nmero de
trminos de la serie, n, deben ser dados en la entrada de su programa. Para valores negativos
de x, el programa debe calcular e
x
de dos formas: En una de ellas el valor de x es usado
directamente en la serie de Taylor y, en la otra forma, el valor usado en la serie ser y = x,
y en seguida, se calcula el valor de e
x
por medio de
1
e
x
.
1. Experimente su programa con varios valores de x (x prximo de cero y distante de cero)
y, para cada valor de x, experimente el clculo de la serie con varios valores de n. Analice
los resultados obtenidos.
2. (Dicultades con el clculo del factorial) El clculo de k! necesario en la serie de Taylor
puede ser hecho de modo a evitar la ocurrencia de overow. Para esto es necesario
analizar cuidadosamente el k-simo trmino,
x
k
k!
. Intente combinar el clculo del nume-
rador con el del denominador y realizar divisiones intermedias. Estudie una manera de
realizar esta operacin de modo que k! no se sobrecargue.
3. Con la modicacin del segundo tem, la serie de Taylor puede ser calculada con los
trminos que se desee. Cul sera el criterio para detener su programa e interrumpir el
clculo de la serie?