MÉTODOS SEMI-ITERATIVOS PARA GRANDES SISTEMAS DE ECUACIONES LINEALES: PRECONDICIONAMIENTO J. París, H. Gómez, X. Nogueira,F. Navarrina, I. Colominas, M. Casteleiro GMNI GRUPO DE MÉTODOS NUMÉRICOS EN INGENIERÍA Departmento de Métodos Matemáticos y de Representación E. T. S. de Ingeniería de Caminos, Canales y Puertos Universidade da Coruña, Spain e-mail: jparis@udc.es página web: http://caminos.udc.es/gmni
ÍNDICE Precondicionamiento diagonal Precondicionamiento elemento por elemento (Element-by-element) Otras técnicas de precondicionamiento
Precondicionamiento diagonal (I) Este tipo de precondicionamiento consiste en elegir como matriz de precondicionamiento, la parte diagonal de la matriz del sistema. A = diag(ã) Si se precondiciona por la izquierda, este método escala todas las ecuaciones de modo que la diagonal resultante presenta unos. Si se quiere precondicionar por la izquierda y por la derecha para mantener la simetría del sistema precondicionado se utilizará, si es posible: A = ẼẼT = (diag(ã)) 1 2 (diag(ã)) 1 2 Este sistema de precondicionamiento siempre es beneficioso para su utilización en métodos semi-iterativos como PCG o GMRES.
Precondicionamiento elemento por elemento (I) Elemento por elemento (Element-by-element) Este método basa su funcionamiento en la forma de generar la matriz del sistema ensamblando matrices elementales de menor tamaño tal y como se lleva a cabo en métodos de elementos finitos, etc. En la práctica, en los métodos semi-iterativos de resolución de sistemas de ecuaciones lineales la matriz global del mismo no se ensambla, si no que se plantea la resolución a nivel elemental. La matriz à se obtiene como: à = nelem e=1 à [e] donde la matriz à [e] de dimensión n n se obtiene como à [e] = e à T k e e donde à ke es la matriz de rigidez elemental del elemento e y e es una matriz Booleana de conectividad global que relaciona la numeración local con la numeración global de las incógnitas.
Precondicionamiento elemento por elemento (II) Sea à una matriz simétrica y definida positiva. El primer paso en este tipo de métodos consiste en la realización de un escalado diagonal de modo que: = 1/2 à 1/2 Las matrices elementales ensambladas se transformarán por tanto de modo similar. [e] 1/2 [e] 1/2 1/2 = à = e à ke T e 1/2, T e 1/2 e à ke T e 1/2 e = ke [ [ ] T à ke = e 1/2 T e] ke e 1/2 e [ ] ([ [ ]) [ [e] 1/2 T = e e 1/2 T e] ke e 1/2 T e e [e] = e ke T e 1/2 ] El escalado diagonal se puede aplicar también a nivel elemental.
Precondicionamiento elemento por elemento (III) A continuación será necesario regularizar las matrices elementales de modo que la diagonal de cada una de ellas sea igual a la de una matriz identidad (regularización de Winglet). Así la matriz regularizada se define como: [e] [e] = Ĩ + diag( Ā [e] ) La matriz resultante también es definida positiva. Entonces ahora se aplica una factorización de Cholesky sobre cada matriz elemental y se ensambla de modo que: Ā [e] = L e el T e (Obsérvese que esta descomposición se aplica sobre unas matrices reducidas de tamaño p e p e siendo p e el número de incógnitas por elemento. Saad 2003 )
Precondicionamiento elemento por elemento (IV) Entonces la matriz de precondicionamiento se obtiene como: M = ( nelem e=1 L e ) ( nelem e=1 e ) ( 1 T e e=nelem L ) El último producto se lleva a cabo en orden inverso para mantener la simetría. Este algoritmo puede realizarse en paralelo y a nivel elemental. El mayor inconveniente es la necesidad de almacenar las matrices elementales factorizadas (o de calcularlas de nuevo cuando sea necesario) Es importante que la matriz del sistema ha sido previamente regularizada por la matriz
Otros métodos de precondicionamiento (I) ILU (Incomplete LU): Se basa en la aproximación de la factorización LU de la matriz del sistema. Para ello se impone que la matriz diferencia à L Ũ presente ceros en ciertas posiciones predefinidas (Saad 2003 ). Por ejemplo, en el método ILU(0) se impone que la matriz diferencia tenga ceros en las posiciones de los elementos no nulos de la matriz Ã. Este método funciona para matrices que cumplen: a ii > 0 i = 1,..., n a ij 0 i j i, j = 1,..., n à no singulares. à 1 0 (Todos sus coeficientes positivos o nulos) Precondicionadores por bloques (matrices tridiagonales). Sea à = L Ũ una matriz tridiagonal. La matriz de precondicionamiento se obtiene como: M = (L + ) 1 ( + Ũ) siendo es una matriz diagonal cuyos coeficientes se calculan según una ley de recurrencia (Saad 2003 )
Bibliografía Saad Y. (2003) Iterative Methods for Sparse Linear Systems. 2nd Edition. Society for Industrial and Applied Mathematics. http://www-users.cs.umn.edu/ saad/itermethbook_2nded.pdf