stringtranslate.com

Cancelación catastrófica

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

Por ejemplo, si hay dos pernos, uno largo y otro largo, y se miden con una regla que solo es válida hasta el centímetro, entonces las aproximaciones podrían ser y . Estas pueden ser buenas aproximaciones, con un error relativo , con respecto a las longitudes verdaderas: las aproximaciones tienen un error de menos del 2% de las longitudes verdaderas, .

Sin embargo, si se restan las longitudes aproximadas , la diferencia será , aunque la diferencia real entre las longitudes es . 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 las entradas, se aplica tanto a entradas grandes como pequeñas. Depende únicamente de lo grande que sea la diferencia y del error de las entradas. Se produciría exactamente el mismo error al restar de como aproximaciones a y , o al restar de como aproximaciones a y .

La cancelación catastrófica puede ocurrir incluso si la diferencia se calcula con exactitud, 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 las entradas son aproximaciones en sí mismas. De hecho, en la aritmética de punto flotante, cuando las entradas son lo suficientemente cercanas, la diferencia de punto flotante se calcula con exactitud, mediante el lema de Sterbenz ; no hay error de redondeo introducido 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 las entradas cercanas: incluso si las aproximaciones y tienen pequeños errores relativos y a partir de los valores verdaderos y , respectivamente, el error relativo de la diferencia de las aproximaciones a partir 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 respecto de la diferencia de los valores verdaderos es

que puede ser arbitrariamente grande si los valores verdaderos y están cerca.

En algoritmos numéricos

La resta de números cercanos en aritmética de punto flotante no siempre causa una cancelación catastrófica, o incluso algún 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 intento ingenuo 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 de magnitud cercana, porque la resta puede exponer los errores de redondeo en el cuadrado. La factorización alternativa , evaluada mediante la aritmética de punto flotante , evita la cancelación catastrófica porque evita introducir un error de redondeo que conduce a la resta. [2]

Por ejemplo, si y , entonces el valor verdadero de la diferencia es . En la aritmética IEEE 754 binary64 , la evaluación de la factorización alternativa da exactamente el resultado correcto (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 , perdidos debido al redondeo al calcular los valores cuadrados intermedios.

Ejemplo: Arcoseno complejo

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

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 próximos 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 utilizando la fórmula logarítmica ingenua en la aritmética binaria IEEE 75464 puede dar , con solo cinco de dieciséis dígitos correctos y el resto (subrayado) todos incorrectos.

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

Ejemplo: conversión de base

Las constantes numéricas en los programas de software suelen escribirse en decimal, como en el fragmento C para declarar e inicializar una variable IEEE 754 binary64 denominada . Sin embargo, no es un número de punto flotante binary64; 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 hasta convertirlo en uno mucho mayor:double x = 1.000000000000001;xx

double 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 desde y de desde están ambos por debajo de , 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 con exactitud, 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 de en el redondeo . Sin embargo, la función en sí está bien condicionada en entradas cercanas a . Reescribirla como explota la cancelación en para evitar el error de evaluado directamente. [2] Esto funciona porque la cancelación en el numerador y la cancelación en el denominador se contrarrestan entre sí; la función está suficientemente bien condicionada cerca de cero que da una buena aproximación a , y por lo tanto da una buena aproximación a .

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 científico informático debería saber sobre aritmética de punto flotante". Encuestas de computación de la 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 .