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

Introduccin a los errores numricos

Alix Lhritier Noviembre 2005


Resumen En este documento, introducimos los problemas que surgen al representar los nmeros reales mediante una cantidad nita de bits en las computadoras. En particular, mostramos cmo la representacin usada habitualmente (punto otante) y la manera de operar con dicha representacin introducen errores en los clculos. Tambin denimos una cantidad que permite caracterizar el nivel de precisin de una mquina dada y enunciamos reglas de propagacin de los errores al realizar las diferentes operaciones. Finalmente, mostramos algunos errores numricos comunes que ocurren al trabajar con la representacin de punto otante.

1.

Introduccin

Las matemticas se usan en una forma u otra en muchas reas de la ciencia y de la industria. Muchas veces, las aplicaciones llevan a problemas matemticos complejos que en su forma completa no pueden ser resueltos mediante frmulas exactas. Muchas veces, es posible restringirse a casos especiales o a modelos simplicados que pueden ser analizados y resueltos en forma exacta. Es comn reducir un problema no lineal a uno lineal (por ejemplo, una ecuacin diferencial lineal). Este tipo de enfoque puede ser muy efectivo, y lleva muy seguido a conceptos y puntos de vista que pueden ser usados, al menos en forma cualitativa, en el problema original. Pero algunas veces, esto no es suciente y es preferible atacar el problema original mediante una cantidad importante de clculo numrico, dependiendo del nivel de precisin requerido. Con el uso de las computadoras, las posibilidades de usar mtodos numricos han incrementando sin cesar en los ltimos aos. Ejemplos de problemas que pueden ser resueltos mediante mtodos numricos son: resolucin de sistemas de ecuaciones lineales y no lineales resolucin de ecuaciones diferenciales clculo de integrales etc. 1

Es importante, a la hora de disear o de usar un mtodo numrico para resolver determinado problema, tener presente los distintos tipos de errores que pueden ocurrir: simplicaciones en el modelo matemtico aproximacin del modelo matemtico: esto ocurre, por ejemplo, cuando un proceso de lmite se trunca como en el caso del clculo de una serie, en el cual hay que conformarse con sumar un cantidad nita de trminos. errores en los datos de entrada: estos pueden deberse a imprecisiones en aparatos de medida o al hecho de introducir valores en la mquina cuya precisin es limitada tal como veremos ms adelante. errores ocurridos durante los clculos Son estos dos ltimos tipos de errores los que vamos a estudiar en las secciones siguientes. Estos apuntes son prcticamente una adaptacin del fascculo Errores de [2]; el lector interesado podr consultar dicho material as como, por ejemplo, los materiales [3], [4] y [5] por mayor profundidad en los temas mencionados aqu.

2.

Representacin de punto otante

Las computadoras trabajan con una cantidad nita de bits para representar la informacin, lo cual implica que no se pueden representar innitos objetos. En particular, las computadoras no pueden representar todos los nmeros reales y habitualmente trabajan slo con un conjunto nito de nmeros racionales que, tpicamente, es de la forma: . F P = { 0.d1 d2 ...dt e : di N, 0 di < , d1 = 0, e Z, L e U, {1, 1}} y se denomina representacin de punto otante (oating point, FP). En palabras, es el signo del nmero, t es la cantidad de cifras en la mantisa, es la base (que comunmente es 2) y e es el exponente. Es de utilidad denir el conjunto: . F Pi = {x F P : exponente(x) = i} Generalmente, t, , L y U estn dados por la arquitectura interna de la mquina. Notamos que una particularidad de esta representacin es que no se puede representar el nmero 0. Ejemplo 1: Tomemos los valores t = 3, = 10, L = 10 y U = 10. Cmo se distribuyen los nmeros de F Pi sobre los reales? F P1 = {1, 1,01, 1,02, ..., 1,99, 2, 2,01, ..., 9, ..., 9,99}. Notamos que la separacin entre nmeros es de 102 y que en F P1 hay en total 900 nmeros. 2

F P2 = {10, 10,1, 10,2, ..., 19,9, 20, 20,1, ..., 90, ..., 99,9}. Anlogamente, notamos que la separacin entre nmeros es de 101 y hay la misma cantidad de nmeros que en el caso anterior. Generalizando el ejemplo anterior tenemos que, en F Pe , la cantidad de nmeros es ( 1) t1 y stos tienen una separacin de et . Sin embargo, notamos que la separacin relativa entre nmeros vara muy poco con e. Ejemplo 2: El estndar de IEEE [1] para representacin de punto otante usa una representacin similar a la detallada aqu, slo que permite, para la todos los exponentes, mantisas de la forma 1.d1 d2 ... di N, 0 di < y slo para el exponente ms chico permite adems mantisas de la forma 0.d1 d2 ... (en ambos casos d1 puede ser cero). Con este formato se permite la representacin exacta del cero y a la vez se pueden representar nmeros ms pequeos dado que no tenemos la restriccin d1 = 0. En el formato de simple precisin, los parmetros usados son = 2, L = 126, U = 127 y t = 23.

3.

Consecuencias de la representacin de punto otante

La representacin de punto otante denida en la seccin anterior trae como consecuencia la generacin de errores al representar nmeros reales y una propagacin de errores al efectuar operaciones con los nmeros representados en punto otante.

3.1.

Errores de representacin

Supongamos que queremos representar un nmero real dado, en un conjunto F P . Si el nmero no pertenece a F P , nos encontramos frente a las siguientes alternativas: truncar, es decir elegir x F P tal que x = mx{y F P, y x} a o redondear, es decir elegir x F P tal que minimice | x|. x Ejemplo 3 Supongamos que queremos representar el racional x = 2/3 con el conjunto F P del ejemplo 1, entonces tomaremos x = 0,667 si la mquina redondea y x = 0,666 si la mquina trunca. Si se dene el error absoluto como Ex = x x, es fcil de vericar que si se trabaja con base , con una mantisa de t nmeros y x F Pe entonces: |Ex | (1/2) et para una mquina que redondea |Ex | et para una mquina que trunca 3

3.2.

Denicin del de la mquina

Para la evaluacin de los errores que se producen al trabajar con punto otante, es de utilidad denir la siguiente cantidad, denominada de la mquina, que depende de la arquitectura de la misma (es decir, de los parmetros que se eligen para el conjunto F P y de si redondea o se trunca): MACH = m n{x : F P (1 + x) > 1} donde F P (x) denota el nmero perteneciente al conjunto F P elegido para representar el nmero real x. Usando las cotas de la seccin 3.1, podemos ver que: MACH = (1/2) 1t , si la mquina redondea 1t , si la mquina trunca

x Si denimos el error relativo al representar x como ex = x , entonces tenemos x que: x F P (x) |ex | = = |1 (1 + x )| = |x | MACH x Por lo tanto, vemos como MACH caracteriza el error relativo que se obtiene al representar nmeros en punto otante.

Para la representacin de punto otante de un determinado nmero real x vale que: F P (x) = x(1 + x ) con |x | MACH

3.3.

Propagacin de errores

Como, en general, el error ser consecuencia de un cmulo de errores ocurridos en pasos sucesivos, se debe estudiar la mecnica de propagacin de los mismos a lo largo del clculo. Enunciaremos sin demostracin1 las siguientes reglas de propagacin: 1. Si sumamos, dos nmeros x e y cuyo error absoluto est acotado por 1 y 2 respectivamente, entonces el error absoluto en la suma o en la resta est acotado por 1 + 2 . 2. En el producto y el cociente, una cota para el error relativo del resultado est dada por la suma de las cotas para los errores relativos de los operandos. Esto ltimo su cumple en forma aproximada y es ms exacto cuanto ms chicos sean los errores relativos de los operandos2 . 3. Si x e y pertenecen a F P , entonces F P (x op y) = (x op y)(1 + op ) donde op es una de las operaciones bsicas {+, , , /} y op MACH , suponiendo que el algoritmo de la mquina es equivalente a operar con ambos operandos sin prdida de precisin y luego buscar el nmero en F P ms cercano.
1 Las 2 Este

|r1 |

demostraciones estn en [3] resultado se basa en hacer la aproximacin r1 + r2 + r1 r2 r1 + r2 , suponiendo 1 y |r2 | 1

4.

Errores comunes al trabajar con nmeros en punto otante

A continuacin veremos algunos errores comunes que son consecuencia de las propiedades estudiadas en las secciones anteriores.

4.1.

Cancelacin catastrca

Se restan nmeros grandes pero relativamente parecidos, de tal forma que el resultado tiene un error relativo grande. Supongamos que queremos restar x e y. Necesariamente, restaremos las representaciones de x e y y por lo tanto podemos usar el resultado 3 de la seccin 3.3. Tenemos que: F P (F P (x) F P (y)) = F P (x(1 + x ) y(1 + y )) = (x(1 + x ) y(1 + y ))(1 + ) = ((x y) + (xx yy ))(1 + ) = (x y)(1 + ) + (xx yy )(1 + ) Por lo tanto, exy = (xx yy )(1 + ) F P (F P (x) F P (y)) (x y) =+ xy xy

Usando las cotas || MACH , |x | MACH y |y | MACH , y asumiendo, sin prdida de generalidad, x > y > 0, tenemos que: x MACH |1 + | xy Por lo tanto, vemos que el error relativo puede aumentar inadmisiblemente al disminuir x y. No hay una receta general para resolver este problema, la solucin debe buscarse caso a caso. Ejemplo 4: Supongamos que queremos calcular 118 117, en este caso 118117 podemos usar la conjugada, es decir, hacer 118 117 = 118+117 para de esta forma evitar restar nmeros tan cercanos y as obtener un mejor error relativo. |exy | || + 2 Este tipo de error ocurre tpicamente al calcular nmericamente derivadas usando el cociente incremental. Existen tcnicas (consultar los materiales de referencia) para mejorar los resultados en estos casos tambin.

4.2.

Shift out

El shift out 3 es un error que ocurre al sumar un nmero pequeo con uno grande, en trminos relativos. Sean x e y tales que x > y > 0, entonces
3 El nombre se debe al mtodo normalmente usado para sumar dos nmeros en punto otante. Se deben igualar los exponentes y correr los dgitos (en ingls, shift) de la mantisa en consecuencia. Al correr los dgitos, algunos o todos los dgitos diferentes de cero pueden quedar afuera de la mantisa, por lo tanto, quedando el nmero 0.

x + y = x(1 + y/x). Por lo tanto, si y/x < MACH ocurrir: F P (x + y) = F P (x) Ejemplo 5: Este error ocurre tpicamente al intentar realizar la suma i=i ai con ai 0, ai 0. Si sumamos hacia adelante en el ndice i, lo que va ocurrir rpidamente es que el valor acumulado hasta el momento va a ser muy grande comparado con el prximo trmino a sumar (ocurre shift out) y el algoritmo se va a estancar. En cambio si estimamos un lmite superior de la sumatoria N y sumamos hacia atrs, de esta forma podremos sumar ms trminos y alcanzar una mayor precisin. Existen otros mtodos para alcanzar mayor precisin en este problema, recomendamos al lector consultar el material de referencia.

5.

Conclusiones

Un mito comn es que las computadoras trabajan con tal grado de precisin que los usuarios no necesitan contemplar la posibilidad de resultados inexactos. Esto se ve reforzado cuando vemos en la pantalla los resultados con gran cantidad de cifras. En este documento, vimos las bases de por qu hay que tener cuidado al trabajar con nmeros representados en punto otante y, en particular, cuales son las posibles fuentes de error. Cmo lograr buenos resultados a pesar de estos problemas depender del problema a resolver. Existe mucha literatura que describe y estudia mtodos numricos para distintos problemas que son habituales. En particular, el lector interesado puede consultar el material de referencia.

Referencias
[1] IEEE Computer Society (1985), IEEE Standard for Binary Floating-Point Arithmetic, IEEE Std 754-1985. [2] Apuntes de Clculo Numrico. Ocina de Publicaciones del CEI. Facultad de Ingeniera de la Universidad de la Repblica O. del Uruguay. [3] G. Dahlquist and A. Bjorck, Numerical Methods, Prentice Hall, 1974. [4] D. Kahaner, C. Moler, and S. Nash, Numerical Methods and Software, Prentice-Hall, 1989. [5] K. Atkinson, An Introduction to Numerical Analysis, Wiley, (2nd ed.), 1989.