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 los números reales y las operaciones aritméticas que se realizan con ellos. Ésta es una forma de error de cuantificación . [4] Cuando se utilizan ecuaciones de aproximación o algoritmos, especialmente cuando se utilizan un número finito de dígitos para representar números reales (que en teoría tienen infinitos dígitos), uno de los objetivos deEl análisis numérico es para 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, se pueden acumular errores, que a veces dominan el cálculo. En problemas mal condicionados , se pueden acumular errores importantes. [6]
En resumen, hay dos facetas principales de los errores de redondeo involucrados en los cálculos numéricos: [7]
- Las computadoras digitales tienen límites de magnitud y precisión en su capacidad para representar números.
- Algunas 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 usando 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 errores de representación en representaciones decimales:
Notación | Representación | Aproximación | Error |
---|---|---|---|
1/7 | 0. 142 857 | 0,142 857 | 0,000 000 142 857 |
En 2 | 0,693 147180559945309 41 ... | 0,693 147 | 0,000 000 180 559945 309 41 ... |
log 10 2 | 0,301 029 995 663 981 195 21 ... | 0.3010 | 0,000 029995663981195 21 ... |
3 √ 2 | 1,259 921049894873164 76 ... | 1.25992 | 0.000 001049894873164 76 ... |
√ 2 | 1.414 213562373095048 80 ... | 1.41421 | 0,000 003562373095 048 80 ... |
mi | 2.718 281828459045235 36 ... | 2.718 281 828 459045 | 0,000 000 000 000 000235 36 ... |
π | 3,141592653589793238 46 ... | 3,141592653589793 | 0.000 000 000 000 000 238 46 ... |
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 incontables números reales. Los dígitos adicionales que se utilizan para los pasos intermedios de un cálculo se conocen como dígitos de guarda . [9]
Redondear varias veces puede hacer que se acumulen errores. [10] Por ejemplo, si 9,945309 se redondea a dos decimales (9,95) y luego se vuelve a redondear a un decimal (10,0), el error total es 0,054691. Redondear 9,945309 a un lugar decimal (9,9) en un solo paso introduce menos error (0,045309). Esto ocurre comúnmente cuando se realizan operaciones aritméticas (consulte Pérdida de importancia ).
Sistema numérico de coma flotante
En comparación con el sistema numérico de coma fija , el sistema numérico de coma flotante es más eficiente para representar números reales, por lo que se usa ampliamente en las computadoras modernas. Mientras que los números reales son infinitos y continuos, un sistema numérico de punto flotante es finito y discreto. Por tanto, el error de representación, que conduce a un error de redondeo, se produce en el sistema numérico de coma flotante.
Notación del sistema numérico de coma flotante
Un sistema numérico de punto flotante Es caracterizado por enteros:
- : base o raíz
- : precisión
- : rango de exponentes, donde es el límite inferior y es el límite superior
- Alguna tiene la siguiente forma:
- dónde es un número entero tal que por , y es un número entero tal que .
Sistema normalizado de números flotantes
- Un sistema numérico de punto flotante se normaliza si el dígito inicial es siempre distinto de cero a menos que el número sea cero. [3] Dado que la mantisa es, la mantisa 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 dónde . En binario, el primer dígito es siemprepor lo que no se escribe y se denomina bit implícito. Esto proporciona un poco de precisión adicional para que se reduzca el error de redondeo causado por el error de representación.
- Desde el sistema numérico de coma 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 mediante reglas de redondeo . La aproximación de punto flotante de un número real dado por se puede denotar.
- El número total de números de coma flotante normalizados es
- , dónde
- cuenta la elección del signo, sea positivo o negativo
- cuenta la elección del primer dígito
- cuenta la mantisa restante
- cuenta la elección de exponentes
- cuenta el caso cuando el número es .
- , dónde
Estándar IEEE
En el estándar IEEE , la base es binaria, es deciry 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 precisión simple y precisión doble.
Precisión | Signo (bits) | Exponente (bits) | Mantisa (bits) |
---|---|---|---|
Único | 1 | 8 | 23 |
Doble | 1 | 11 | 52 |
Epsilon de la máquina
El épsilon de la máquina se puede utilizar para medir el nivel de error de redondeo en el sistema numérico de punto flotante. Aquí hay dos definiciones diferentes. [3]
- La máquina épsilon, denotada , es el máximo error relativo absoluto posible al representar un número real distinto de cero en un sistema numérico de coma flotante.
- La máquina épsilon, denotada , es el número más pequeño tal que . Por lo tanto, cuando sea .
Error de redondeo bajo diferentes reglas de redondeo
Hay dos reglas de redondeo comunes, redondeo por corte y redondeo al más cercano. El estándar IEEE usa redondeo al más cercano.
- Ronda a chuleta : la base- Expansión de se trunca después de la dígito.
- Esta regla de redondeo está sesgada porque siempre mueve el resultado hacia cero.
- Redondea 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 coma flotante cuyo último dígito almacenado es par.
- 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 para que el último dígito almacenado sea uniforme cuando hay un empate asegura que no se redondee hacia arriba o hacia abajo de forma sistemática. Esto es para tratar de 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 según las dos reglas de redondeo. [3] La regla de redondeo, redondear al más cercano, conduce a un menor error de redondeo en general.
X | Ronda a chuleta | Error de redondeo | Redondear al más cercano | Error de redondeo |
---|---|---|---|---|
1.649 | 1,6 | 0,049 | 1,6 | 0,049 |
1.650 | 1,6 | 0,050 | 1,7 | 0,050 |
1,651 | 1,6 | 0.051 | 1,7 | -0,049 |
1.699 | 1,6 | 0,099 | 1,7 | -0,001 |
1.749 | 1,7 | 0,049 | 1,7 | 0,049 |
1.750 | 1,7 | 0,050 | 1.8 | -0.050 |
Cálculo del error de redondeo en el estándar IEEE
Suponga el uso de redondeo al más cercano y de doble precisión IEEE.
- Ejemplo: el número decimal se puede reorganizar en
Desde el bit a la derecha del punto binario es un y es seguida por otros bits distintos de cero, la regla de redondeo al más cercano requiere redondear hacia arriba, es decir, sumar poco a la un poco. Por lo tanto, la representación de coma flotante normalizada en el estándar IEEE de es
- .
- Ahora el error de redondeo se puede calcular al representar con .
Esta representación se deriva descartando la cola infinita
de la cola derecha y luego agregó en el paso de redondeo.
- Luego .
- Por tanto, el error de redondeo es .
Medición del error de redondeo mediante el uso de la máquina epsilon
La máquina épsilon 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 a chuleta:
- Redondea al más cercano:
Prueba
Dejar dónde , y deja ser la representación de punto flotante de . Dado que se está utilizando round-by-chop, es* Para determinar el máximo de esta cantidad, es necesario encontrar el máximo del numerador y el mínimo del denominador. Desde (sistema normalizado), el valor mínimo del denominador es . El numerador está acotado arriba por. Por lo tanto,. Por lo tanto,para redondo por chuleta. La prueba de redondeo al más cercano es similar.
- Tenga en cuenta que la primera definición de épsilon de máquina no es del todo equivalente a la segunda definición cuando se usa la regla de redondeo al más cercano, pero es equivalente a redondeo por corte.
Error de redondeo causado por aritmética de punto flotante
Incluso si algunos números se pueden representar 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.
Adición
La suma de la máquina consiste en alinear los puntos decimales de los dos números que se van a sumar, sumarlos y luego almacenar el resultado nuevamente como un número de punto flotante. La suma en sí se puede hacer con mayor precisión, pero el resultado debe redondearse a la precisión especificada, lo que puede provocar un error de redondeo. [3]
Por ejemplo, agregando a en IEEE doble precisión de la siguiente manera,
- Esto se guarda como dado que el redondeo al más cercano se usa en el estándar IEEE. Por lo tanto, es igual a en IEEE doble precisión y el error de redondeo es .
En este ejemplo, se puede ver que se puede introducir un error de redondeo al hacer la suma de un número grande y un número pequeño porque el desplazamiento de los puntos decimales en las mantisas para hacer coincidir los exponentes puede causar la pérdida de algunos dígitos.
Multiplicación
En general, el producto de -digit mantissas contiene hasta dígitos, por lo que es posible que el resultado no quepa en la mantisa. [3] Por lo tanto, el error de redondeo estará involucrado en el resultado.
- Por ejemplo, considere un sistema numérico de punto flotante normalizado con la base y los dígitos de la mantisa son como máximo . Luego y . Tenga en cuenta que pero ya que a lo sumo dígitos de mantisa. El error de redondeo sería.
División
En general, el cociente de -dígitos mantisas pueden contener más de -dígitos. [3] Por lo tanto, el error de redondeo estará involucrado en el resultado.
- Por ejemplo, si el sistema numérico de punto flotante normalizado anterior todavía se está utilizando, entonces pero . Entonces, la cola se corta.
Cancelación sustractiva
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 exactamente y simplemente se representará como .
- Por ejemplo, deja y aquí se utiliza la segunda definición de épsilon de máquina. Cual es la solucion para?
Se sabe que y son números casi iguales, y . Sin embargo, en el sistema numérico de punto flotante,. Aunque es lo suficientemente grande para ser representado, ambas instancias de han sido redondeados dando .
- Por ejemplo, deja y aquí se utiliza la segunda definición de épsilon de máquina. Cual es la solucion para?
- Incluso con un algo más grande , el resultado sigue siendo significativamente poco fiable en casos típicos. No hay mucha fe 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 fe en él.
Acumulación de error de redondeo
Los errores se pueden aumentar o acumular 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 llama estable si pequeños cambios en la entrada solo producen pequeños cambios en la salida y se llama inestable si se producen grandes cambios en la salida. [11]
Normalmente, se produce una secuencia de cálculos cuando se ejecuta algún algoritmo. La cantidad de error en el resultado depende de la estabilidad del algoritmo . El error de redondeo se verá incrementado por algoritmos inestables.
Por ejemplo, por con dado. Es fácil demostrar que. Suponer es nuestro valor inicial y tiene un pequeño error de representación , lo que significa que la entrada inicial a este algoritmo es en vez de . Luego, el algoritmo realiza la siguiente secuencia de cálculos.
El error de redondeo se amplifica en los cálculos posteriores, por lo que este algoritmo es inestable.
Problemas mal condicionados
Incluso si se utiliza un algoritmo estable, la solución a un problema puede ser inexacta debido a la acumulación de errores de redondeo cuando el problema en sí está mal condicionado .
El número de condición de un problema es la razó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 condición es "mucho mayor" que.
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]
Por ejemplo, los polinomios de orden superior tienden a estar muy mal acondicionados , es decir, tienden a ser muy sensibles al error de redondeo. [7]
En 1901, Carl Runge publicó un estudio sobre los peligros de la interpolación polinomial de orden superior. Observó la siguiente función de apariencia simple:
que ahora se llama función de Runge . Tomó puntos de datos equidistantemente espaciados de esta función durante el intervalo. Luego utilizó polinomios de interpolación de orden creciente y descubrió que a medida que tomaba más puntos, los polinomios y la curva original diferían considerablemente, como se ilustra en la Figura "Comparación1" y la Figura "Comparación 2". Además, la situación se deterioró enormemente a medida que se incrementó el pedido. Como se muestra en la Figura “Comparación 2”, el ajuste ha empeorado, particularmente al final del intervalo.
Haga clic en las figuras para ver las descripciones completas.
Ejemplo del mundo real: falla del misil Patriot debido a la ampliación del error de redondeo
El 25 de febrero de 1991, durante la Guerra del Golfo, una batería de misiles Patriot estadounidense en Dharan, Arabia Saudita, no pudo interceptar un misil Scud iraquí entrante. El Scud atacó un cuartel del ejército estadounidense y mató a 28 soldados. Un informe de la entonces Oficina General de Contabilidad titulado "Patriot Missile Defense: Problema de software conducido a una falla del sistema en Dhahran, Arabia Saudita" informó sobre la causa de la falla: un cálculo inexacto del tiempo desde el inicio debido a errores aritméticos de la computadora. Específicamente, el tiempo en décimas de segundo, medido por el reloj interno del sistema, se multiplicó por 10 para producir el tiempo en segundos. Este cálculo se realizó utilizando un registro de punto fijo de 24 bits. En particular, el valor 1/10, que tiene una expansión binaria no terminante, se cortó a 24 bits después del punto de base. El pequeño error de corte, cuando se multiplica por el gran número que da el tiempo en décimas de segundo, conduce a un error significativo. De hecho, la batería del Patriot había estado funcionando alrededor de 100 horas, y un cálculo sencillo muestra que el error de tiempo resultante debido al error de corte ampliado fue de aproximadamente 0,34 segundos. (El número 1/10 es igual a. En otras palabras, la expansión binaria de 1/10 es. Ahora el registro de 24 bits en el Patriot almacenado en su lugar introduciendo un error de binario, o sobre decimal. Multiplicando por el número de décimas de segundo en horas da ). Un Scud viaja aproximadamente1676 metros por segundo, por lo que viaja más de medio kilómetro en este tiempo. Esto fue lo suficientemente lejos como para que el Scud entrante estuviera fuera de la "puerta de alcance" que rastreó el Patriot. Irónicamente, el hecho de que se haya mejorado el cálculo del mal tiempo en algunas partes del código, pero no en todas, contribuyó al problema, ya que significaba que las inexactitudes no se cancelaban. [12]
Ver también
- Precisión (aritmética)
- Truncamiento
- Redondeo
- Pérdida de importancia
- Punto flotante
- Algoritmo de suma de Kahan
- Epsilon de la máquina
- Polinomio de Wilkinson
Referencias
- ^ Butt, Rizwan (2009), Introducción al análisis numérico mediante 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
- ^ a b c d e f g h yo j k Forrester, Dick (2018). Math / Comp241 Métodos numéricos (notas de clase) . Dickinson College .
- ^ Aksoy, Pelin; DeNardis, Laura (2007), Tecnología de la información en teoría , Cengage Learning, p. 134, ISBN 978-1-42390140-2
- ^ Ralston, Anthony; Rabinowitz, Philip (2012), A First Course in Numerical Analysis , Dover Books on Mathematics (2ª ed.), Courier Dover Publications, págs. 2-4, ISBN 978-0-48614029-2
- ^ Chapman, Stephen (2012), Programación de MATLAB con aplicaciones para ingenieros , Cengage Learning, p. 454, ISBN 978-1-28540279-6
- ^ a b c Chapra, Steven (2012). Métodos numéricos aplicados con MATLAB para ingenieros y científicos (3ª ed.). The McGraw-Hill Companies, Inc. ISBN 9780073401102.
- ^ Laplante, Philip A. (2000). Diccionario de Ciencias de la Computación, Ingeniería y Tecnología . Prensa CRC . pag. 420. ISBN 978-0-84932691-2.
- ^ Higham, Nicholas John (2002). Precisión y estabilidad de algoritmos numéricos (2 ed.). Sociedad de Matemática Industrial y Aplicada (SIAM). págs. 43–44. ISBN 978-0-89871521-7.
- ^ Volkov, EA (1990). Métodos numéricos . Taylor y Francis . pag. 24. ISBN 978-1-56032011-1.
- ^ Collins, Charles (2005). "Estado y estabilidad" (PDF) . Departamento de Matemáticas de la Universidad de Tennessee . Consultado el 28 de octubre de 2018 .
- ^ Arnold, Douglas. "La falla del misil patriota" . Consultado el 29 de octubre de 2018 .
Otras lecturas
- Matt Parker (2021). Humble Pi: Cuando las matemáticas van mal en el mundo real . Libros de Riverhead. ISBN 978-0593084694.
enlaces externos
- Error de redondeo en MathWorld.
- Goldberg, David (marzo de 1991). "Lo que todo informático debe saber sobre la aritmética de punto flotante" (PDF) . Encuestas de computación ACM . 23 (1): 5–48. doi : 10.1145 / 103162.103163 . Consultado el 20 de enero de 2016 .( [1] , [2] )
- 20 desastres de software famosos