En álgebra lineal numérica , el método del gradiente biconjugado estabilizado , a menudo abreviado como BiCGSTAB , es un método iterativo desarrollado por HA van der Vorst para la solución numérica de sistemas lineales no simétricos . Es una variante del método del gradiente biconjugado (BiCG) y presenta una convergencia más rápida y suave que el BiCG original, así como que otras variantes como el método del gradiente conjugado al cuadrado (CGS). Es un método de subespacio de Krylov . A diferencia del método BiCG original, no requiere la multiplicación por la transpuesta de la matriz del sistema.
Pasos algorítmicos
BiCGSTAB sin preacondicionar
En las siguientes secciones, ( x , y ) = x T y denota el producto escalar de vectores. Para resolver un sistema lineal Ax = b , BiCGSTAB comienza con una estimación inicial x 0 y procede de la siguiente manera:
- r 0 = b − Ax 0
- Elija un vector arbitrario r̂ 0 tal que ( r̂ 0 , r 0 ) ≠ 0 , por ejemplo, r̂ 0 = r 0
- ρ 0 = ( r̂ 0 , r 0 )
- p 0 = r 0
- Para i = 1, 2, 3, …
- v = Ap i −1
- α = ρ i −1 /( r̂ 0 , v )
- h = x i −1 + α p i −1
- s = r i −1 − α v
- Si h es suficientemente preciso, es decir, si s es suficientemente pequeño, entonces establezca x i = h y salga.
- t = Como
- ω = ( t , s )/( t , t )
- x i = h + ω s
- r i = s − ω t
- Si x i es suficientemente preciso, es decir, si r i es suficientemente pequeño, entonces salir
- ρ i = ( r̂ 0 , r i )
- β = ( ρ yo / ρ yo −1 )( α / ω )
- p i = r i + β ( p i −1 − ω v )
En algunos casos, elegir el vector r̂ 0 aleatoriamente mejora la estabilidad numérica. [ 1 ]
BiCGSTAB preacondicionado
Los precondicionadores se utilizan habitualmente para acelerar la convergencia de los métodos iterativos. Para resolver un sistema lineal Ax = b con un precondicionador K = K 1 K 2 ≈ A , el método BiCGSTAB precondicionado comienza con una estimación inicial x 0 y procede de la siguiente manera:
- r 0 = b − Ax 0
- Elija un vector arbitrario r̂ 0 tal que ( r̂ 0 , r 0 ) ≠ 0 , por ejemplo, r̂ 0 = r 0
- ρ 0 = ( r̂ 0 , r 0 )
- p 0 = r 0
- Para i = 1, 2, 3, …
- y = K −1 2 K −1 1 p i −1
- v = Ay
- α = ρ i −1 /( r̂ 0 , v )
- h = x i −1 + α y
- s = r i −1 − α v
- Si h es suficientemente preciso, entonces x i = h y salir.
- z = K −1 2 K −1 1 s
- t = Az
- ω = ( K −1 1 t , K −1 1 s )/( K −1 1 t , K −1 1 t )
- x i = h + ω z
- r i = s − ω t
- Si x i es suficientemente preciso, entonces salir
- ρ i = ( r̂ 0 , r i )
- β = ( ρ yo / ρ yo −1 )( α / ω )
- p i = r i + β ( p i −1 − ω v )
Esta formulación es equivalente a aplicar BiCGSTAB sin preacondicionamiento al sistema explícitamente preacondicionado.
- Ãx̃ = b̃
con à = K −1 1 A K −1 2 , x̃ = K 2 x y b̃ = K −1 1 b . En otras palabras, con esta formulación son posibles tanto el precondicionamiento izquierdo como el derecho.
Derivación
BiCG en forma polinómica
En BiCG, las direcciones de búsqueda p i y p̂ i y los residuos r i y r̂ i se actualizan utilizando las siguientes relaciones de recurrencia :
- p i = r i −1 + β i p i −1 ,
- p̂ yo = r̂ yo −1 + β yo p̂ yo −1 ,
- r i = r i −1 − α i Ap i ,
- r̂ yo = r̂ yo −1 − α yo A T p̂ yo .
Las constantes α i y β i se eligen de la siguiente manera:
- α yo = ρ yo /( p̂ yo , Ap yo ) ,
- β i = ρ i / ρ i −1
donde ρ i = ( r̂ i −1 , r i −1 ) de modo que los residuos y las direcciones de búsqueda satisfacen la biorthogonalidad y la biconjugación, respectivamente, es decir, para i ≠ j ,
- ( r̂ i , r j ) = 0 ,
- ( p̂ i , Ap j ) = 0 .
Es sencillo demostrar que
- r i = P i ( A ) r 0 ,
- r̂ i = P i ( A T ) r̂ 0 ,
- p i +1 = T i ( A ) r 0 ,
- p̂ i +1 = T i ( A T ) r̂ 0
donde P i ( A ) y T i ( A ) son polinomios de grado i en A . Estos polinomios satisfacen las siguientes relaciones de recurrencia:
- P i ( A ) = P i −1 ( A ) − α i A T i −1 ( A ) ,
- T i ( A ) = P i ( A ) + β i +1 T i −1 ( A ) .
Derivación de BiCGSTAB a partir de BiCG
No es necesario realizar un seguimiento explícito de los residuos y las direcciones de búsqueda de BiCG. En otras palabras, las iteraciones de BiCG se pueden realizar implícitamente. En BiCGSTAB, se desea tener relaciones de recurrencia para
- r̃ i = Q i ( A ) P i ( A ) r 0
donde Q i ( A ) = ( I − ω 1 A )( I − ω 2 A )⋯( I − ω i A ) con constantes adecuadas ω j en lugar de r i = P i ( A ) r 0 con la esperanza de que Q i ( A ) permita una convergencia más rápida y suave en r̃ i que r i .
De las relaciones de recurrencia para P i ( A ) y T i ( A ) y la definición de Q i ( A ) se deduce que
- Q i ( A ) P i ( A ) r 0 = ( I − ω i A )( Q i −1 ( A ) P i −1 ( A ) r 0 − α i A Q i −1 ( A ) T i −1 ( A ) r 0 ) ,
lo cual implica la necesidad de una relación de recurrencia para Q i ( A ) T i ( A ) r 0 . Esto también se puede derivar de las relaciones BiCG:
- Q i ( A ) T i ( A ) r 0 = Q i ( A ) P i ( A ) r 0 + β i +1 ( I − ω i A ) Q i −1 ( A ) T i −1 ( A ) r 0 .
De forma similar a la definición de r̃ i , BiCGSTAB define
- p̃ i +1 = Q i ( A ) T i ( A ) r 0 .
Escritas en forma vectorial, las relaciones de recurrencia para p̃ i y r̃ i son:
- p̃ i = r̃ i −1 + β i ( I − ω i −1 A ) p̃ i −1 ,
- r̃ i = ( I − ω i A )( r̃ i −1 − α i A p̃ i ).
Para derivar una relación de recurrencia para x i , definimos
- s i = r̃ i −1 − α i A p̃ i .
La relación de recurrencia para r̃ i se puede escribir entonces como
- r̃ i = r̃ i −1 − α i A p̃ i − ω i As i ,
que corresponde a
- x i = x i −1 + α i p̃ i + ω i s i .
Determinación de las constantes de BiCGSTAB
Ahora queda determinar las constantes BiCG α i y β i y elegir un ω i adecuado .
En BiCG, β i = ρ i / ρ i −1 con
- ρ i = ( r̂ i −1 , r i −1 ) = ( P i −1 ( A T ) r̂ 0 , P i −1 ( A ) r 0 ) .
Dado que BiCGSTAB no realiza un seguimiento explícito de r̂ i o r i , ρ i no se puede calcular inmediatamente a partir de esta fórmula. Sin embargo, se puede relacionar con el escalar.
- ρ̃ i = ( Q i −1 ( A T ) r̂ 0 , P i −1 ( A ) r 0 ) = ( r̂ 0 , Q i −1 ( A ) P i −1 ( A ) r 0 ) = ( r̂ 0 , r i −1 ) .
Debido a la biorthogonalidad, r i −1 = P i −1 ( A ) r 0 es ortogonal a U i −2 ( A T ) r̂ 0 donde U i −2 ( A T ) es cualquier polinomio de grado i − 2 en A T . Por lo tanto, solo los términos de orden más alto de P i −1 ( A T ) y Q i −1 ( A T ) importan en los productos escalares ( P i −1 ( A T ) r̂ 0 , P i −1 ( A ) r 0 ) y ( Q i −1 ( A T ) r̂ 0 , P i −1 ( A ) r 0 ) . Los coeficientes principales de P i −1 ( A T ) y Q i −1 ( A T ) son (−1) i −1 α 1 α 2 ⋯ α i −1 y (−1) i −1 ω 1 ω 2 ⋯ ω i −1 , respectivamente. De ello se deduce que
- ρ yo = ( α 1 / ω 1 )( α 2 / ω 2 )⋯( α yo −1 / ω yo −1 ) ρ̃ yo ,
y por lo tanto
- β yo = ρ yo / ρ yo −1 = ( ρ̃ yo / ρ̃ yo −1 )( α yo −1 / ω yo −1 ) .
De manera similar, se puede derivar una fórmula simple para α i . En BiCG,
- α i = ρ i /( p̂ i , Ap i ) = ( P i −1 ( A T ) r̂ 0 , P i −1 ( A ) r 0 )/( T i −1 ( A T ) r̂ 0 , A T i −1 ( A ) r 0 ) .
De forma similar al caso anterior, solo los términos de orden superior de P i −1 ( A T ) y T i −1 ( A T ) importan en los productos escalares gracias a la biorthogonalidad y la biconjugación. Sucede que P i −1 ( A T ) y T i −1 ( A T ) tienen el mismo coeficiente principal. Por lo tanto, pueden ser reemplazados simultáneamente con Q i −1 ( A T ) en la fórmula, lo que lleva a
- α i = ( Q i −1 ( A T ) r̂ 0 , P i −1 ( A ) r 0 )/( Q i −1 ( A T ) r̂ 0 , A T i −1 ( A ) r 0 ) = ρ̃ i /( r̂ 0 , A Q i −1 ( A ) T i −1 ( A ) r 0 ) = ρ̃ i /( r̂ 0 , Ap̃ i ) .
Finalmente, BiCGSTAB selecciona ω i para minimizar r̃ i = ( I − ω i A ) s i en norma 2 como función de ω i . Esto se logra cuando
- (( I − ω i A ) s i , As i ) = 0 ,
dando el valor óptimo
- ω i = ( As i , s i )/( As i , As i ) .
Generalización
BiCGSTAB puede considerarse una combinación de BiCG y GMRES, donde cada paso de BiCG va seguido de un paso de GMRES( 1 ) (es decir, GMRES se reinicia en cada paso) para corregir el comportamiento de convergencia irregular de CGS, como una mejora del cual se desarrolló BiCGSTAB. Sin embargo, debido al uso de polinomios residuales mínimos de grado uno, dicha corrección puede no ser efectiva si la matriz A tiene pares propios complejos grandes. En tales casos, es probable que BiCGSTAB se estanque, como lo confirman los experimentos numéricos.
Es de esperar que los polinomios residuales mínimos de grado superior puedan manejar mejor esta situación. Esto da lugar a algoritmos como BiCGSTAB2.y el más general BiCGSTAB( l ). En BiCGSTAB( l ), un paso GMRES( l ) sigue a cada l pasos BiCG. BiCGSTAB2 es equivalente a BiCGSTAB( l ) con l = 2 .
Véase también
Referencias
- ↑ Schoutrop, Chris; Boonkkamp, Jan ten Thije; Dijk, Jan van (julio de 2022). "Investigación de la fiabilidad de los solucionadores BiCGStab e IDR para la ecuación de advección-difusión-reacción" . Communications in Computational Physics . 32 (1): 156–188 . doi : 10.4208/cicp.oa-2021-0182 . ISSN 1815-2406 .
- Van der Vorst, HA (1992). "Bi-CGSTAB: Una variante rápida y de convergencia suave de Bi-CG para la solución de sistemas lineales no simétricos". SIAM J. Sci. Stat. Comput. 13 (2): 631– 644. doi : 10.1137/0913035 . hdl : 10338.dmlcz/104566 .
- Saad, Y. (2003). "§7.4.2 BICGSTAB" . Métodos iterativos para sistemas lineales dispersos (2.ª ed.). SIAM. págs. 231–234 . ISBN 978-0-89871-534-7.
- ^ Gutknecht, MH (1993). "Variantes de BICGSTAB para matrices con espectro complejo". SIAM J. Sci. Comput. 14 (5): 1020– 1033. doi : 10.1137/0914062 .
- ^ Sleijpen, GLG; Fokkema, DR (noviembre de 1993). "BiCGstab( l ) para ecuaciones lineales que involucran matrices asimétricas con espectro complejo" (PDF) . Electronic Transactions on Numerical Analysis . 1. Kent, OH: Kent State University: 11–32 . ISSN 1068-9613 .
- Álgebra lineal numérica
- Métodos de gradiente