Articulo de referencia

Método del gradiente conjugado al cuadrado

En álgebra lineal numérica , el método del gradiente conjugado al cuadrado (CGS) es un algoritmo iterativo para resolver sistemas de ecuaciones lineales de la forma A incógnita ...

En álgebra lineal numérica , el método del gradiente conjugado al cuadrado (CGS) es un algoritmo iterativo para resolver sistemas de ecuaciones lineales de la formaAincógnita=b{\displaystyle A{\mathbf {x}}={\mathbf {b}}}, particularmente en casos donde se calcula la transpuestaAT{\displaystyle A^{T}}es poco práctico. [ 1 ] El método CGS se desarrolló como una mejora del método del gradiente biconjugado . [ 2 ] [ 3 ] [ 4 ]

Fondo

Un sistema de ecuaciones linealesAincógnita=b{\displaystyle A{\mathbf {x}}={\mathbf {b}}}consta de una matriz conocidaA{\displaystyle A}y un vector conocidob{\displaystyle {\mathbf {b}}}Resolver el sistema consiste en encontrar el valor del vector desconocido.incógnita{\displaystyle {\mathbf {x}}}. [ 3 ] [ 5 ] Un método directo para resolver un sistema de ecuaciones lineales es tomar la inversa de la matrizA{\displaystyle A}, luego calcularincógnita=A1b{\displaystyle {\mathbf {x}}=A^{-1}{\mathbf {b}}}Sin embargo, calcular la inversa es computacionalmente costoso. Por lo tanto, se suelen utilizar métodos iterativos. Los métodos iterativos comienzan con una suposición.incógnita(0){\displaystyle {\mathbf {x}}^{(0)}}y en cada iteración la estimación mejora. Una vez que la diferencia entre estimaciones sucesivas es suficientemente pequeña, el método ha convergido a una solución. [ 6 ] [ 7 ]

Al igual que el método del gradiente conjugado , el método del gradiente biconjugado y otros métodos iterativos similares para resolver sistemas de ecuaciones lineales, el método CGS puede utilizarse para encontrar soluciones a problemas de optimización multivariable , como el análisis de flujo de potencia , la optimización de hiperparámetros y el reconocimiento facial . [ 8 ]

Algoritmo

El algoritmo es el siguiente: [ 9 ]

  1. Elige una suposición inicialincógnita(0){\displaystyle {\mathbf {x}}^{(0)}}
  2. Calcular el residuor(0)=bAincógnita(0){\displaystyle {\mathbf {r}}^{(0)}={\mathbf {b}}-A{\mathbf {x}}^{(0)}}
  3. Elegirr~=r(0){\displaystyle {\tilde {\mathbf {r}}}={\mathbf {r}}^{(0)}}
  4. Parai=1,2,3,{\displaystyle i=1,2,3,\dots }hacer:
    1. ρ(i1)=r~Tr(i1){\displaystyle \rho ^{(i-1)}={\tilde {\mathbf {r}}}^{T}{\mathbf {r}}^{(i-1)}}
    2. Siρ(i1)=0{\displaystyle \rho ^{(i-1)}=0}El método falla.
    3. Sii=1{\displaystyle i=1}:
      1. pag(1)=(1)=r(0){\displaystyle {\mathbf {p}}^{(1)}={\mathbf {u}}^{(1)}={\mathbf {r}}^{(0)}}
    4. Demás:
      1. β(i1)=ρ(i1)/ρ(i2){\displaystyle \beta ^{(i-1)}=\rho ^{(i-1)}/\rho ^{(i-2)}}
      2. (i)=r(i1)+βi1q(i1){\displaystyle {\mathbf {u}}^{(i)}={\mathbf {r}}^{(i-1)}+\beta _{i-1}{\mathbf {q}}^{(i-1)}}
      3. pag(i)=(i)+β(i1)(q(i1)+β(i1)pag(i1)){\displaystyle {\mathbf {p}}^{(i)}={\mathbf {u}}^{(i)}+\beta ^{(i-1)}({\mathbf {q}}^{(i-1)}+\beta ^{(i-1)}{\mathbf {p}}^{(i-1)})}
    5. ResolverMETROpag^=pag(i){\displaystyle M{\hat {\mathbf {p}}}={\mathbf {p}}^{(i)}}, dóndeMETRO{\displaystyle M}es un preacondicionador.
    6. v^=Apag^{\displaystyle {\hat {\mathbf {v}}}=A{\hat {\mathbf {p}}}}
    7. α(i)=ρ(i1)/r~Tv^{\displaystyle \alpha ^{(i)}=\rho ^{(i-1)}/{\tilde {\mathbf {r}}}^{T}{\hat {\mathbf {v}}}}
    8. q(i)=(i)α(i)v^{\displaystyle {\mathbf {q}}^{(i)}={\mathbf {u}}^{(i)}-\alpha ^{(i)}{\hat {\mathbf {v}}}}
    9. ResolverMETRO^=(i)+q(i){\displaystyle M{\hat {\mathbf {u}}}={\mathbf {u}}^{(i)}+{\mathbf {q}}^{(i)}}
    10. incógnita(i)=incógnita(i1)+α(i)^{\displaystyle {\mathbf {x}}^{(i)}={\mathbf {x}}^{(i-1)}+\alpha ^{(i)}{\hat {\mathbf {u}}}}
    11. q^=A^{\displaystyle {\hat {\mathbf {q}}}=A{\hat {\mathbf {u}}}}
    12. r(i)=r(i1)α(i)q^{\displaystyle {\mathbf {r}}^{(i)}={\mathbf {r}}^{(i-1)}-\alpha ^{(i)}{\hat {\mathbf {q}}}}
    13. Comprueba la convergencia: si hay convergencia, finaliza el bucle y devuelve el resultado.

Véase también

Referencias

  1. Noel Black; Shirley Moore. "Método del gradiente conjugado al cuadrado" . Wolfram Mathworld .
  2. Mathworks . "cgs" . Documentación de Matlab .
  3. 1 2 Henk van der Vorst (2003). "Gradientes biconjugados". Métodos iterativos de Krylov para grandes sistemas lineales . Cambridge University Press. ISBN 0-521-81828-1.
  4. Peter Sonneveld (1989). "CGS, un solucionador rápido de tipo Lanczos para sistemas lineales no simétricos" . SIAM Journal on Scientific and Statistical Computing . 10 (1): 36– 52. doi : 10.1137/0910004 . ProQuest 921988114 . 
  5. "Ecuaciones lineales" (PDF) , Análisis matricial y álgebra lineal aplicada , Filadelfia, PA: SIAM, 2000, págs. 1–40 , doi : 10.1137/1.9780898719512.ch1 (inactivo el 11 de julio de 2025), ISBN  978-0-89871-454-8Archivado desde el original (PDF) el 10/06/2004 , consultado el 18/12/2023.{{citation}}: CS1 maint: DOI inactivo desde julio de 2025 ( enlace )
  6. "Métodos iterativos para sistemas lineales" . Mathworks .
  7. Jean Gallier. "Métodos iterativos para resolver sistemas lineales" (PDF) . UPenn .
  8. Alexandra Roberts; Anye Shi; Yue Sun. "Métodos de gradiente conjugado" . Universidad de Cornell . Consultado el 26 de diciembre de 2023 .
  9. R. Barrett; M. Berry; TF Chan; J. Demmel; J. Donato; J. Dongarra; V. Eijkhout; R. Pozo; C. Romine; H. Van der Vorst (1994). Plantillas para la solución de sistemas lineales: bloques de construcción para métodos iterativos, 2.ª edición . SIAM.