97 INDICE 1. INTRODUCCIÓN. 2. MÉTODO DE JACOBI. 3. MÉTODO DE GAUSS-SEIDEL. 98 INTRODUCCIÓN Como hemos visto, la solución de los sistemas lineales por métodos exactos puede ser muy costosa cuando el número de ecuaciones es muy grande. Los métodos iterativos proporcionan soluciones aproximadas partiendo de un valor inicial para la solución x ( 0) , y por medio de una fórmula de iteración van obteniendo aproximaciones cada vez más precisas x (1) ,..., x ( n ) que, idealmente, convergerán a la solución del sistema. Con el propósito de medir la bondad de la aproximación que se obtiene por un método iterativo y poder hacer estimaciones a priori, se precisan conceptos teóricos que dependen principalmente del concepto de autovalor. No estudiaremos aquí estos conceptos, limitándonos a exponer dos métodos iterativos muy conocidos. Remitimos por tanto al alumno a la bibliografía propuesta para el estudio de dichas técnicas, así como para el análisis de las condiciones para la convergencia de estos métodos. 99 MÉTODO DE JACOBI Consideremos un ejemplo que nos ayude a visualizar la forma en que opera el método de Jacobi. Consideremos el sistema ì5 x1 + x 2 − x3 = −7 ï í − x1 + 3x 2 = 1 ï x + x + 6 x = 11 2 3 î 1 despejando las incógnitas diagonales obtenemos 1 ì ï x1 = 5 (−7 − x 2 + x3 ) ïï 1 í x 2 = (1 + x1 ) 3 ï ï x = 1 (11 − x − x ) 1 2 ïî 3 6 podemos definir entonces el proceso iterativo ì ( s +1) 1 = (−7 − x 2( s ) + x3( s ) ) ï x1 5 ïï 1 ( s +1) (s) í x 2 = (1 + x1 ) 3 ï 1 ( s + 1 ) ïx = (11 − x1( s ) − x 2( s ) ) ïî 3 6 Si tomamos como solución inicial el vector (0,0,0) e iteramos hasta que la diferencia entre 2 pasos de la iteración sea más pequeña que 0,001 vemos que el proceso converge hacia la solución del sistema en 8 iteraciones. Para formalizar la idea del método pongámoslo en forma matricial, es decir dividimos A en su parte diagonal D su parte estrictamente superior U y su parte estrictamente inferior L (Estas matrices no tienen nada que ver con la factorización LU de A), podemos escribir entonces (D + L + U ) x = b de donde despejamos la parte diagonal para producir una fórmula iterativa x ( s +1) = − D −1 ( L + U ) x ( s ) + D −1b Podemos desarrollar la fórmula anterior en componentes para obtener las correspondientes fórmulas recursivas, pero como Matlab nos permite realizar operaciones sobre matrices, podemos implementar este método directamente. 100 MÉTODO DE GAUSS-SEIDEL Analicemos de nuevo el sistema anterior escribiéndolo como antes en la forma 1 ì ï x1 = 5 (−7 − x 2 + x3 ) ïï 1 í x 2 = (1 + x1 ) 3 ï ï x = 1 (11 − x − x ) 1 2 ïî 3 6 En cada iteración del método de Jacobi se usan los valores de la iteración anterior, pero parece mejor usar los valores ya calculados en la iteración actual, ya que serán más precisos. Esta modificación del método de Jacobi da lugar al método de Gauss-Seidel cuyo proceso iterativo en este caso sería ì ( s +1) 1 = (−7 − x 2( s ) + x3( s ) ) ï x1 5 ïï 1 ( s +1) ( s +1) í x 2 = (1 + x1 ) 3 ï 1 ï x ( s +1) = (11 − x ( s +1) − x ( s +1) ) 1 2 ïî 3 6 Si iteramos como antes desde (0,0,0) usando estas ecuaciones y con la misma tolerancia que antes observaremos que el método converge a la solución en sólo 4 pasos. La forma matricial del método es (D + L + U )x = b ( D + L) x = −Ux + b x = −( D + L) −1Ux + ( D + L) −1 b Obtenemos entonces la fórmula iterativa x ( s +1) = −( D + L) −1Ux ( s ) + ( D + L) −1 b 101