stringtranslate.com

Cancelación catastrófica

En análisis numérico , cancelación catastrófica [1] [2] es el fenómeno por el cual restar buenas aproximaciones a dos números cercanos puede producir una muy mala aproximación a la diferencia de los números originales.

Por ejemplo, si hay dos montantes, uno largo y otro largo, y se miden con una regla que solo sirve al centímetro, entonces las aproximaciones podrían resultar ser y . Estas pueden ser buenas aproximaciones, con un error relativo , a las longitudes reales: las aproximaciones tienen un error de menos del 2% de las longitudes reales, .

Sin embargo, si se restan las longitudes aproximadas , la diferencia será , aunque la verdadera diferencia entre las longitudes sea . La diferencia de las aproximaciones, , tiene un error de casi el 100% de la magnitud de la diferencia de los valores verdaderos, .

La cancelación catastrófica no se ve afectada por el tamaño de los insumos; se aplica tanto a los insumos grandes como a los pequeños. Depende únicamente de qué tan grande sea la diferencia y del error de las entradas. Exactamente el mismo error surgiría al restar de as aproximaciones a y , o al restar de as aproximaciones a y .

Puede ocurrir una cancelación catastrófica incluso si la diferencia se calcula exactamente, como en el ejemplo anterior; no es una propiedad de ningún tipo particular de aritmética como la aritmética de punto flotante ; más bien, es inherente a la resta, cuando los datos de entrada son en sí mismos aproximaciones. De hecho, en aritmética de punto flotante, cuando las entradas están lo suficientemente cerca, la diferencia de punto flotante se calcula exactamente mediante el lema de Sterbenz ; no se introduce ningún error de redondeo por la operación de resta de punto flotante.

Análisis formal

Formalmente, la cancelación catastrófica ocurre porque la resta está mal condicionada en entradas cercanas: incluso si las aproximaciones y tienen pequeños errores relativos y de los valores verdaderos y , respectivamente, el error relativo de la diferencia de las aproximaciones de la diferencia de los valores verdaderos es inversamente proporcional. a la diferencia de los valores verdaderos:

Por lo tanto, el error relativo de la diferencia exacta de las aproximaciones de la diferencia de los valores verdaderos es

que puede ser arbitrariamente grande si los valores verdaderos y son cercanos.

En algoritmos numéricos

Restar números cercanos en aritmética de punto flotante no siempre causa una cancelación catastrófica, o incluso cualquier error; según el lema de Sterbenz , si los números están lo suficientemente cerca, la diferencia de punto flotante es exacta. Pero la cancelación puede amplificar los errores en las entradas que surgieron del redondeo en otras aritméticas de punto flotante.

Ejemplo: diferencia de cuadrados

Dados los números y , el ingenuo intento de calcular la función matemática mediante la aritmética de punto flotante está sujeto a una cancelación catastrófica cuando y son similares en magnitud, porque la resta puede exponer los errores de redondeo en la elevación al cuadrado. La factorización alternativa , evaluada mediante la aritmética de punto flotante , evita una cancelación catastrófica porque evita introducir errores de redondeo en la resta. [2]

Por ejemplo, si y , entonces el verdadero valor de la diferencia es . En la aritmética binaria 64 de IEEE 754 , la evaluación de la factorización alternativa da el resultado correcto exactamente (sin redondeo), pero la evaluación de la expresión ingenua da el número de punto flotante , del cual menos de la mitad de los dígitos son correctos y los otros dígitos (subrayados) reflejan los términos faltantes , se pierden debido al redondeo al calcular los valores cuadrados intermedios.

Ejemplo: arcoseno complejo

Al calcular la función arcoseno complejo , uno puede verse tentado a utilizar la fórmula logarítmica directamente:

Sin embargo, supongamos que para . Entonces y ; Llame a la diferencia entre ellos : una diferencia muy pequeña, casi cero. Si se evalúa en aritmética de punto flotante dando

con cualquier error , donde denota redondeo de punto flotante, luego se calcula la diferencia

de dos números cercanos, ambos muy cercanos a , puede amplificar el error en una entrada por un factor de —un factor muy grande porque era casi cero. Por ejemplo, si , el valor verdadero de es aproximadamente , pero usar la ingenua fórmula logarítmica en la aritmética binaria 64 del IEEE 754 puede dar , con solo cinco de dieciséis dígitos correctos y el resto (subrayado) todo incorrecto.

En el caso de for , usar la identidad evita la cancelación porque pero , por lo que la resta es efectivamente una suma con el mismo signo que no cancela.

Ejemplo: conversión de Radix

Las constantes numéricas en los programas de software a menudo se escriben en decimal, como en el fragmento C para declarar e inicializar una variable binaria64 IEEE 754 denominada . Sin embargo, no es un número de punto flotante binario64; el más cercano, que se inicializará en este fragmento, es . Aunque la conversión de base de punto flotante decimal a punto flotante binario solo incurre en un pequeño error relativo, una cancelación catastrófica puede amplificarlo a uno mucho mayor:double x = 1.000000000000001;xx

doble x = 1.000000000000001 ; // redondeado a 1 + 5*2^{-52} double y = 1.000000000000002 ; // redondeado a 1 + 9*2^{-52} double z = y - x ; // la diferencia es exactamente 4*2^{-52}              

La diferencia es . Los errores relativos de from y from están a continuación y la resta de punto flotante se calcula exactamente mediante el lema de Sterbenz.xyy - x

Pero aunque las entradas son buenas aproximaciones, y aunque la resta se calcula exactamente, la diferencia de las aproximaciones tiene un error relativo de más de la diferencia de los valores originales escritos en decimal: la cancelación catastrófica amplificó un pequeño error en la conversión de base. en un gran error en la salida.

Cancelación benigna

La cancelación es a veces útil y deseable en algoritmos numéricos. Por ejemplo, los algoritmos 2Sum y Fast2Sum se basan en dicha cancelación después de un error de redondeo para calcular exactamente cuál fue el error en una operación de suma de punto flotante como un número de punto flotante en sí.

La función , si se evalúa ingenuamente en los puntos , perderá la mayoría de los dígitos en el redondeo . Sin embargo, la función en sí está bien condicionada en entradas cercanas a . Reescribiéndolo como

[2]

Referencias

  1. ^ Müller, Jean-Michel; Brunie, Nicolás; de Dinechin, Florent; Jeannerod, Claude-Pierre; Joldes, Mioara; Lefèvre, Vicente; Melquiond, Guillaume; Revol, Nathalie ; Torres, Serge (2018). Manual de aritmética de coma flotante (2ª ed.). Gewerbestrasse 11, 6330 Cham, Suiza: Birkhäuser. pag. 102.doi :10.1007/978-3-319-76526-6 . ISBN 978-3-319-76525-9.{{cite book}}: CS1 maint: location (link)
  2. ^ abc Goldberg, David (marzo de 1991). "Lo que todo informático debería saber sobre la aritmética de punto flotante". Encuestas de Computación ACM . 23 (1). Nueva York, NY, Estados Unidos: Association for Computing Machinery: 5–48. doi :10.1145/103162.103163. ISSN  0360-0300. S2CID  222008826 . Consultado el 17 de septiembre de 2020 .