En matemáticas, la aceleración de Anderson , también llamada mezcla de Anderson , es un método para la aceleración de la tasa de convergencia de iteraciones de punto fijo . Introducida por Donald G. Anderson, [1] esta técnica se puede utilizar para encontrar la solución de ecuaciones de punto fijo que surgen a menudo en el campo de la ciencia computacional .
Definición
Dada una función , considere el problema de encontrar un punto fijo de , que es una solución a la ecuación . Un enfoque clásico para el problema es emplear un esquema de iteración de punto fijo ; [2] es decir, dada una estimación inicial para la solución, calcular la secuencia hasta que se cumpla algún criterio de convergencia. Sin embargo, la convergencia de dicho esquema no está garantizada en general; además, la tasa de convergencia suele ser lineal, lo que puede volverse demasiado lento si la evaluación de la función es computacionalmente costosa. [2] La aceleración de Anderson es un método para acelerar la convergencia de la secuencia de punto fijo. [2]
Defina el residuo , y denote y (donde corresponde a la secuencia de iteraciones del párrafo anterior). Dado un valor inicial y un parámetro entero , el método se puede formular de la siguiente manera: [3] [nota 1]
donde la multiplicación de la matriz por el vector , y es el elemento n de . Se pueden utilizar criterios de detención convencionales para finalizar las iteraciones del método. Por ejemplo, las iteraciones se pueden detener cuando cae por debajo de una tolerancia prescrita, o cuando el residuo cae por debajo de una tolerancia prescrita. [2]
Con respecto a la iteración de punto fijo estándar, se ha descubierto que el método converge más rápido y es más robusto, y en algunos casos evita la divergencia de la secuencia de punto fijo. [3] [4]
Derivación
Para la solución , sabemos que , lo que equivale a decir que . Por lo tanto, podemos reformular el problema como un problema de optimización en el que queremos minimizar .
En lugar de ir directamente de a eligiendo como en la iteración de punto fijo , consideremos un punto intermedio que elegimos como la combinación lineal , donde el vector de coeficientes y es la matriz que contiene los últimos puntos, y elijamos de manera que minimice . Como los elementos de suman uno, podemos hacer la aproximación de primer orden y nuestro problema pasa a ser encontrar el que minimiza . Después de haber encontrado , podríamos en principio calcular .
Sin embargo, dado que está diseñado para acercar un punto a , probablemente esté más cerca de que lo que es, por lo que tiene sentido elegir en lugar de . Además, dado que los elementos de suman uno, podemos hacer la aproximación de primer orden . Por lo tanto, elegimos
.
Solución del problema de minimización
En cada iteración del algoritmo, se debe resolver el problema de optimización restringido , sujeto a . El problema se puede reformular en varias formulaciones equivalentes, [3] lo que produce diferentes métodos de solución que pueden dar como resultado una implementación más conveniente:
- definir las matrices y , resolver y establecer ; [3] [4]
- Resuelve y luego establece . [1]
Para ambas opciones, el problema de optimización se presenta en forma de un problema de mínimos cuadrados lineal sin restricciones , que se puede resolver mediante métodos estándar, incluida la descomposición QR [3] y la descomposición en valores singulares [4] , posiblemente incluyendo técnicas de regularización para abordar las deficiencias de rango y los problemas de condicionamiento en el problema de optimización. Resolver el problema de mínimos cuadrados mediante la resolución de ecuaciones normales generalmente no es aconsejable debido a las posibles inestabilidades numéricas y al alto costo computacional general. [4]
El estancamiento del método (es decir, iteraciones posteriores con el mismo valor, ) hace que el método deje de funcionar, debido a la singularidad del problema de mínimos cuadrados. De manera similar, el casi estancamiento ( ) da como resultado un mal condicionamiento del problema de mínimos cuadrados. Además, la elección del parámetro podría ser relevante para determinar el condicionamiento del problema de mínimos cuadrados, como se analiza a continuación. [3]
Relajación
El algoritmo se puede modificar introduciendo un parámetro de relajación variable (o parámetro de mezcla) . [1] [3] [4] En cada paso, calcule la nueva iteración como La elección de es crucial para las propiedades de convergencia del método; en principio, podría variar en cada iteración, aunque a menudo se elige que sea constante. [4]
Elección demetro
El parámetro determina cuánta información de iteraciones anteriores se utiliza para calcular la nueva iteración . Por un lado, si se elige demasiado pequeño, se utiliza muy poca información y la convergencia puede ser indeseablemente lenta. Por otro lado, si es demasiado grande, la información de iteraciones anteriores puede conservarse para demasiadas iteraciones posteriores, por lo que nuevamente la convergencia puede ser lenta. [3] Además, la elección de afecta el tamaño del problema de optimización. Un valor demasiado grande de puede empeorar el condicionamiento del problema de mínimos cuadrados y el costo de su solución. [3] En general, el problema particular a resolver determina la mejor elección del parámetro. [3]
Elección demetroa
Con respecto al algoritmo descrito anteriormente, la elección de en cada iteración puede modificarse. Una posibilidad es elegir para cada iteración (a veces denominada aceleración de Anderson sin truncamiento). [3] De esta manera, cada nueva iteración se calcula utilizando todas las iteraciones calculadas previamente. Una técnica más sofisticada se basa en elegir de manera que se mantenga un condicionamiento lo suficientemente pequeño para el problema de mínimos cuadrados. [3]
Relaciones con otras clases de métodos
El método de Newton se puede aplicar a la solución de para calcular un punto fijo de con convergencia cuadrática. Sin embargo, dicho método requiere la evaluación de la derivada exacta de , lo que puede ser muy costoso. [4] Aproximar la derivada por medio de diferencias finitas es una alternativa posible, pero requiere múltiples evaluaciones de en cada iteración, lo que nuevamente puede volverse muy costoso. La aceleración de Anderson requiere solo una evaluación de la función por iteración y ninguna evaluación de su derivada. Por otro lado, la convergencia de una secuencia de puntos fijos acelerada por Anderson sigue siendo lineal en general. [5]
Varios autores han señalado similitudes entre el esquema de aceleración de Anderson y otros métodos para la solución de ecuaciones no lineales. En particular:
- Eyert [6] y Fang y Saad [4] interpretaron el algoritmo dentro de la clase de métodos cuasi-Newton y multisecante, que generalizan el conocido método secante , para la solución de la ecuación no lineal ; también mostraron cómo el esquema puede verse como un método en la clase Broyden ; [7]
- Walker y Ni [3] [8] demostraron que el esquema de aceleración de Anderson es equivalente al método GMRES en el caso de problemas lineales (es decir, el problema de encontrar una solución para alguna matriz cuadrada ), y por lo tanto puede verse como una generalización de GMRES al caso no lineal; Washio y Oosterlee encontraron un resultado similar. [9]
Además, otros autores han desarrollado independientemente varios métodos equivalentes o casi equivalentes, [9] [10] [11] [12] [13] aunque con mayor frecuencia en el contexto de alguna aplicación específica de interés y no como un método general para ecuaciones de punto fijo.
Ejemplo de implementación de MATLAB
El siguiente es un ejemplo de implementación en lenguaje MATLAB del esquema de aceleración de Anderson para hallar el punto fijo de la función . Observe que:
- El problema de optimización se resolvió en la forma utilizando descomposición QR;
- El cálculo de la descomposición QR es subóptimo: de hecho, en cada iteración se agrega una sola columna a la matriz , y posiblemente se elimina una sola columna; este hecho se puede aprovechar para actualizar eficientemente la descomposición QR con menos esfuerzo computacional; [14]
- El algoritmo se puede hacer más eficiente en el uso de la memoria almacenando sólo las últimas iteraciones y residuos, si no se necesita todo el vector de iteraciones;
- El código se generaliza directamente al caso de un valor vectorial .
f = @( x ) sin ( x ) + atan ( x ); % Función cuyo punto fijo se va a calcular. x0 = 1 ; % Estimación inicial.
k_max = 100 ; % Número máximo de iteraciones. tol_res = 1e-6 ; % Tolerancia en el residuo. m = 3 ; % Parámetro m.
x = [ x0 , f ( x0 )]; % Vector de iteraciones x. g = f ( x ) - x ; % Vector de residuos.
G_k = g ( 2 ) - g ( 1 ); % Matriz de incrementos en residuos. X_k = x ( 2 ) - x ( 1 ); % Matriz de incrementos en x.
k = 2 ; mientras k < k_max && abs ( g ( k )) > tol_res m_k = min ( k , m ); % Resolver el problema de optimización por descomposición QR. [ Q , R ] = qr ( G_k ); gamma_k = R \ ( Q ' * g ( k )); % Calcular nueva iteración y nuevo residuo. x ( k + 1 ) = x ( k ) + g ( k ) - ( X_k + G_k ) * gamma_k ; g ( k + 1 ) = f ( x ( k + 1 )) - x ( k + 1 ); % Actualizar matrices de incremento con nuevos elementos. X_k = [ X_k , x ( k + 1 ) - x ( k )]; G_k = [ G_k , g ( k + 1 ) - g ( k )]; n = tamaño ( X_k , 2 ); si n > m_k X_k = X_k (:, n - m_k + 1 : fin ); G_k = G_k (:, n - m_k + 1 : fin ); fin k = k + 1 ; fin
% Imprime el resultado: Punto fijo calculado 2.013444 después de 9 iteraciones
fprintf ( "Punto fijo calculado %f después de %d iteraciones\n" , x ( fin ), k );
Véase también
Notas
- ^ Esta formulación no es la misma que la dada por el autor original; [1] es una formulación equivalente, más explícita, dada por Walker y Ni. [3]
Referencias
- ^ abcd Anderson, Donald G. (octubre de 1965). "Procedimientos iterativos para ecuaciones integrales no lineales". Revista de la ACM . 12 (4): 547–560. doi : 10.1145/321296.321305 .
- ^ abcd Quarteroni, Alfio ; Sacco, Ricardo; Saleri, Fausto (30 de noviembre de 2010). Matemáticas numéricas (2ª ed.). Saltador. ISBN 978-3-540-49809-4.
- ^ abcdefghijklmn Walker, Homer F.; Ni, Peng (enero de 2011). "Aceleración de Anderson para iteraciones de punto fijo". Revista SIAM sobre análisis numérico . 49 (4): 1715–1735. CiteSeerX 10.1.1.722.2636 . doi :10.1137/10078356X.
- ^ abcdefgh Fang, Haw-ren; Saad, Yousef (marzo de 2009). "Dos clases de métodos multisecantes para aceleración no lineal". Álgebra lineal numérica con aplicaciones . 16 (3): 197–221. doi :10.1002/nla.617.
- ^ Evans, Claire; Pollock, Sara; Rebholz, Leo G.; Xiao, Mengying (20 de febrero de 2020). "Una prueba de que la aceleración de Anderson mejora la tasa de convergencia en métodos de punto fijo que convergen linealmente (pero no en aquellos que convergen cuadráticamente)". Revista SIAM sobre análisis numérico . 58 (1): 788–810. arXiv : 1810.08455 . doi :10.1137/19M1245384.
- ^ Eyert, V. (marzo de 1996). "Un estudio comparativo sobre métodos para la aceleración de la convergencia de secuencias vectoriales iterativas". Journal of Computational Physics . 124 (2): 271–285. doi :10.1006/jcph.1996.0059.
- ^ Broyden, CG (1965). "Una clase de métodos para resolver ecuaciones simultáneas no lineales". Matemáticas de la computación . 19 (92): 577–593. doi : 10.1090/S0025-5718-1965-0198670-6 .
- ^ Ni, Peng (noviembre de 2009). Aceleración de Anderson de iteración de punto fijo con aplicaciones a cálculos de estructura electrónica (PhD).
- ^ ab Oosterlee, CW; Washio, T. (enero de 2000). "Aceleración del subespacio de Krylov de una multimalla no lineal con aplicación a flujos recirculantes". Revista SIAM de informática científica . 21 (5): 1670–1690. doi :10.1137/S1064827598338093.
- ^ Pulay, Péter (julio de 1980). "Aceleración de la convergencia de secuencias iterativas. El caso de la iteración scf". Chemical Physics Letters . 73 (2): 393–398. doi :10.1016/0009-2614(80)80396-4.
- ^ Pulay, P. (1982). "Aceleración de convergencia de SCF mejorada". Revista de química computacional . 3 (4): 556–560. doi :10.1002/jcc.540030413.
- ^ Carlson, Neil N.; Miller, Keith (mayo de 1998). "Diseño y aplicación de un código de elementos finitos móviles ponderado por gradiente I: en una dimensión". Revista SIAM de informática científica . 19 (3): 728–765. doi :10.1137/S106482759426955X.
- ^ Miller, Keith (noviembre de 2005). "Krylov no lineal y nodos móviles en el método de líneas". Revista de Matemática Computacional y Aplicada . 183 (2): 275–287. doi :10.1016/j.cam.2004.12.032.
- ^ Daniel, JW; Gragg, WB; Kaufman, L.; Stewart, GW (octubre de 1976). "Reortogonalización y algoritmos estables para actualizar la factorización $QR$ de Gram-Schmidt". Matemáticas de la computación . 30 (136): 772. doi : 10.1090/S0025-5718-1976-0431641-8 .