En el campo del análisis numérico, la estabilidad numérica es una propiedad muy deseable de los algoritmos matemáticos. La definición precisa de estabilidad depende del contexto, especialmente en el álgebra lineal numérica y en los algoritmos para resolver ecuaciones diferenciales ordinarias y parciales mediante aproximaciones discretas.
“La estabilidad garantiza que pequeños cambios en los datos de entrada no provoquen grandes fluctuaciones en el resultado final”.
En álgebra lineal numérica, nos interesan principalmente las inestabilidades que surgen cerca de problemas casi singulares, como valores propios muy pequeños o casi coincidentes. En los algoritmos numéricos para resolver ecuaciones diferenciales, la preocupación es que los errores de redondeo o pequeñas fluctuaciones en los datos iniciales pueden provocar grandes desviaciones entre la respuesta final y la solución exacta. Algunos algoritmos numéricos pueden suavizar pequeñas fluctuaciones y errores en los datos de entrada, mientras que otros pueden amplificar estos errores. Los cálculos que se puede demostrar que no amplifican los errores de aproximación se denominan numéricamente estables.
Una tarea común en el análisis numérico es elegir algoritmos que sean robustos, lo que significa que los resultados no varíen drásticamente cuando los datos de entrada cambian ligeramente. El fenómeno opuesto es la inestabilidad algorítmica. A menudo, un algoritmo implica un método de aproximación y en algunos casos se puede demostrar que el algoritmo se acercará a la solución correcta cuando se utilizan números reales en lugar de números de punto flotante. Sin embargo, en este caso no hay garantía de que convergerá a la solución correcta, ya que los errores de redondeo o truncamiento en números de punto flotante pueden magnificarse, causando que la desviación de la solución correcta crezca exponencialmente.
En álgebra lineal numérica, el concepto de estabilidad se puede formalizar de varias maneras diferentes. Las definiciones comúnmente utilizadas de estabilidad hacia adelante, hacia atrás y mixta suelen aparecer en este campo. Consideremos un problema resuelto mediante un algoritmo numérico, donde la función f asigna los datos x a una solución y. El resultado del algoritmo y* generalmente se desviará de la solución "verdadera" y. Las principales razones del error son el error de redondeo y el error de truncamiento.
“El error hacia adelante de un algoritmo es la diferencia entre su resultado y la solución; el error hacia atrás es el Δx más pequeño tal que f(x + Δx) = y*.”
El error hacia adelante es la diferencia entre y* e y; el error hacia atrás es el mínimo Δx tal que f(x + Δx) = y*. Existe una relación de número de condición entre el error hacia adelante y el error hacia atrás: el tamaño del error hacia adelante es como máximo el producto del número de condición y el error hacia atrás. En muchos casos, es más natural considerar errores relativos. Cuando el error hacia atrás es pequeño para todas las entradas x, llamamos al algoritmo estable hacia atrás. Por supuesto, "pequeño" es un término relativo y su definición dependerá del contexto específico.
A menudo se da una definición más general de estabilidad numérica, llamada estabilidad híbrida, que combina el error directo y el error hacia atrás. Un algoritmo es estable si resuelve aproximadamente un problema vecino, es decir, existe un Δx pequeño tal que f(x + Δx) - y* también es pequeño. Por lo tanto, un algoritmo estable hacia atrás siempre es estable. Con respecto a la estabilidad hacia adelante, un algoritmo es estable hacia adelante si su error hacia adelante dividido por el número de condición del problema es relativamente pequeño.
Al resolver ecuaciones diferenciales, la estabilidad se define de manera diferente. En las ecuaciones diferenciales ordinarias numéricas, existen varias nociones de estabilidad numérica, como la A-estabilidad. Estos conceptos a menudo se relacionan con ciertas nociones de estabilidad en sistemas dinámicos, en particular la estabilidad de Lyapunov. Al resolver ecuaciones rígidas, es muy importante utilizar un método estable.
"La estabilidad se logra a veces introduciendo la difusión numérica, que garantiza que los errores de redondeo en los cálculos no se acumulen hasta niveles peligrosos".
Un algoritmo para resolver ecuaciones diferenciales parciales del tipo de evolución lineal se considera estable si el cambio total en la solución numérica permanece acotado a medida que el tamaño del paso se acerca a cero. El teorema de equivalencia de Lax establece que si un algoritmo es consistente y estable, convergerá. Sin embargo, para las ecuaciones diferenciales parciales no lineales, la definición de estabilidad es mucho más complicada porque muchas propiedades en las ecuaciones no lineales no existen en sus contrapartes lineales.
El otro método se llama "Método X", y su fórmula es xk+1 = (xk^2 − 2)² + xk. Debajo de la tabla se registran algunas iteraciones de cada método, y vemos que el método babilónico converge rápidamente independientemente de la estimación inicial, mientras que el método X converge muy lentamente en x0 = 1,4 y diverge de manera extraña en x0 = 1,42. Por lo tanto, el método babilónico se considera numéricamente estable, mientras que el método X es numéricamente inestable.
La estabilidad numérica también se ve afectada por la cantidad de dígitos significativos que retiene la máquina. Una máquina que retenga sólo cuatro dígitos significativos daría un buen ejemplo de las consecuencias que podrían resultar de una pérdida de significancia. Por ejemplo, consideremos las funciones equivalentes f(x) y g(x). Al calcular f(500) y g(500), aunque las dos funciones son iguales, producen resultados completamente diferentes, lo que muestra cómo pequeños errores pueden conducir a grandes variaciones.
En resumen, la estabilidad numérica es crucial en el análisis numérico, ya que afecta la precisión y la eficiencia con la que resolvemos los problemas. Sin embargo, en su opinión, ¿qué tipo de algoritmo o método puede permanecer estable en condiciones inestables?