Computational error due to rounding numbers
En informática , un error de redondeo , [1] también llamado error de redondeo , [2] es la diferencia entre el resultado producido por un algoritmo dado usando aritmética exacta y el resultado producido por el mismo algoritmo usando aritmética redondeada de precisión finita . [3] Los errores de redondeo se deben a la inexactitud en la representación de números reales y las operaciones aritméticas realizadas con ellos. Esta es una forma de error de cuantificación . [4] Cuando se utilizan ecuaciones o algoritmos de aproximación, especialmente cuando se utilizan un número finito de dígitos para representar números reales (que en teoría tienen un número infinito de dígitos), uno de los objetivos del análisis numérico es estimar errores de cálculo. [5] Los errores de cálculo, también llamados errores numéricos , incluyen errores de truncamiento y errores de redondeo.
Cuando se realiza una secuencia de cálculos con una entrada que implica algún error de redondeo, los errores pueden acumularse, a veces dominando el cálculo. En problemas mal condicionados , pueden acumularse errores significativos. [6]
En resumen, hay dos facetas principales de los errores de redondeo implicados en los cálculos numéricos: [7]
- La capacidad de las computadoras para representar tanto la magnitud como la precisión de los números es inherentemente limitada.
- Ciertas manipulaciones numéricas son muy sensibles a los errores de redondeo. Esto puede deberse tanto a consideraciones matemáticas como a la forma en que las computadoras realizan operaciones aritméticas.
Error de representación
El error introducido al intentar representar un número utilizando una cadena finita de dígitos es una forma de error de redondeo llamado error de representación . [8] A continuación se muestran algunos ejemplos de error de representación en representaciones decimales:
Aumentar el número de dígitos permitidos en una representación reduce la magnitud de los posibles errores de redondeo, pero cualquier representación limitada a un número finito de dígitos seguirá causando cierto grado de error de redondeo para un número incontable de números reales. Los dígitos adicionales utilizados para los pasos intermedios de un cálculo se conocen como dígitos de guarda . [9]
Redondear varias veces puede provocar que se acumulen errores. [10] Por ejemplo, si 9,945309 se redondea a dos decimales (9,95) y luego se redondea nuevamente a un decimal (10,0), el error total es 0,054691. Redondear 9,945309 a un decimal (9,9) en un solo paso introduce menos error (0,045309). Esto puede ocurrir, por ejemplo, cuando el software realiza operaciones aritméticas en coma flotante de 80 bits x86 y luego redondea el resultado a coma flotante IEEE 754 binary64 .
Sistema de numeración de punto flotante
En comparación con el sistema de numeración de punto fijo , el sistema de numeración de punto flotante es más eficiente para representar números reales, por lo que se utiliza ampliamente en las computadoras modernas. Mientras que los números reales son infinitos y continuos, un sistema de numeración de punto flotante es finito y discreto. Por lo tanto, el error de representación, que conduce al error de redondeo, ocurre bajo el sistema de numeración de punto flotante.
Notación del sistema de numeración de punto flotante
Un sistema de numeración de punto flotante se caracteriza por números enteros:
- : base o radix
- :precisión
- : rango de exponentes, donde es el límite inferior y es el límite superior
Cualquiera tiene la siguiente forma:
donde es un entero tal que para , y es un entero tal que .
Sistema de números flotantes normalizado
- Un sistema de numeración de punto flotante está normalizado si el dígito inicial siempre es distinto de cero a menos que el número sea cero. [3] Dado que el mantis es , el mantis de un número distinto de cero en un sistema normalizado satisface . Por lo tanto, la forma normalizada de un número de punto flotante IEEE distinto de cero es donde . En binario, el dígito inicial es siempre por lo que no se escribe y se denomina bit implícito. Esto proporciona un bit adicional de precisión para que se reduzca el error de redondeo causado por el error de representación.
- Dado que el sistema de números de punto flotante es finito y discreto, no puede representar todos los números reales, lo que significa que los números reales infinitos solo pueden aproximarse mediante algunos números finitos a través de reglas de redondeo . La aproximación de punto flotante de un número real dado se puede denotar mediante .
- El número total de números de punto flotante normalizados es donde
- cuenta la elección del signo, ya sea positivo o negativo
- cuenta la elección del dígito principal
- cuenta los dígitos significativos restantes
- cuenta la elección de exponentes
- cuenta el caso cuando el número es .
Norma IEEE
En el estándar IEEE , la base es binaria, es decir , y se utiliza la normalización. El estándar IEEE almacena el signo, el exponente y la mantisa en campos separados de una palabra de punto flotante, cada uno de los cuales tiene un ancho fijo (número de bits). Los dos niveles de precisión más utilizados para los números de punto flotante son la precisión simple y la precisión doble.
Máquina épsilon
La máquina épsilon se puede utilizar para medir el nivel de error de redondeo en el sistema de numeración de punto flotante. A continuación se presentan dos definiciones diferentes. [3]
- La épsilon de la máquina, denotada por , es el error relativo absoluto máximo posible al representar un número real distinto de cero en un sistema numérico de punto flotante.
- La máquina épsilon, denotada por , es el número más pequeño tal que . Por lo tanto, siempre que .
Error de redondeo según diferentes reglas de redondeo
Existen dos reglas de redondeo comunes: redondeo por corte y redondeo al más cercano. El estándar IEEE utiliza el redondeo al más cercano.
- Redondeo por corte : la expansión de base de se trunca después del dígito -ésimo.
- Esta regla de redondeo es sesgada porque siempre mueve el resultado hacia cero.
- Redondeo al más cercano : se establece en el número de punto flotante más cercano a . Cuando hay un empate, se utiliza el número de punto flotante cuyo último dígito almacenado es par (además, el último dígito, en formato binario, es igual a 0).
- Para el estándar IEEE donde la base es , esto significa que cuando hay un empate se redondea para que el último dígito sea igual a .
- Esta regla de redondeo es más precisa pero computacionalmente más costosa.
- El redondeo de forma que el último dígito almacenado sea par cuando hay un empate garantiza que no se redondee hacia arriba o hacia abajo sistemáticamente. Esto tiene como objetivo evitar la posibilidad de una deriva lenta no deseada en cálculos largos debido simplemente a un redondeo sesgado.
- El siguiente ejemplo ilustra el nivel de error de redondeo bajo las dos reglas de redondeo. [3] La regla de redondeo, redondear al más cercano, conduce a un menor error de redondeo en general.
Cálculo del error de redondeo según el estándar IEEE
Supongamos el uso de redondeo al más cercano y doble precisión IEEE.
- Ejemplo: el número decimal se puede reorganizar en
Como el bit 53 a la derecha del punto binario es un 1 y va seguido de otros bits distintos de cero, la regla de redondeo al más cercano requiere redondear hacia arriba, es decir, sumar 1 bit al bit 52. Por lo tanto, la representación en punto flotante normalizada en el estándar IEEE 9.4 es
- Ahora se puede calcular el error de redondeo al representar con .
Esta representación se obtiene descartando la cola infinita
de la cola derecha y luego se agrega en el paso de redondeo.
- Entonces .
- Por lo tanto, el error de redondeo es .
Medición del error de redondeo mediante el uso de la máquina épsilon
La épsilon de máquina se puede utilizar para medir el nivel de error de redondeo cuando se utilizan las dos reglas de redondeo anteriores. A continuación se muestran las fórmulas y la prueba correspondiente. [3] Aquí se utiliza la primera definición de épsilon de máquina.
Teorema
- Ronda por ronda:
- Redondear al más cercano:
Prueba
Sea donde , y sea la representación en punto flotante de . Dado que se utiliza el método de redondeo por corte, es
Para determinar el máximo de esta cantidad, es necesario encontrar el máximo del numerador y el mínimo del denominador. Dado que (sistema normalizado), el valor mínimo del denominador es . El numerador está acotado por encima por . Por lo tanto, . Por lo tanto, para el método de redondeo por corte. La prueba para el método de redondeo al más cercano es similar.
- Tenga en cuenta que la primera definición de máquina épsilon no es exactamente equivalente a la segunda definición cuando se utiliza la regla de redondeo al más cercano, pero es equivalente para redondeo por corte.
Error de redondeo causado por aritmética de punto flotante
Incluso si algunos números pueden representarse exactamente mediante números de punto flotante y dichos números se denominan números de máquina , realizar operaciones aritméticas de punto flotante puede provocar un error de redondeo en el resultado final.
Suma
La suma automática consiste en alinear los puntos decimales de los dos números que se van a sumar, sumarlos y luego almacenar nuevamente el resultado como un número de punto flotante. La suma en sí se puede realizar con mayor precisión, pero el resultado debe redondearse a la precisión especificada, lo que puede generar un error de redondeo. [3]
- Por ejemplo, si se suma a en la precisión doble IEEE de la siguiente manera, Esto se guarda como ya que el redondeo al más cercano se utiliza en el estándar IEEE. Por lo tanto, es igual a en la precisión doble IEEE y el error de redondeo es .
Este ejemplo muestra que se puede producir un error de redondeo al sumar un número grande y uno pequeño. El desplazamiento de los puntos decimales en los significados para que coincidan los exponentes provoca la pérdida de algunos de los dígitos menos significativos. La pérdida de precisión puede describirse como absorción . [11]
Tenga en cuenta que la suma de dos números de punto flotante puede producir un error de redondeo cuando su suma es un orden de magnitud mayor que la del mayor de los dos.
- Por ejemplo, considere un sistema numérico de punto flotante normalizado con base y precisión . Entonces y . Tenga en cuenta que pero . Hay un error de redondeo de .
Este tipo de error puede ocurrir junto con un error de absorción en una sola operación.
Multiplicación
En general, el producto de dos mantisas de p dígitos contiene hasta 2p dígitos, por lo que el resultado podría no caber en la mantisa. [3] Por lo tanto, el resultado estará involucrado en un error de redondeo.
- Por ejemplo, considere un sistema numérico de punto flotante normalizado con la base y los dígitos significativos son como máximo . Entonces y . Tenga en cuenta que pero dado que hay como máximo dígitos significativos. El error de redondeo sería .
División
En general, el cociente de significandos de 2p dígitos puede contener más de p dígitos, por lo que habrá un error de redondeo en el resultado.
- Por ejemplo, si todavía se utiliza el sistema de numeración de punto flotante normalizado mencionado anteriormente, entonces pero . Por lo tanto, se corta la cola.
Sustracción
La absorción también se aplica a la sustracción.
- Por ejemplo, al restar de en la precisión doble IEEE de la siguiente manera, Esto se guarda como ya que el redondeo al más cercano se utiliza en el estándar IEEE. Por lo tanto, es igual a en la precisión doble IEEE y el error de redondeo es .
La resta de dos números casi iguales se llama cancelación sustractiva . [3]
Cuando se cancelan los dígitos iniciales, el resultado puede ser demasiado pequeño para ser representado con exactitud y simplemente se representará como .
- Por ejemplo, aquí se utiliza la segunda definición de máquina épsilon. ¿Cuál es la solución de ? Se sabe que y son números casi iguales, y . Sin embargo, en el sistema de numeración de punto flotante, . Aunque es fácilmente lo suficientemente grande como para ser representado, ambas instancias de se han redondeado dando .
Incluso con un valor algo mayor , el resultado sigue siendo significativamente poco confiable en casos típicos. No hay mucha confianza en la precisión del valor porque la mayor incertidumbre en cualquier número de punto flotante son los dígitos del extremo derecho.
- Por ejemplo, el resultado es claramente representable, pero no hay mucha confianza en él.
Esto está estrechamente relacionado con el fenómeno de la cancelación catastrófica , en el que se sabe que ambos números son aproximaciones.
Acumulación de error de redondeo
Los errores pueden magnificarse o acumularse cuando se aplica una secuencia de cálculos en una entrada inicial con error de redondeo debido a una representación inexacta.
Algoritmos inestables
Un algoritmo o proceso numérico se denomina estable si pequeños cambios en la entrada sólo producen pequeños cambios en la salida, e inestable si se producen grandes cambios en la salida. [12] Por ejemplo, el cálculo que se realiza utilizando el método "obvio" es inestable debido al gran error introducido al restar dos cantidades similares, mientras que la expresión equivalente es estable. [12]
Problemas mal condicionados
Incluso si se utiliza un algoritmo estable, la solución de un problema puede ser inexacta debido a la acumulación de error de redondeo cuando el problema en sí está mal condicionado .
El número de condición de un problema es la relación entre el cambio relativo en la solución y el cambio relativo en la entrada. [3] Un problema está bien condicionado si pequeños cambios relativos en la entrada dan como resultado pequeños cambios relativos en la solución. De lo contrario, el problema está mal condicionado . [3] En otras palabras, un problema está mal condicionado si su número de condiciones es "mucho mayor" que 1.
El número de condición se introduce como una medida de los errores de redondeo que pueden resultar al resolver problemas mal condicionados. [7]
Véase también
Referencias
- ^ Butt, Rizwan (2009), Introducción al análisis numérico con MATLAB, Jones & Bartlett Learning, págs. 11-18, ISBN 978-0-76377376-2
- ^ Ueberhuber, Christoph W. (1997), Computación numérica 1: métodos, software y análisis, Springer, págs. 139-146, ISBN 978-3-54062058-7
- ^ abcdefghij Forrester, Dick (2018). Métodos numéricos de Matemáticas/Comp241 (apuntes de clase) . Dickinson College .
- ^ Aksoy, Pelin; DeNardis, Laura (2007), Tecnología de la información en teoría, Cengage Learning, pág. 134, ISBN 978-1-42390140-2
- ^ Ralston, Anthony; Rabinowitz, Philip (2012), Un primer curso de análisis numérico, Dover Books on Mathematics (2.ª ed.), Courier Dover Publications, págs. 2-4, ISBN 978-0-48614029-2
- ^ Chapman, Stephen (2012), Programación MATLAB con aplicaciones para ingenieros, Cengage Learning, pág. 454, ISBN 978-1-28540279-6
- ^ ab Chapra, Steven (2012). Métodos numéricos aplicados con MATLAB para ingenieros y científicos (3.ª ed.). McGraw-Hill . ISBN 9780073401102.
- ^ Laplante, Philip A. (2000). Diccionario de informática, ingeniería y tecnología. CRC Press . pág. 420. ISBN. 978-0-84932691-2.
- ^ Higham, Nicholas John (2002). Precisión y estabilidad de algoritmos numéricos (2.ª ed.). Sociedad de Matemáticas Industriales y Aplicadas (SIAM). pp. 43–44. ISBN 978-0-89871521-7.
- ^ Volkov, EA (1990). Métodos numéricos. Taylor & Francis . pág. 24. ISBN. 978-1-56032011-1.
- ^ Biran, Adrian B.; Breiner, Moshe (2010). "5". Lo que todo ingeniero debería saber sobre MATLAB y Simulink . Boca Raton , Florida : CRC Press . págs. 193–194. ISBN 978-1-4398-1023-1.
- ^ ab Collins, Charles (2005). "Condición y estabilidad" (PDF) . Departamento de Matemáticas de la Universidad de Tennessee . Consultado el 28 de octubre de 2018 .
Lectura adicional
- Matt Parker (2021). Humble Pi: Cuando las matemáticas salen mal en el mundo real . Riverhead Books. ISBN 978-0593084694.
Enlaces externos
- Error de redondeo en MathWorld.
- Goldberg, David (marzo de 1991). "What Every Computer Scientist Should Know About Floating-Point Arithmetic" (PDF) . Encuestas de computación de la ACM . 23 (1): 5–48. doi :10.1145/103162.103163. S2CID 222008826 . Consultado el 20 de enero de 2016 .([1], [2])
- 20 desastres de software famosos