16 votos

Explicar por qué se produce una cancelación catastrófica

Tras mi propia investigación, la siguiente imagen surge como el ejemplo más utilizado de cancelación catastrófica (de hecho, se utiliza en mi clase).


enter image description here


¿Alguien podría explicar por qué el gráfico tiene esa forma? (es decir, la línea dentada que fluctúa ampliamente a los lados, y la caída vertical cerca del centro)

Punto menor: ¿por qué la función demostradora se divide por $x^2$ ? ¿No es $1 - \cos(x)$ suficiente para causar una cancelación catastrófica?

2 votos

Si se traza $1 - \cos x$ en el mismo rango de $x$ No verás la cancelación porque es de orden $x^2$ alrededor del origen.

0 votos

Para que nadie sospeche, como hice yo, que esto era un artefacto del programa de trazado utilizado, aquí está el mismo resultado extraño procedente de (lo que espero que sea) un programa de trazado completamente diferente: a.pomf.se/inobme.png

0 votos

Esta pregunta relacionada parece sugerir que bajo algunas condiciones el mismo problema puede se producen con $1-\cos x$ .

17voto

willw Puntos 1026

Cuando $\cos(x)$ se calcula para una cantidad razonablemente pequeña de $x$ Se obtiene un número como 0,9999999994598649857etc; el estándar IEEE de doble precisión define una forma de redondear este número a aproximadamente 16 decimales. Así sale algo como 0,99999999999995. No he contado los dígitos, pero te haces una idea (y de todos modos, el redondeo se hace en base 2). Esto no parece catastrófico. Pero ahora reste 1 a ambos números, y verá que un enorme error relativo se ha comprometido a ese resultado. La división por $x^2$ le da más o menos este error relativo, porque cuando $x$ es pequeño, entonces $\cos(x) \approx 1 - \frac12 x^2$ (según Serie Taylor ). Así que cuando $x$ es muy pequeño, $\cos(x)$ se redondea a 1 (sin dígitos después de la coma), lo que explica la meseta en su gráfico.

Seguimiento de la petición de la OP: Para formalizar esto, dejemos $fl$ para "aritmética de punto flotante", sea la función que redondea un número real al número máquina más cercano ( $=$ un número representable como número IEEE de doble precisión, de los que sólo hay un número finito). Aunque tal vez no sea estrictamente preciso (puede haber optimización; puede haber cálculo de precisión extendida oculto; y el redondeo no siempre es al número más cercano de la máquina), la máquina calcula no $(1 - \cos(x)) / x^2$ pero $$ fl( fl( 1 - {\color{red}{fl}}(\cos(x)) ) / fl(x^2) ) , $$ Suponiendo que se comience con $x$ tal que $x = fl(x)$ . La cuestión se origina en la aplicación de la $fl$ que está marcado en rojo, porque $$ {\color{red}{fl}}(\cos(x)) = \cos(x) (1 + \delta) $$ donde $|\delta| \leq \text{eps} \approx 10^{-16}$ , y $\text{eps}$ es el menor número positivo tal que $$ fl(1 + \text{eps}) \neq 1 . $$ Por lo tanto, $$ 1 - {\color{red}{fl}}(\cos(x)) = 1 - \cos(x) + \delta \cos(x) \approx \tfrac12 x^2 + \delta $$ cuando $x$ no es demasiado pequeño (de lo contrario ${\color{red}{fl}}(\cos(x)) = 1$ ). Cuando $x$ es de orden $\sqrt{\text{eps}} \approx 10^{-8}$ (como en su imagen), este resultado $\tfrac12 x^2$ está contaminado por un error absoluto de $\delta$ o un error relativo de $2 \delta / x^2$ . Así que el resultado final $(1 - \cos(x)) / x^2$ está contaminado por un error absoluto de $\delta / x^2 \approx 1$ cuando $x \approx \sqrt{\text{eps}}$ que, de nuevo, es lo que se ve en la imagen.

ps. Ha habido consecuencias infames de la aritmética de precisión finita.

0 votos

¿Podría dar más detalles sobre el error relativo? Enchufe $\cos(x) \approx 1 - \frac12 x^2$ a $f(x) = \frac{1 - \cos(x)}{x^2}$ Simplemente obtengo $\frac{1}{2}$ cuando $x$ es pequeño. ¿Cuál es el problema entonces?

1 votos

@Heisenberg: ver versión ampliada

0 votos

¿No es $1 - {\color{red}{fl}}(\cos(x)) = 1 - \cos(x) + \delta \cos(x) \approx \tfrac12 x^2 + \delta + \delta \frac{1}{2}x^2$ ? (nótese el último término). ¿Lo quitas porque al multiplicar $\delta$ y $x^2$ ¿hacerlo mucho más pequeño que el resto?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X