Este documento describe métodos iterativos para resolver sistemas de ecuaciones lineales. Explica el método de Jacobi, Gauss-Seidel y sobrerrelajación, indicando que los métodos iterativos son más eficientes para matrices grandes y dispersas, con un coste por iteración de O(n2) o menor. También establece condiciones sobre la matriz para garantizar la convergencia de los métodos, como ser estrictamente diagonalmente dominante para Jacobi o simétrica definida positiva para sobrerrelajación.
2 En este capítulo estudiaremos métodos iterativos para resolución de sistemas de ecuaciones lineales. De forma general, estos métodos están basados en el método del punto fijo y el proceso consiste en sustituir de modo iterado en una fórmula.
3 Los métodos iterativos frente a los directos, no nos aseguran una mejor aproximación, sin embargo son más eficientes cuando trabajamos con matrices de gran tamaño. En la resolución numérica de ecuaciones en derivadas parciales suelen aparecer sistemas de ecuaciones lineales con incluso 100000 incógnitas; en estos sistemas la matriz de coeficientes es dispersa; es decir, un alto porcentaje de los elementos de la matriz son iguales a 0. Si hay algún tipo de patrón en los elementos distintos de cero (por ejemplo los sistemas tridiagonales), entonces un método iterativo puede resultar muy eficaz.
4
5 La ecuación del calor resulta un buen ejemplo para los métodos iterativos, pues da lugar a un sistema tridiagonal.
9 Introducimos al matriz del calor como función de MatLab.
6 De todos los métodos iterativos, el de Jacobi es el más fácil de aplicar y entender, sin embargo, no es muy eficiente en cuanto a la obtención de soluciones. Considérese el sistema (Ejemplo 1) que podemos escribir equivalentemente como: El método de Jacobi consiste en usar las fórmulas anteriores como iteración de punto fijo.
7
8 En cada paso de al iteración de Jacobi se obtiene un vector con n coordenadas P 0 = (x 1 (0) , x 2 (0) , …, x n (0) ), … , P k =(x 1 (k) , x 2 (k) , …, x n (k) ) donde la estimación inicial (x 1 (0) , x 2 (0) , …, x n (0) ) se debe elegir. Cuando no se tienen pistas sobre la solución se suele tomar x i (0) = b i /a ii En el ejemplo anterior, si tomamos P 0 =(x (0) , y (0) , z (0) )=(1,2,2) En la primera iteración se obtiene P 1 = (1.75, 3.375, 3.00) Generando al sucesión de iteraciones de Jacobi s e observa que converge a (2, 4, 3).
9 Expresemos en forma matricial la fórmula de iteración de Jacobi, y realicemos un programa MatLab para el método de Jacobi. Para ello descomponemos la matriz A como suma de una matriz diagonal, una triangular inferior y una triangular superior. A = L+D+U (L+D+U)x = b Lx+Dx+Ux=b Dx = b-(L+U)x x = D -1 (b-(L+U)x) Iteración de Jacobi: x (k+1) = D -1 (b-(L+U)x (k) )
10 Muchas veces el método de iteración de Jacobi no funciona. Veamos un ejemplo de ello reordenando las ecuaciones del ejemplo anterior. (Ejemplo 2) Ahora la fórmula de iteración es y se observa que al sucesión de Jacobi diverge. Obsérvese que la matriz del sistema no es estrictamente diagonal dominante.
11 El método de Gauss-Seidel es una modificación del método de Jacobi que acelera la convergencia de éste. Obsérvese que el método de Jacobi genera una sucesión para cada incógnita {x 1 (k) }, … , {x n (k) }. Puesto que x i (k+1) es probablemente mejor aproximación que x i (k) , en vez de usar x i (k) en el cálculo de x i+1 (k+1) usamos x i (k+1) . Aplíquese esta estrategia al ejemplo 1 y comprubese al velocidad de convergencia. El método de Gauss-Seidel recorta sustancialmente el número de iteraciones a realizar para obtener una cierta precisión en la solución. Evidentemente los criterios de convergencia son similares a los de Jacobi.
12 Expresemos en forma matricial la fórmula de iteración de Gauss-Seidel, y realicemos un programa MatLab para el método de Gauss-Seidel. Para ello descomponemos la matriz A como suma de una matriz diagonal, una triangular inferior y una triangular superior. A = L+D+U (L+D+U)x = b Lx+Dx+Ux=b (D+L)x = b-Ux x = (D+L) -1 (b-Ux) Iteración de Jacobi: x (k+1) = (D+L) -1 (b-Ux (k) )
13 El método de sobrerrelajación reduce el número de iteraciones en los cálculos de soluciones de sistemas lineales por el método de Gauss-Seidel. Se basa en obtener en cada iteración un promedio ponderado (solamente para los elementos del vector anteriores a la posición de cálculo) de la solución del método de Jacobi y de la solución del método de Gauss-Seidel.
14
15 Expresemos en forma matricial la fórmula de iteración de sobrerrelajación, y realicemos un programa MatLab para el método de sobrerrelajación. Para ello descomponemos la matriz A como suma de una matriz diagonal, una triangular inferior y una triangular superior igual que en los anteriores. A = L+D+U w(L+D+U)x = wb con 0<w<2 (wL+D)x=wb+((1-w)D-wU)x) Iteración de Jacobi: x (k+1) = (wL+D) -1 (wb+((1-w)D-wU) x (k) )