Técnicas Iterativas para Sistemas Lineales
Técnicas Iterativas para Sistemas Lineales
XVII
1. INTRODUCCION Y METODO
Una técnica iterativa para resolver un sistema lineal A x = b de n × n empieza con
una aproximación inicial x(0) a la solución x, y genera una sucesión de vectores {x(k) }∞
k=0
que converge a x. La mayorı́a de estas técnicas iterativas involucran un proceso que
convierte el sistema A x = b en un sistema equivalente de la forma x = T x + c para
alguna matriz T de n × n y un vector c. Ya seleccionado el vector inicial x(0) la sucesión
de vectores de solución aproximada se genera calculando
x(k) = T x(k−1) + c (XV II.1)
para cada k = 1, 2, 3, . . .. Este tipo de procedimiento nos recuerda a la iteración del punto
fijo estudiada en la tercera parte.
Las técnicas iterativas se emplean raras veces para resolver sistemas lineales de di-
mensión pequeña ya que el tiempo requerido para lograr una precisión suficiente excede
al de las técnicas directas como el método de eliminación Gaussiana. Sin embargo, para
sistemas grandes con un gran porcentaje de ceros, estas técnicas son eficientes en términos
de almacenamiento en la computadora y del tiempo requerido. Los sistemas de este tipo
surgen frecuentemente en la solución numérica de problemas de valores en la frontera y
de ecuaciones diferenciales parciales.
Ejemplo 1.
El sistema lineal A x = b dado por
E1 : 10 x1 − x2 + 2 x3 = 6,
E2 : − x1 + 11 x2 − x3 + 3 x4 = 25 ,
E3 : 2 x1 − x2 + 10 x3 − x4 = −11 ,
E4 : 3 x2 − x3 + 8 x4 = 15 ,
tiene por solución a x = (1, 2, −1, 1)t . Para convertir A x = b a la forma x = T x + c,
resolvemos la ecuación Ei para cada i = 1, 2, 3, 4, obteniendo:
1
x1 = 10 x2 − 15 x3 + 3
5 ,
1 1 3 25
x2 = 11 x1 + 11 x3 − 11 x4 + 11 ,
x3 = − 15 x1 + 1
10 x2 + 1
10 x4 − 11
10 ,
3 1 15
x4 = − 8 x2 + 8 x3 + 8 .
En este ejemplo,
1
0 10 − 15 0 3
5
1 1 3 25
11 0 11 − 11 11
T = y c= .
1 1 1 11
−5 10 0 10 − 10
0 − 38 1
8 0 15
8
229
[Link] Técnicas iterativas para resolver sistemas lineales — Cap. XVII
Como una aproximación inicial tomemos a x(0) = (0, 0, 0, 0)t y generemos x(1) mediante:
(1) 1 (0) 1 (0) 3
x1 = 10 x2 − 5 x3 + 5 = 0.6000 ,
(1) 1 (0) 1 (0) 3 (0) 25
x2 = 11 x1 + 11 x3 − 11 x4 + 11 = 2.2727 ,
(1) (0) 1 (0) 1 (0)
x3 = − 15 x1 + 10 x2 + 10 x4 − 11
10 = −1.1000 ,
(1) 3 (0) 1 (0) 15
x4 = − 8 x2 + 8 x3 + 8 = 1.8750 .
(k)
y generar cada xi de las componentes de x(k−1) para k ≥ 1 con
n
(k) 1 X (k−1)
xi = [ (−aij xj ) + bi ] para i = 1, 2, . . . , n . (XV II.3)
aii j=1
j6=i
230
[Link] Técnicas iterativas para resolver sistemas lineales — Cap. XVII
En la práctica, la ecuación (XV II.3) es la que se usa para los cálculos, reservando a la
ecuación (XV II.5) para propósitos teóricos.
Xn
1
xi = [− (aij XOj ) + bi ] .
aii j=1
j6=i
231
[Link] Técnicas iterativas para resolver sistemas lineales — Cap. XVII
Paso 5: Tomar k = k + 1.
Paso 6: Para i = 1, 2, . . . , n tomar XOi = xi .
Paso 7: SALIDA (número máximo de iteraciones excedido);
(procedimiento completado sin éxito) PARAR.
==================================================
El paso 3 del algoritmo requiere que aii 6= 0 para cada i = 1, 2, . . . , n. Si éste no es
el caso, se puede realizar un reordenamiento de las ecuaciones para que ningún aii = 0,
a menos que el sistema sea singular. Se sugiere que las ecuaciones sean arregladas de tal
manera que aii sea lo más grande posible para acelerar la convergencia.
En el paso 4, el criterio de paro ha sido ||x − XO|| < T OL; otro criterio de paro es
iterar hasta que
||x(k) − x(k−1) ||
||x(k) ||
sea menor que alguna tolerancia predeterminada ε > 0. Para este propósito, se puede
usar cualquier norma conveniente; la que más se usa es la norma l∞ .
Un análisis de la ecuación (XV II.3) sugiere una posible mejora en el algoritmo
(k)
iterativo de Jacobi. Para calcular xi , se usan las componentes de x(k−1) . Como para i >
(k) (k) (k)
1, x1 , x2 , . . ., xi−1 ya han sido calculadas y supuestamente son mejores aproximaciones
(k) (k) (k) (k)
a la solución real x1 , x2 , . . ., xi−1 que x1 , x2 , . . ., xi−1 , parece razonable calcular xi
usando los valores calculados más recientemente; es decir,
i−1
X Xn
(k) 1 (k) (k−1)
xi = [− (aij xj ) − (aij xj ) + bi ] , (XV II.6)
aii j=1 j=i+1
E1 : 10 x1 − x2 + 2 x3 = 6,
E2 : − x1 + 11 x2 − x3 + 3 x4 = 25 ,
E3 : 2 x1 − x2 + 10 x3 − x4 = −11 ,
E4 : 3 x2 − x3 + 8 x4 = 15 ,
232
[Link] Técnicas iterativas para resolver sistemas lineales — Cap. XVII
Ya que
||x(5) − x(4) ||∞ 0.0008
(4)
= = 4 × 10−4 ,
||x ||∞ 2.000
se acepta x(5) como una aproximación razonable a la solución. Es interesante notar que el
método de Jacobi en el ejemplo 1 requiere el doble de iteraciones para la misma precisión.
La técnica presentada en el ejemplo 2 se llama método iterativo de Gauss-Seidel.
Para escribir este método en la forma matricial (XV II.1) se multiplican ambos lados de
la ecuación (XV II.6) por aii y se recolectan todos los k−ésimos términos iterados para
dar
(k) (k) (k) (k−1)
ai1 x1 + ai2 x3 + . . . + aii xi = −ai,i+1 xi+1 − . . . − ain x(k−1)
n + bi ,
233
[Link] Técnicas iterativas para resolver sistemas lineales — Cap. XVII
i−1
X Xn
1
xi = [− (aij xj ) − (aij XOj ) + bi ] .
aii j=1 j=i+1
para cada k = 1, 2, . . ., donde x(0) es arbitrario. Este estudio requerirá del siguiente lema:
Lema XVII.1
Si el radio espectral ρ(T ) satisface que ρ(T ) < 1, ó si la norma de la matriz T satisface
que ||T || < 1, entonces (I − T )−1 existe y
(I − T )−1 = I + T + T 2 + . . . .
Teorema XVII.2
Para cualquier x(0) ∈ Rn , la sucesión {x(k) }∞
k=0 definida por (XV II.1)
x(k) = T x(k−1) + c
234
[Link] Técnicas iterativas para resolver sistemas lineales — Cap. XVII
x(k) = T x(k−1) + c =
= T (T x(k−2) + c) + c =
= T 2 x(k−2) + (T + I) c =
...
= T k x(0) + (T k−1 + . . . + T + I) c .
Suponiendo que ρ(T ) < 1, podemos usar el Teorema XIII.15 y el Lema XVII.1 para
obtener
(k) k (0)
¡ k−1
X ¢
lim x = lim T x + lim Tj c
k→∞ k→∞ k→∞
j=0
(0) −1
= 0·x + (I − T ) c = (I − T )−1 c .
y
||T ||k
||x − x(k) || ≤ ||x(1) − x(0) || . (XV II.9)
1 − ||T ||
235
[Link] Técnicas iterativas para resolver sistemas lineales — Cap. XVII
x(2) = T x(1) + c ,
x(k) = T x(k−1) + c ,
de donde
x(k) = T k x(0) + (T k−1 + . . . + T + I) c .
lim ||x(k+p) − x(k) || ≤ lim ||T ||k ||x(p) − x(0) || = ||T ||k lim ||x(p) − x(0) ||
p→∞ p→∞ p→∞
y entonces
||x − x(k) || ≤ ||T ||k ||x − x(0) || ,
236
[Link] Técnicas iterativas para resolver sistemas lineales — Cap. XVII
||T ||k+1
||x − x(k) || ≤ ||c|| . (XV II.90 )
1 − ||T ||
Ejemplo 3.
Demostrar que el proceso de iteración de Jacobi es convergente para el sistema lineal
siguiente:
E1 : 10 x1 − x2 + 2 x3 − 3 x4 = 0,
E2 : x1 + 10 x2 − x3 + 2 x4 = 5,
E3 : 2 x1 + 3 x2 + 20 x3 − x4 = −10 ,
E4 : 3 x1 + 2 x2 + x3 + 20 x4 = 15 .
¿Cuántas iteraciones han de efectuarse para hallar las raı́ces del sistema con un error
menor de 10−4 ?
Reduciendo el sistema a la forma especial para la iteración de Jacobi, tenemos
237
[Link] Técnicas iterativas para resolver sistemas lineales — Cap. XVII
entonces
||c||1 = 0.0 + 0.5 + 0.5 + 0.75 = 1.75 .
De aquı́,
45
0.55k+1 < 10−4
175
o sea
(k + 1) log10 0.55 < log10 45 − log10 175 − 4
y consecuentemente
4.58983
k+1> ≈ 17.7 =⇒ k > 16.7 .
0.25964
Podemos tomar k = 17. Notése que la estimación teórica del número de iteraciones
necesarias para asegurar la exactitud especificada es excesivamente alto. A menudo se
obtiene la exactitud deseada en un número menor de iteraciones.
Para aplicar los resultados de arriba a las técnicas iterativas de Jacobi o Gauss-
Seidel, necesitamos escribir las matrices de iteración del método de Jacobi, TJ , dadas en
(XV II.5) y del método de Gauss-Seidel, TGS , dadas en (XV II.7), como
De ser ρ(TJ ) ó ρ(TGS ) menores que uno, es claro que la sucesión {x(k) }∞
k=0 converge a
la solución x de A x = b. Por ejemplo, el esquema de Jacobi (ver ecuación (XV II.5))
tiene:
x(k) = D−1 (L + U ) x(k−1) + D−1 b ,
y si {x(k) }∞
k=0 converge a x, entonces
x = D−1 (L + U ) x + D−1 b .
238
[Link] Técnicas iterativas para resolver sistemas lineales — Cap. XVII
D x = (L + U ) x + b y (D − L − U ) x = b .
Supongamos que ρ(T ) < 1 y que se va a usar x(0) = 0 en una técnica iterativa para
aproximar x con un error relativo máximo de 10−t . Por la estimación (XV II.10), el
error relativo después de k iteraciones es aproximadamente ρ(T )k , ası́ que se espera una
precisión de 10−t si
ρ(T )k ≤ 10−t ,
esto es, si
t
k≥ .
− log10 ρ(T )
Por lo tanto, es deseable escoger la técnica iterativa con el menor ρ(T ) < 1 para el sistema
particular A x = b.
En general no se conoce cuál de las dos técnicas, la de Jacobi o la de Gauss-Seidel,
debe usarse. Sin embargo, en un caso especial, sı́ se conoce la respuesta.
Teorema XVII.5 (Stein-Rosenberg)
Si aij ≤ 0 para cada i 6= j y aii > 0 para cada i = 1, 2, . . . , n, entonces se satisface
una y solamente una de las siguientes afirmaciones:
a) 0 < ρ(TGS ) < ρ(TJ ) < 1;
b) 1 < ρ(TJ ) < ρ(TGS );
c) ρ(TGS ) = ρ(TJ ) = 0;
d) ρ(TJ ) = ρ(TGS ) = 1;
Para el caso especial descrito en el Teorema XVII.5, vemos que cuando un método
converge, entonces ambos convergen, siendo el método de Gauss-Seidel más rápido que el
método de Jacobi.
239
[Link] Técnicas iterativas para resolver sistemas lineales — Cap. XVII
E1 : − x1 + b12 x2 + . . . + b1n xn + c1 = 0 ,
E2 : b21 x1 − x2 + . . . + b2n xn + c2 = 0 ,
(XV II.12)
... ... ... ... ... ... ...
En : bn1 x1 + bn2 x2 + . . . − xn + cn = 0 ,
donde
aij bi
bij = − (i 6= j) y ci = . (XV II.13)
aii aii
(0) (0)
Supongamos que x(0) = (x1 , . . . , xn ) es la aproximación inicial a la solución del sistema
dado. Sustituyendo estos valores en el sistema tendremos los restos
n
X
(0) (0) (0) (1) (0)
R1 = c1 − x1 + b1j xj = x1 − x1 ,
j=2
... ...
... ...
X n
(0) (0) (0) (1) (0)
Rk = ck − xk + bkj xj = xk − xk ,
(XV II.14)
j=1
j6=k
240
[Link] Técnicas iterativas para resolver sistemas lineales — Cap. XVII
(0) (1)
bis δxs . De este modo, para hacer que desaparezca el resto siguiente Ri es suficiente
(1) (1) (0)
dar a xs un incremento δxs = Rs y tendremos
(1) (0)
Rs(1) = 0 y Ri = Ri + bis δx(0)
s para i 6= s . (XV II.15)
Establezcamos ahora
(1)
δx2 = 0.86
y ası́ sucesivamente. Los resultados de los cálculos se dan en la tabla 3.
(k)
Sumando todos los incrementos δxi (i = 1, 2, 3; k = 0, 1, . . .), tendremos los valores
de las raı́ces:
x1 = 0.0 + 0.93 + 0.062 + 0.007 = 0.999 = 1.0 ,
x2 = 0.0 + 0.86 + 0.13 + 0.016 = 1.006 = 1.0 ,
x3 = 0.0 + 0.80 + 0.18 + 0.019 = 0.999 = 1.0 .
241
[Link] Técnicas iterativas para resolver sistemas lineales — Cap. XVII
k x1 R1 x2 R2 x3 R3
0 0.0 0.60 0.0 0.70 0.0 0.80
0.16 0.16 0.80 −0.80
0.76 0.86 0.0
242
[Link] Técnicas iterativas para resolver sistemas lineales — Cap. XVII
(k)
La m−ésima componente de ri es
i−1
X n
X
(k) (k) (k−1)
rmi = bm − amj xj − amj xj (XV II.16)
j=1 j=i
ó
i−1
X n
X
(k) (k) (k−1) (k−1)
rmi = bm − amj xj − amj xj − ami xi
j=1 j=i+1
(k)
para cada m = 1, 2, . . . , n. En particular, la i−ésima componente de ri es
i−1
X n
X
(k) (k) (k−1) (k−1)
rii = bi − aij xj − aij xj − aii xi ;
j=1 j=i+1
ası́ que
i−1
X n
X
(k−1) (k) (k) (k−1)
aii xi + rii = bi − aij xj − aij xj . (XV II.17)
j=1 j=i+1
(k)
Recuérdese, sin embargo, que en el método de Gauss-Seidel xi se escoge como
P
i−1
(k) P
n
(k−1)
− (aij xj ) − (aij xj ) + bi
(k) j=1 j=i+1
xi = , (XV II.6)
aii
(k−1) (k) (k)
ası́ que la ecuación (XV II.17) puede escribirse como aii xi + rii = aii xi ó
(k)
(k) (k−1) r
xi = xi + ii . (XV II.18)
aii
Podemos derivar otra conexión entre los vectores residuales y la técnica de Gauss-
(k)
Seidel. De (XV II.16), la i−ésima componente de ri+1 es
i
X n
X
(k) (k) (k−1)
ri,i+1 = bi − aij xj − aij xj
j=1 j=i+1
(XV II.19)
i−1
X n
X
(k) (k−1) (k)
= bi − aij xj − aij xj − aii xi .
j=1 j=i+1
(k)
La ecuación (XV II.6) implica que ri,i+1 = 0. Entonces, en cierto sentido, la técnica de
(k)
Gauss-Seidel está ideada para requerir que la i−ésima componente de ri+1 sea cero.
243
[Link] Técnicas iterativas para resolver sistemas lineales — Cap. XVII
Reducir una coordenada del vector residual a cero, sin embargo, no es necesariamente
(k)
la manera más eficiente de reducir la norma del vector ri+1 . En realidad, modificando el
procedimiento de Gauss-Seidel en la forma de la ecuación (XV II.18) a:
(k)
(k) (k−1) rii
xi = xi +ω (XV II.20)
aii
ωh i
i−1
X Xn
(k) (k−1) (k) (k−1)
xi = (1 − ω) xi + bi − aij xj − aij xj . (XV II.21)
aii j=1 j=i+1
Para determinar la forma matricial del método SOR reescribimos (XV II.21) como
i−1
X n
X
(k) (k) (k−1) (k−1)
aii xi +ω aij xj = (1 − ω) aii xi −ω aij xj + ω bi
j=1 j=i+1
ası́ que
(D − ω L) x(k) = [(1 − ω) D + ω U ] x(k−1) + ω b
ó
x(k) = (D − ω L)−1 [(1 − ω) D + ω U ] x(k−1) + ω (D − ω L)−1 b .
244
[Link] Técnicas iterativas para resolver sistemas lineales — Cap. XVII
Paso 1: Tomar k = 1.
Paso 2: Mientras que k ≤ N0 seguir los pasos 3–6.
Paso 3: Para i = 1, 2, . . . , n tomar
i−1 n
ω£ X X ¤
xi = (1 − ω) XOi + − (aij xj ) − (aij XOj ) + bi .
aii j=1 j=i+1
245
[Link] Técnicas iterativas para resolver sistemas lineales — Cap. XVII
Tabla 5
(k) (k) (k)
k x1 x2 x3
0 1.000000 1.000000 1.000000
1 6.312500 3.5195313 −6.6501465
2 2.6223144 3.9585266 −4.6004238
3 3.1333027 4.0102646 −5.0966864
4 2.9570513 4.0074838 −4.9734897
5 3.0037211 4.0029250 −5.0057135
6 2.9963275 4.0009263 −4.9982822
7 3.0000498 4.0002586 −5.0003486
Un problema que se presenta al usar el método SOR, es cómo escoger el valor apro-
piado de ω. Aún cuando no se conoce una respuesta completa a esta pregunta para un
sistema lineal general n × n, los siguientes resultados pueden usarse en ciertas situaciones.
Teorema XVII.6 (Kahan)
Si aii 6= 0 para cada i = 1, 2, . . . , n, entonces ρ(Tω ) ≥ |ω − 1|. Esto implica que
ρ(Tω ) < 1 sólo si 0 < ω < 2, donde Tω = (D − ω L)−1 [(1 − ω) D + ω U ] es la matriz de
iteración del método SOR.
Teorema XVII.7 (Ostrowski-Reich)
Si A es una matriz positiva definida y 0 < ω < 2, entonces el método SOR converge
para cualquier elección de la aproximación inicial x(0) del vector solución.
Teorema XVII.8
Si A es una matriz positiva definida y tridiagonal, entonces ρ(TGS ) = [ρ(TJ )]2 < 1,
la elección óptima de ω para el método SOR es
2
ω= p , (XV II.22)
1 + 1 − [ρ(TJ )]2
Esta matriz es positiva definida y tridiagonal, ası́ que se aplica el Teorema XVII.8. Como
TJ = D−1 (L + U ) =
1/4 0 0 0 −3 0
= 0 1/4 0 −3 0 1 =
0 0 1/4 0 1 0
0 −0.75 0
= −0.75 0 0.25 ,
0 0.25 0
246
[Link] Técnicas iterativas para resolver sistemas lineales — Cap. XVII
tenemos que
−λ −0.75 0
TJ − λI = −0.75 −λ 0.25 ,
0 0.25 −λ
con lo que
det(TJ − λI) = −λ(λ2 − 0.625) .
Por lo tanto,
√
ρ(TJ ) = 0.625 ≈ 0.79057
2 2 2
ω= p = p = √ ≈ 1.24 .
1+ 1 − ρ(TGS ) 1+ 1 − [ρ(TJ )]2 1+ 1 − 0.625
247
[Link] Técnicas iterativas para resolver sistemas lineales — Cap. XVII
EJERCICIOS.
1. Encontrar las dos primeras iteraciones del método de Jacobi, del método de
Gauss-Seidel y del método SOR para los siguientes sistemas lineales, usando
x(0) = 0.
a) 2 x1 − x2 + x3 = −1 ,
3 x1 + 3 x2 + 9 x3 = 0,
3 x1 + 3 x2 + 5 x3 = 4.
b) 2 x2 + 4 x3 = 0,
x1 − x2 − x3 = 0.375 ,
x1 − x2 + 2 x3 = 0.
c) 10 x1 − x2 = 9,
− x1 + 10 x2 − 2 x3 = 7,
− 2 x2 + 10 x3 = 6.
d) 2 x1 = 3,
x1 + 1.5 x2 = 4.5 ,
− 3 x2 + 0.5 x3 = −6.6 ,
2 x1 − 2 x2 + x3 + x4 = 0.8 .
e) 2 x1 − x2 + 10 x3 = −11 ,
3 x2 − x3 + 8 x4 = −11 ,
10 x1 − x2 + 2 x3 = 6,
− x1 + 11 x2 − x3 + 3 x4 = 25 .
f) 10 x1 − x2 + 2 x3 = 6,
− x1 + 11 x2 − x3 + 3 x4 = 25 ,
2 x1 − x2 + 10 x3 = −11 ,
3 x2 − x3 + 8 x4 = −11 .
g) 4 x1 − 2 x2 = 0,
−2 x1 + 5 x2 − x3 = 2,
− x2 + 4 x3 + 2 x4 = 3,
2 x3 + 3 x4 = −2 .
248