Pérdida de importancia - Loss of significance

Ejemplo de LOS en caso de calcular 2 formas de la misma función

La pérdida de significación es un efecto indeseable en los cálculos que utilizan aritmética de precisión finita, como la aritmética de coma flotante . Ocurre cuando una operación en dos números aumenta el error relativo sustancialmente más de lo que aumenta el error absoluto , por ejemplo, al restar dos números casi iguales (lo que se conoce como cancelación catastrófica ). El efecto es que el número de dígitos significativos del resultado se reduce de forma inaceptable. Las formas de evitar este efecto se estudian en análisis numérico .

Demostración del problema

Sustracción

El efecto se puede demostrar con números decimales. El siguiente ejemplo demuestra la cancelación catastrófica para un tipo de datos de coma flotante decimal con 10 dígitos significativos:

Considere el número decimal

x = 0.1234567891234567890

Una representación de punto flotante de este número en una máquina que mantiene 10 dígitos de punto flotante sería

y = 0.1234567891

que está bastante cerca cuando se mide el error como porcentaje del valor. Es muy diferente cuando se mide en orden de precisión. El valor 'x' tiene una precisión de 10 × 10 −19 , mientras que el valor 'y' solo es exacto para 10 × 10 −10 .

Ahora realiza el cálculo

x - y = 0.1234567891234567890 − 0.1234567890000000000

La respuesta, con una precisión de 20 dígitos significativos, es

0.0000000001234567890

Sin embargo, en la máquina de punto flotante de 10 dígitos, el cálculo arroja

0.1234567891 − 0.1234567890 = 0.0000000001

En ambos casos, el resultado tiene una precisión del mismo orden de magnitud que las entradas (−20 y −10 respectivamente). En el segundo caso, la respuesta parece tener un dígito significativo, lo que equivaldría a una pérdida de importancia. Sin embargo, en la aritmética de coma flotante por computadora, todas las operaciones pueden verse como realizadas en antilogaritmos , para los cuales las reglas para cifras significativas indican que el número de cifras significativas sigue siendo el mismo que el número más pequeño de cifras significativas en las mantisas . La forma de indicar esto y representar la respuesta a 10 cifras significativas es

   1.000000000×10−10


Pérdida de bits significativos

Vamos x e y sean números de punto flotante normalizado positivos.

En la resta x - y , se pierden r bits significativos donde

para algunos números enteros positivos p y q .

Soluciones alternativas

Es posible hacer cálculos usando una representación fraccionaria exacta de números racionales y mantener todos los dígitos significativos, pero esto a menudo es prohibitivamente más lento que la aritmética de punto flotante.

Una de las partes más importantes del análisis numérico es evitar o minimizar la pérdida de significancia en los cálculos. Si el problema subyacente está bien planteado, debería existir un algoritmo estable para resolverlo.

A veces, los trucos de álgebra inteligentes pueden cambiar una expresión a una forma que elude el problema. Uno de esos trucos es utilizar la conocida ecuación

Entonces, con la expresión , multiplique el numerador y el denominador dando

Ahora bien, ¿se puede reducir la expresión para eliminar la resta? A veces puede.

Por ejemplo, la expresión puede sufrir una pérdida de bits significativos si es mucho menor que 1. Así que reescribe la expresión como

o

Inestabilidad de la ecuación cuadrática

Por ejemplo, considere la ecuación cuadrática

con las dos soluciones exactas:

Es posible que esta fórmula no siempre produzca un resultado preciso. Por ejemplo, cuando es muy pequeño, la pérdida de significancia puede ocurrir en cualquiera de los cálculos de raíz, dependiendo del signo de .

El caso , , servirá para ilustrar el problema:

Tenemos

En aritmética real, las raíces son

En aritmética de punto flotante de 10 dígitos:

Observe que la solución de mayor magnitud tiene una precisión de diez dígitos, pero el primer dígito distinto de cero de la solución de menor magnitud es incorrecto.

Debido a la resta que ocurre en la ecuación cuadrática, no constituye un algoritmo estable para calcular las dos raíces.

Un mejor algoritmo

Una implementación cuidadosa de la computadora de punto flotante combina varias estrategias para producir un resultado sólido. Suponiendo que el discriminante b 2 - 4 ac es positivo y b es distinto de cero, el cálculo sería el siguiente:

Aquí sgn denota la función de signo , donde es 1 si es positivo y −1 si es negativo. Esto evita problemas de cancelación entre y la raíz cuadrada del discriminante al garantizar que solo se agreguen números del mismo signo.

Para ilustrar la inestabilidad de la fórmula cuadrática estándar en comparación con esta fórmula, considere una ecuación cuadrática con raíces y . Para 16 dígitos significativos, que corresponden aproximadamente a la precisión de doble precisión en una computadora, la ecuación cuadrática monica con estas raíces se puede escribir como

Usando la fórmula cuadrática estándar y manteniendo 16 dígitos significativos en cada paso, la fórmula cuadrática estándar produce

Observe cómo la cancelación ha dado como resultado que se calcule con solo 8 dígitos significativos de precisión.

La fórmula variante presentada aquí, sin embargo, produce lo siguiente:

Tenga en cuenta la retención de todos los dígitos significativos para .

Tenga en cuenta que si bien la formulación anterior evita una cancelación catastrófica entre y , permanece una forma de cancelación entre los términos y del discriminante, que aún puede conducir a la pérdida de hasta la mitad de los dígitos significativos correctos. El discriminante debe calcularse en aritmética con el doble de precisión del resultado para evitar esto (por ejemplo, precisión cuádruple si el resultado final debe ser exacto con precisión doble completa ). Esto puede tener la forma de una operación fusionada de suma múltiple .

Para ilustrar esto, considere la siguiente ecuación cuadrática, adaptada de Kahan (2004):

Esta ecuación tiene raíces

Sin embargo, cuando se calcula usando aritmética de doble precisión IEEE 754 correspondiente a 15 a 17 dígitos significativos de precisión, se redondea a 0.0 y las raíces calculadas son

que son ambos falsos después del octavo dígito significativo. Esto es a pesar del hecho de que, superficialmente, el problema parece requerir solo 11 dígitos significativos de precisión para su solución.

Otros ejemplos

  • La función expm1 calcula exponencial menos 1 . Para una x pequeña , exp ( x ) - 1 provocará una pérdida de significación en la resta; el uso de una función especialmente diseñada ayuda a resolver el problema.

Ver también

Referencias