stringtranslate.com

Método del gradiente conjugado

Comparación de la convergencia del descenso de gradiente con tamaño de paso óptimo (en verde) y vector conjugado (en rojo) para minimizar una función cuadrática asociada con un sistema lineal dado. El gradiente conjugado, suponiendo una aritmética exacta, converge en un máximo de n pasos, donde n es el tamaño de la matriz del sistema (aquí n  = 2).

En matemáticas , el método del gradiente conjugado es un algoritmo para la solución numérica de sistemas particulares de ecuaciones lineales , es decir, aquellos cuya matriz es semidefinida positiva . El método del gradiente conjugado se implementa a menudo como un algoritmo iterativo , aplicable a sistemas dispersos que son demasiado grandes para ser manejados por una implementación directa u otros métodos directos como la descomposición de Cholesky . Los sistemas dispersos grandes a menudo surgen al resolver numéricamente ecuaciones diferenciales parciales o problemas de optimización.

El método del gradiente conjugado también se puede utilizar para resolver problemas de optimización sin restricciones, como la minimización de energía . Se atribuye comúnmente a Magnus Hestenes y Eduard Stiefel , [1] [2] quienes lo programaron en el Z4 , [3] y lo investigaron exhaustivamente. [4] [5]

El método del gradiente biconjugado proporciona una generalización para matrices no simétricas. Varios métodos de gradiente conjugado no lineal buscan mínimos de problemas de optimización no lineal.

Descripción del problema abordado por gradientes conjugados

Supongamos que queremos resolver el sistema de ecuaciones lineales

para el vector , donde la matriz conocida es simétrica (es decir, A T = A ), definida positiva (es decir, x T Ax > 0 para todos los vectores distintos de cero en R n ), y real , y también se conoce. Denotamos la solución única de este sistema por .

La derivación como método directo

El método del gradiente conjugado se puede derivar desde varias perspectivas diferentes, incluida la especialización del método de dirección conjugada para la optimización y la variación de la iteración de Arnoldi / Lanczos para problemas de valores propios . A pesar de las diferencias en sus enfoques, estas derivaciones comparten un tema común: probar la ortogonalidad de los residuos y la conjugación de las direcciones de búsqueda. Estas dos propiedades son cruciales para desarrollar la conocida formulación sucinta del método.

Decimos que dos vectores distintos de cero u y v son conjugados (con respecto a ) si

Como es simétrico y definido positivo, el lado izquierdo define un producto interno

Dos vectores son conjugados si y sólo si son ortogonales respecto de este producto interno. Ser conjugado es una relación simétrica: si es conjugado a , entonces es conjugado a . Supóngase que

es un conjunto de vectores mutuamente conjugados con respecto a , es decir, para todo . Entonces forma una base para , y podemos expresar la solución de en esta base:

Multiplicando por la izquierda el problema con el vector obtenemos

y entonces

Esto proporciona el siguiente método [4] para resolver la ecuación Ax = b : encontrar una secuencia de direcciones conjugadas y luego calcular los coeficientes .

Como método iterativo

Si elegimos los vectores conjugados con cuidado, es posible que no los necesitemos todos para obtener una buena aproximación a la solución . Por lo tanto, queremos considerar el método del gradiente conjugado como un método iterativo. Esto también nos permite resolver aproximadamente sistemas donde n es tan grande que el método directo tomaría demasiado tiempo.

Denotamos la estimación inicial para x por x 0 (podemos suponer sin pérdida de generalidad que x 0 = 0 , de lo contrario, consideremos el sistema Az = bAx 0 en su lugar). Comenzando con x 0 , buscamos la solución y en cada iteración necesitamos una métrica que nos diga si estamos más cerca de la solución x (que nos es desconocida). Esta métrica proviene del hecho de que la solución x es también el minimizador único de la siguiente función cuadrática

La existencia de un minimizador único es evidente ya que su matriz hessiana de segundas derivadas es simétrica positiva-definida.

y que el minimizador (usar D f ( x )=0) resuelve el problema inicial se deduce de su primera derivada

Esto sugiere tomar el primer vector base p 0 como el negativo del gradiente de f en x = x 0 . El gradiente de f es igual a Axb . Comenzando con una estimación inicial x 0 , esto significa que tomamos p 0 = bAx 0 . Los otros vectores en la base serán conjugados al gradiente, de ahí el nombre de método de gradiente conjugado . Tenga en cuenta que p 0 también es el residuo proporcionado por este paso inicial del algoritmo.

Sea r k el residuo en el k -ésimo paso:

Como se observó anteriormente, es el gradiente negativo de en , por lo que el método de descenso de gradiente requeriría moverse en la dirección r k . Aquí, sin embargo, insistimos en que las direcciones deben ser conjugadas entre sí. Una forma práctica de hacer cumplir esto es requerir que la siguiente dirección de búsqueda se construya a partir del residuo actual y todas las direcciones de búsqueda anteriores. La restricción de conjugación es una restricción de tipo ortonormal y, por lo tanto, el algoritmo puede verse como un ejemplo de ortonormalización de Gram-Schmidt . Esto da la siguiente expresión:

(ver la imagen en la parte superior del artículo para ver el efecto de la restricción de conjugación en la convergencia). Siguiendo esta dirección, la siguiente ubicación óptima está dada por

con

donde la última igualdad se sigue de la definición de . La expresión para se puede derivar si se sustituye la expresión para x k +1 en f y se minimiza con respecto a

El algoritmo resultante

El algoritmo anterior proporciona la explicación más sencilla del método del gradiente conjugado. Aparentemente, el algoritmo tal como se indica requiere el almacenamiento de todas las direcciones de búsqueda anteriores y vectores de residuos, así como muchas multiplicaciones de matriz-vector, y por lo tanto puede ser computacionalmente costoso. Sin embargo, un análisis más detallado del algoritmo muestra que es ortogonal a , es decir , para i ≠ j. Y es -ortogonal a , es decir , para . Esto se puede considerar que a medida que avanza el algoritmo, y abarcan el mismo subespacio de Krylov . Donde forman la base ortogonal con respecto al producto interno estándar, y forman la base ortogonal con respecto al producto interno inducido por . Por lo tanto, se puede considerar como la proyección de sobre el subespacio de Krylov.

Es decir, si el método CG comienza con , entonces [6] A continuación se detalla el algoritmo para resolver donde es una matriz real, simétrica y definida positiva. El vector de entrada puede ser una solución inicial aproximada o 0 . Es una formulación diferente del procedimiento exacto descrito anteriormente.

Este es el algoritmo más utilizado. La misma fórmula para β k también se utiliza en el método de gradiente conjugado no lineal de Fletcher-Reeves .

Reinicios

Observamos que se calcula mediante el método de descenso de gradiente aplicado a . La configuración haría que se calcule mediante el método de descenso de gradiente de manera similar a partir de , es decir, se puede utilizar como una implementación simple de un reinicio de las iteraciones de gradiente conjugado. [4] Los reinicios podrían ralentizar la convergencia, pero pueden mejorar la estabilidad si el método de gradiente conjugado se comporta mal, por ejemplo, debido a un error de redondeo .

Cálculo de residuos explícitos

Las fórmulas y , que se cumplen en aritmética exacta, hacen que las fórmulas y sean matemáticamente equivalentes. La primera se utiliza en el algoritmo para evitar una multiplicación adicional por ya que el vector ya está calculado para evaluar . La última puede ser más precisa, sustituyendo el cálculo explícito por el implícito por la recursión sujeta a la acumulación de error de redondeo , y por lo tanto se recomienda para una evaluación ocasional. [7]

Normalmente, se utiliza una norma del residuo como criterio de parada. La norma del residuo explícito proporciona un nivel garantizado de precisión tanto en aritmética exacta como en presencia de errores de redondeo , donde la convergencia se estanca naturalmente. Por el contrario, se sabe que el residuo implícito se vuelve cada vez más pequeño en amplitud muy por debajo del nivel de errores de redondeo y, por lo tanto, no se puede utilizar para determinar el estancamiento de la convergencia.

Cálculo de alfa y beta

En el algoritmo, se elige α k de modo que sea ortogonal a . El denominador se simplifica a partir de

ya que . El β k se elige de modo que sea conjugado a . Inicialmente, β k es

usando

y equivalentemente

El numerador de β k se reescribe como

porque y son ortogonales por diseño. El denominador se reescribe como

Utilizando que las direcciones de búsqueda p k están conjugadas y nuevamente que los residuos son ortogonales, esto da el β en el algoritmo después de cancelar α k .

Código de ejemplo enJulia (lenguaje de programación)

""" gradiente_conjugado!(A, b, x)Devuelve la solución a `A * x = b` usando el método de gradiente conjugado."""función conjugate_gradient! (  A :: MatrizAbstracta , b :: VectorAbstracto , x :: VectorAbstracto ; tol = eps ( eltype ( b ))   ) # Inicializar vector residual residuo = b - A * x       # Inicializar el vector de dirección de búsqueda direccion_de_busqueda = copiar ( residual )   # Calcular la norma residual cuadrática inicialnorma ( x ) = sqrt ( suma ( x .^ 2 ))   old_resid_norm = norma ( residual )   # Iterar hasta la convergencia mientras que old_resid_norm > tol    A_direccion_de_busqueda = A * direccion_de_busqueda     tamaño_de_paso = antigua_norma_resid ^ 2 / ( dirección_de_búsqueda ' * A_dirección_de_búsqueda )       #Actualizar solución @. x = x + tamaño_de_paso * dirección_de_búsqueda        # Actualizar residual @. residual = residual - tamaño_de_paso * A_dirección_de_búsqueda        new_resid_norm = norma ( residual )    # Actualizar vector de dirección de búsqueda @ .direccion_de_busqueda = residual +      ( nueva_norma_residual / antigua_norma_residual ) ^ 2 * dirección_de_búsqueda     # Actualizar la norma residual al cuadrado para la siguiente iteración antigua_norma_resid = nueva_norma_resid   fin devolver x fin

Ejemplo numérico

Consideremos el sistema lineal Ax = b dado por

Realizaremos dos pasos del método del gradiente conjugado comenzando con la estimación inicial

con el fin de encontrar una solución aproximada al sistema.

Solución

Como referencia, la solución exacta es

Nuestro primer paso es calcular el vector residual r 0 asociado a x 0 . Este residual se calcula a partir de la fórmula r 0 = b - Ax 0 , y en nuestro caso es igual a

Dado que esta es la primera iteración, utilizaremos el vector residual r 0 como nuestra dirección de búsqueda inicial p 0 ; el método de selección p k cambiará en iteraciones posteriores.

Ahora calculamos el escalar α 0 usando la relación

Ahora podemos calcular x 1 usando la fórmula

Este resultado completa la primera iteración, y el resultado es una solución aproximada "mejorada" del sistema, x 1 . Ahora podemos continuar y calcular el siguiente vector residual r 1 utilizando la fórmula

Nuestro siguiente paso en el proceso es calcular el escalar β 0 que eventualmente se utilizará para determinar la siguiente dirección de búsqueda p 1 .

Ahora, utilizando este escalar β 0 , podemos calcular la siguiente dirección de búsqueda p 1 utilizando la relación

Ahora calculamos el escalar α 1 utilizando nuestro p 1 recién adquirido y utilizando el mismo método que utilizamos para α 0 .

Finalmente, encontramos x 2 usando el mismo método que usamos para encontrar x 1 .

El resultado, x 2 , es una aproximación "mejor" a la solución del sistema que x 1 y x 0 . Si en este ejemplo se utilizara aritmética exacta en lugar de precisión limitada, entonces teóricamente se habría alcanzado la solución exacta después de n = 2 iteraciones ( siendo n el orden del sistema).

Propiedades de convergencia

El método del gradiente conjugado puede considerarse teóricamente como un método directo, ya que en ausencia de error de redondeo produce la solución exacta después de un número finito de iteraciones, que no es mayor que el tamaño de la matriz. En la práctica, la solución exacta nunca se obtiene ya que el método del gradiente conjugado es inestable con respecto incluso a pequeñas perturbaciones, por ejemplo, la mayoría de las direcciones no son conjugadas en la práctica, debido a una naturaleza degenerativa de la generación de los subespacios de Krylov.

Como método iterativo , el método del gradiente conjugado mejora de manera monótona (en la norma de energía) las aproximaciones a la solución exacta y puede alcanzar la tolerancia requerida después de un número relativamente pequeño (en comparación con el tamaño del problema) de iteraciones. La mejora es típicamente lineal y su velocidad está determinada por el número de condición de la matriz del sistema : cuanto mayor sea, más lenta será la mejora. [8]

Si es grande, el preacondicionamiento se utiliza comúnmente para reemplazar el sistema original por uno que sea más pequeño que , vea a continuación.

Teorema de convergencia

Definir un subconjunto de polinomios como

donde es el conjunto de polinomios de grado máximo .

Sean las aproximaciones iterativas de la solución exacta y definamos los errores como . Ahora, la tasa de convergencia se puede aproximar como [4] [9]

donde denota el espectro y denota el número de condición .

Esto demuestra que las iteraciones son suficientes para reducir el error a cualquier valor .

Nótese que el límite importante tiende a

Este límite muestra una tasa de convergencia más rápida en comparación con los métodos iterativos de Jacobi o Gauss-Seidel que escalan como .

En el teorema de convergencia no se supone ningún error de redondeo, pero el límite de convergencia es comúnmente válido en la práctica, como lo explicó teóricamente [ 5 ] Anne Greenbaum .

Convergencia práctica

Si se inicializa aleatoriamente, la primera etapa de iteraciones suele ser la más rápida, ya que el error se elimina dentro del subespacio de Krylov que inicialmente refleja un número de condición efectiva más pequeño. La segunda etapa de convergencia suele estar bien definida por el límite de convergencia teórico con , pero puede ser superlineal, dependiendo de una distribución del espectro de la matriz y la distribución espectral del error. [5] En la última etapa, se alcanza la precisión más pequeña alcanzable y la convergencia se detiene o el método puede incluso comenzar a divergir. En aplicaciones típicas de computación científica en formato de punto flotante de doble precisión para matrices de grandes tamaños, el método de gradiente conjugado utiliza un criterio de detención con una tolerancia que termina las iteraciones durante la primera o segunda etapa.

El método del gradiente conjugado preacondicionado

En la mayoría de los casos, es necesario un preacondicionamiento para garantizar una convergencia rápida del método de gradiente conjugado. Si es simétrico positivo-definido y tiene un número de condición mejor que , se puede utilizar un método de gradiente conjugado preacondicionado. Tiene la siguiente forma: [10]

repetir
Si r k +1 es suficientemente pequeño , entonces finaliza el bucle de salida si
Fin de repetición
El resultado es x k +1

La formulación anterior es equivalente a aplicar el método del gradiente conjugado regular al sistema preacondicionado [11].

dónde

La descomposición de Cholesky del precondicionador debe utilizarse para mantener la simetría (y la definitividad positiva) del sistema. Sin embargo, no es necesario calcular esta descomposición y es suficiente saber que . Se puede demostrar que tiene el mismo espectro que .

La matriz preacondicionadora M debe ser simétrica, definida positiva y fija, es decir, no puede cambiar de iteración a iteración. Si se viola alguna de estas suposiciones sobre el preacondicionador, el comportamiento del método del gradiente conjugado preacondicionado puede volverse impredecible.

Un ejemplo de un precondicionador comúnmente utilizado es la factorización de Cholesky incompleta . [12]

Utilizando el preacondicionador en la práctica

Es importante tener en cuenta que no queremos invertir la matriz explícitamente para poder usarla en el proceso, ya que invertirla demandaría más tiempo y recursos computacionales que resolver el algoritmo de gradiente conjugado en sí. Como ejemplo, digamos que estamos usando un precondicionador que proviene de una factorización de Cholesky incompleta. La matriz resultante es la matriz triangular inferior y la matriz del precondicionador es:

Luego tenemos que resolver:

Pero:

Entonces:

Tomemos un vector intermedio :

Dado que y y se conocen, y es triangular inferior, resolver para es fácil y computacionalmente económico mediante sustitución hacia adelante . Luego, sustituimos en la ecuación original:

Dado que y son conocidos, y es triangular superior, resolver es fácil y computacionalmente económico mediante sustitución hacia atrás .

Usando este método, no hay necesidad de invertir ni de forma explícita, y aún así obtenemos .

El método del gradiente conjugado preacondicionado flexible

En aplicaciones numéricamente desafiantes, se utilizan preacondicionadores sofisticados, que pueden llevar a un preacondicionamiento variable, que cambia entre iteraciones. Incluso si el preacondicionador es simétrico positivo-definido en cada iteración, el hecho de que pueda cambiar hace que los argumentos anteriores sean inválidos y en pruebas prácticas conduce a una desaceleración significativa de la convergencia del algoritmo presentado anteriormente. Uso de la fórmula de Polak-Ribière

En lugar de la fórmula Fletcher-Reeves

puede mejorar drásticamente la convergencia en este caso. [13] Esta versión del método de gradiente conjugado preacondicionado se puede llamar [14] flexible , ya que permite un preacondicionamiento variable. También se muestra [15] que la versión flexible es robusta incluso si el preacondicionador no es simétrico positivo definido (SPD).

La implementación de la versión flexible requiere almacenar un vector adicional. Para un preacondicionador SPD fijo, ambas fórmulas para β k son equivalentes en aritmética exacta, es decir, sin el error de redondeo .

La explicación matemática del mejor comportamiento de convergencia del método con la fórmula de Polak-Ribière es que el método es localmente óptimo en este caso, en particular, no converge más lento que el método de descenso más pronunciado localmente óptimo. [16]

Vs. el método de descenso más pronunciado óptimo a nivel local

En los métodos de gradiente conjugado originales y preacondicionados, solo es necesario establecer para que sean localmente óptimos, utilizando la búsqueda de línea , métodos de descenso más pronunciado . Con esta sustitución, los vectores p son siempre los mismos que los vectores z , por lo que no es necesario almacenar los vectores p . Por lo tanto, cada iteración de estos métodos de descenso más pronunciado es un poco más barata en comparación con la de los métodos de gradiente conjugado. Sin embargo, estos últimos convergen más rápido, a menos que se utilice un preacondicionador (altamente) variable y/o no SPD , consulte más arriba.

Método de gradiente conjugado como controlador de retroalimentación óptimo para integradores dobles

El método del gradiente conjugado también se puede derivar utilizando la teoría de control óptimo . [17] En este enfoque, el método del gradiente conjugado resulta ser un controlador de retroalimentación óptimo para el sistema de doble integrador . Las cantidades y son ganancias de retroalimentación variables. [17]

Gradiente conjugado en las ecuaciones normales

El método del gradiente conjugado se puede aplicar a una matriz arbitraria de n por m aplicándolo a las ecuaciones normales A T A y al vector del lado derecho A T b , ya que A T A es una matriz semidefinida positiva simétrica para cualquier A . El resultado es un gradiente conjugado en las ecuaciones normales ( CGN o CGNR ).

A T Ax = A T b

Como método iterativo, no es necesario formar A T A explícitamente en la memoria, sino solo realizar las multiplicaciones matriz-vector y matriz-vector transpuesta. Por lo tanto, CGNR es particularmente útil cuando A es una matriz dispersa, ya que estas operaciones suelen ser extremadamente eficientes. Sin embargo, la desventaja de formar las ecuaciones normales es que el número de condición κ( A T A ) es igual a κ 2 ( A ) y, por lo tanto, la tasa de convergencia de CGNR puede ser lenta y la calidad de la solución aproximada puede ser sensible a errores de redondeo. Encontrar un buen preacondicionador es a menudo una parte importante del uso del método CGNR.

Se han propuesto varios algoritmos (por ejemplo, CGLS, LSQR). El algoritmo LSQR supuestamente tiene la mejor estabilidad numérica cuando A está mal condicionado, es decir, A tiene un número de condición grande .

Método de gradiente conjugado para matrices hermíticas complejas

El método del gradiente conjugado con una modificación trivial es extensible para resolver, dada una matriz A y un vector b de valor complejo, el sistema de ecuaciones lineales para el vector x de valor complejo, donde A es hermítica (es decir, A' = A) y la matriz definida positiva , y el símbolo ' denota la transpuesta conjugada . La modificación trivial es simplemente sustituir la transpuesta conjugada por la transpuesta real en todas partes.

Ventajas y desventajas

Las ventajas y desventajas de los métodos de gradiente conjugado se resumen en las notas de clase de Nemirovsky y BenTal. [18] : Sec.7.3 

Un ejemplo patológico

Este ejemplo es de [19] Sea , y defina Dado que es invertible, existe una solución única para . Resolverlo por descenso de gradiente conjugado nos da una convergencia bastante mala: En palabras, durante el proceso de CG, el error crece exponencialmente, hasta que de repente se vuelve cero cuando se encuentra la solución única.

Véase también

Referencias

  1. ^ Hestenes, Magnus R. ; Stiefel, Eduard (diciembre de 1952). "Métodos de gradientes conjugados para resolver sistemas lineales" (PDF) . Revista de investigación de la Oficina Nacional de Normas . 49 (6): 409. doi : 10.6028/jres.049.044 .
  2. ^ Straeter, TA (1971). Sobre la extensión de la clase Davidon-Broyden de rango uno, métodos de minimización cuasi-Newton a un espacio de Hilbert de dimensión infinita con aplicaciones a problemas de control óptimo (tesis doctoral). Universidad Estatal de Carolina del Norte. hdl : 2060/19710026200 – vía NASA Technical Reports Server.
  3. ^ Speiser, Ambros (2004). "Konrad Zuse und die ERMETH: Ein weltweiter Architektur-Vergleich" [Konrad Zuse y ERMETH: una comparación mundial de arquitecturas]. En Hellige, Hans Dieter (ed.). Geschichten der Informatik. Visionen, Paradigmen, Leitmotive (en alemán). Berlín: Springer. pag. 185.ISBN 3-540-00217-0.
  4. ^ abcd Polyak, Boris (1987). Introducción a la optimización.
  5. ^ abc Greenbaum, Anne (1997). Métodos iterativos para resolver sistemas lineales . doi :10.1137/1.9781611970937. ISBN 978-0-89871-396-1.
  6. ^ Paquette, Elliot; Trogdon, Thomas (marzo de 2023). "Universalidad de los algoritmos de gradiente conjugado y MINRES en matrices de covarianza de muestra". Communications on Pure and Applied Mathematics . 76 (5): 1085–1136. arXiv : 2007.00640 . doi :10.1002/cpa.22081. ISSN  0010-3640.
  7. ^ Shewchuk, Jonathan R (1994). Introducción al método del gradiente conjugado sin el dolor agonizante (PDF) .
  8. ^ Saad, Yousef (2003). Métodos iterativos para sistemas lineales dispersos (2.ª ed.). Filadelfia, Pensilvania: Society for Industrial and Applied Mathematics. pp. 195. ISBN 978-0-89871-534-7.
  9. ^ Hackbusch, W. (21 de junio de 2016). Solución iterativa de grandes sistemas dispersos de ecuaciones (2.ª ed.). Suiza: Springer. ISBN 978-3-319-28483-5.OCLC 952572240  .
  10. ^ Barrett, Richard; Berry, Michael; Chan, Tony F.; Demmel, James; Donato, June; Dongarra, Jack; Eijkhout, Victor; Pozo, Roldan; Romine, Charles; van der Vorst, Henk. Plantillas para la solución de sistemas lineales: bloques de construcción para métodos iterativos (PDF) (2.ª ed.). Filadelfia, PA: SIAM. p. 13. Consultado el 31 de marzo de 2020 .
  11. ^ Golub, Gene H.; Van Loan, Charles F. (2013). Cálculos matriciales (4.ª ed.). Johns Hopkins University Press. Sec. 11.5.2. ISBN 978-1-4214-0794-4.
  12. ^ Concus, P.; Golub, GH; Meurant, G. (1985). "Preacondicionamiento de bloques para el método del gradiente conjugado". Revista SIAM sobre computación científica y estadística . 6 (1): 220–252. doi :10.1137/0906018.
  13. ^ Golub, Gene H.; Ye, Qiang (1999). "Método de gradiente conjugado preacondicionado inexacto con iteración interna-externa". Revista SIAM de informática científica . 21 (4): 1305. CiteSeerX 10.1.1.56.1755 . doi :10.1137/S1064827597323415. 
  14. ^ Notay, Yvan (2000). "Gradientes conjugados flexibles". Revista SIAM de informática científica . 22 (4): 1444–1460. CiteSeerX 10.1.1.35.7473 . doi :10.1137/S1064827599362314. 
  15. ^ Bouwmeester, Henricus; Dougherty, Andrew; Knyazev, Andrew V. (2015). "Preacondicionamiento no simétrico para métodos de gradiente conjugado y descenso más pronunciado 1". Procedia Computer Science . 51 : 276–285. arXiv : 1212.6680 . doi : 10.1016/j.procs.2015.05.241 . S2CID  51978658.
  16. ^ Knyazev, Andrew V.; Lashuk, Ilya (2008). "Métodos de descenso más pronunciado y gradiente conjugado con preacondicionamiento variable". Revista SIAM sobre análisis de matrices y aplicaciones . 29 (4): 1267. arXiv : math/0605767 . doi :10.1137/060675290. S2CID  17614913.
  17. ^ ab Ross, IM , "Una teoría de control óptimo para la optimización acelerada", arXiv :1902.09004, 2019.
  18. ^ Nemirovsky y Ben-Tal (2023). "Optimización III: Optimización convexa" (PDF) .
  19. ^ Pennington, Fabian Pedregosa, Courtney Paquette, Tom Trogdon, Jeffrey. "Tutorial de teoría de matrices aleatorias y aprendizaje automático". random-matrix-learning.github.io . Consultado el 5 de diciembre de 2023 .{{cite web}}: CS1 maint: multiple names: authors list (link)

Lectura adicional

Enlaces externos