Sei sulla pagina 1di 26

Anlisis Numrico: Mtodos iterativos de resolucin de sistemas de ecuaciones lineales

Mtodos iterativos de resolucin de sistemas de ecuaciones


lineales
Grupo de Dinmica de Flujos Ambientales
Universidad de Granada

________________________________________________________________
1
Manuel Dez Minguito

Anlisis Numrico: Mtodos iterativos de resolucin de sistemas de ecuaciones lineales

ndice
ndice ................................................................................................................................ 2
Lista de Tablas.................................................................................................................. 2
Lista de Algoritmos .......................................................................................................... 2
Mtodo iterativo de Jacobi ............................................................................................... 5
Mtodo de Gauss Seidel ................................................................................................ 9
Mtodos de relajacin..................................................................................................... 14
Mtodo del descenso ms rpido.................................................................................... 21
Mtodo del gradiente conjugado .................................................................................... 23
Bibliografa................................................................................................................. 26

Lista de Tablas
Tabla 1. Comparativa mtodos de Gauss Seidel y SRS. ............................................. 16

Lista de Algoritmos
Algoritmo 1. Mtodo de Jacobi. ....................................................................................... 8
Algoritmo 2. Mtodo de Gauss Seidel......................................................................... 13
Algoritmo 3. Mtodo de sobre-relajacin sucesiva. ....................................................... 20
Algoritmo 4. Algoritmo formal para el mtodo del descenso ms rpido. .................... 22
Algoritmo 5. Mtodo del descenso ms rpido. ............................................................. 23
Algoritmo 6. Algoritmo formal para el mtodo del gradiente conjugado. ..................... 24
Algoritmo 7. Mtodo del gradiente conjugado.............................................................. 25

Inicibamos el tema anterior con varios ejemplos de teora de circuitos y difusin


trmica. Volviendo a ese segundo ejemplo, la matriz resultante era

________________________________________________________________
2
Manuel Dez Minguito

Anlisis Numrico: Mtodos iterativos de resolucin de sistemas de ecuaciones lineales


4u1

+u2

+u4

u1

4u2

+u 3

u2

4u 3

u1
u2

= 50
+u5

= 50
+u6

4u 4

+u5

+u 4

4u5

+u6

+u5

4u6

u3

= 150
+u7

u4
u5
u6

=0
+u8

=0
+u9

= 100

4u7

+u8

= 50

+u7

4u8

= 50

+u8

4u9

(0.1)

= 150

A este tipo de matrices se las llama dispersas por el elevado nmero de entradas nulas
que presenta. En estos casos, los mtodos de resolucin de sistemas lineales ms
eficientes suelen ser los llamados mtodos iterativos, en contraposicin con los mtodos
directos. Adems, hay que decir que los mtodos iterativos son mucho menos costosos
computacionalmente que los directos, incluso para rdenes pequeos.
Comparativamente, el nmero de operaciones que tiene lugar en los mtodos directos es
muy elevado, dando lugar a errores por redondeo. Asimismo, necesitan mucha menos
memoria de almacenamiento1.
Las tcnicas iterativas de resolucin de sistemas lineales de orden n n de la forma
Ax = b
(0.2)
donde x , b M n1( ) , A M n ( ) y det(A) 0 , consisten en la construccin de una
sucesin de vectores {x (0), , x (k ), } que converja a la solucin del sistema. Esto es

lim x (k ) = x .

(0.3)

Los mtodos iterativos que vamos a considerar en este captulo son aquellos que se
construyen partiendo de un x (0) arbitrario y despus generando los siguientes de la
forma
x (k +1) = F (x (k ) )
(0.4)
siendo F : n n . En nuestro caso, consideraremos nicamente funciones F de
tipo lineal, es decir F (x ) = Tx + c , siendo c n y T M n ( ) . Por tanto, dado un
vector inicial, la sucesin se genera calculando
x (k ) = Tx (k 1) + c .
(0.5)

Los mtodos directos de resolucin de sistemas de ecuaciones lineales son, por lo general,
computacionalmente costosos, especialmente cuando se incrementa el orden del sistema; sin mencionar
los problemas por errores de redondeo. En estos casos (v.gr. en EDPs), mtodos iterativos de resolucin
de sistemas de ecuaciones lineales suelen resultar ms efectivos que los directos. Otra situacin en la que
aqullos se muestran ms eficientes que estos es cuando la matriz asociada al sistema presenta numerosas
entradas nulas (vase ejemplos del Tema4).

________________________________________________________________
3
Manuel Dez Minguito

Anlisis Numrico: Mtodos iterativos de resolucin de sistemas de ecuaciones lineales


Lo que viene a decir (0.5) es que x es un punto fijo del mapa iterativo x = Tx + c
cuya solucin formal es x = (I T )1c .
Ejemplo [Burden y Faires, 1985]

Comenzamos con un ejemplo. Sea el sistema lineal siguiente


10x 1 x 2
+2x 3
=6
x 1

+11x 2

x 3

+3x 4 = 25

2x 1

x 2

10x 3

x 4 = 11

3x 2

x 3

+8x 4 = 15 .

(0.6)

La idea es convertir este sistema de la forma (0.2) a la forma x = Tx + c . Para ello se


despeja de cada ecuacin i la componente x i . En este ejemplo,
0
1/10 1/ 5
0

1/11

0
1/11
3
/11

(0.7)
T =

1/ 5 1/10
0
1/10

0
3 / 8 1/ 8
0
y
3 / 5

25 /11

c =
11/10

15 / 8

(0.8)

Suponiendo que el vector inicial es x (0) = (0, 0, 0, 0) los siguientes se generan de la


forma siguiente
(0)
(1)
1/10 1/ 5
0 x 1 3 / 5
x 1 0

(1)
25 /11
(0)

x
x
1/11
0
1/11
3
/11
2

=
(0.9)
+

x 3(1) 1/ 5 1/10
0
1/10 x 3(0) 11/10

x (0) 15 / 8
x (1) 0

3
/
8
1/
8
0

4
4
Mediante iteraciones sucesivas. Ntese que es importante elegir un vector inicial
prximo a la solucin. Eso har que la convergencia sea ms rpida. Dnde detener el
proceso iterativo? El criterio se establece en funcin del error relativo
x (k +1) x (k )
e=
entre dos pasos iterativos, estos es, si, por ejemplo, e 103 se
(k +1)
x
considera que el proceso ha convergido. En este caso la solucin del sistema es
T
x = (1,2, 1,1) y se alcanza el criterio de convergencia en la iteracin 102.
(

Diremos que un mtodo iterativo converge si converge para cualquier vector inicial.

________________________________________________________________
4
Manuel Dez Minguito

Anlisis Numrico: Mtodos iterativos de resolucin de sistemas de ecuaciones lineales

Mtodo iterativo de Jacobi


El mtodo visto en el ejemplo anterior se denomina mtodo de Jacobi. Como hemos
visto, la idea es resolver cada ecuacin para su respectiva componente, suponiendo que
el coeficiente de la misma aii 0 . En tal caso,
n
a x b
x i = ij j + i
(0.10)
aii

j =1 aii
j i

para 1 i n . Los vectores en cada iteracin se generan de la forma siguiente


n
aij x (jk 1) bi
(k )

xi =
.
aii
aii
j =1

(0.11)

j i

Para este mtodo, la matriz A del sistema (0.2) suede dividirse en suma de matriz
diagonal D , triangular superior U y triangular inferior L , esto es, A = D L U 3.
De tal forma que de (0.2) se llega a
Dx = (L + U )x + b
(0.12)
o, puesto que hemos supuesto que aii 0 para todo i , tenemos
x = D 1(L + U )x + D 1b .

(0.13)

Escrito de esta forma (ecuacin (0.13)) es el mtodo iterativo de Jacobi. No obstante, la


expresin (0.13) suele dejarse para tratamientos tericos, mientras que (0.11) es la que
directamente se emplea en computacin.
Algoritmo [Burden y Faires, 1985]: Mtodo de Jacobi
Input n, aij , bi , X 0i , M ,TOL
Ouput 0, X 0i
k 1
While k M
k 1
For i = 1 to n

a
X
0

j
i ij

j =1

j i

xi
aii
End
If x X 0 < TOL Then
Output k, x i
Output Solucin determinada con xito
3

El signo es arbitrario: slo cambia el signo de los coeficientes de las matrices triangulares.

________________________________________________________________
5
Manuel Dez Minguito

Anlisis Numrico: Mtodos iterativos de resolucin de sistemas de ecuaciones lineales


Exit
End

X0 x
End
Output Nmero mximo de iteraciones superado
Output No se he encontrado una solucin
Exit
Los escalares M y TOL representan, respectivamente, el nmero mximo de
iteraciones y la tolerancia admitida. Si est garantizada la convergencia a la solucin
real, se recomienda tomar como criterio que el error relativo sea menor o igual que
TOL . En otro caso, aadir al criterio anterior un nmero mximo de iteraciones M .
Una pequea modificacin que mejora al algoritmo es determinar todas las divisiones
antes de entrar en el proceso iterativo.Una forma de interpretar esto es que el sistema
original (0.2) sea sustituido por D 1Ax = D 1b donde D = (aii ) es matriz diagonal.
% JACOBI ITERATIVE ALGORITHM 7.1
%
% To solve Ax = b given an initial approximation x(0).
%
% INPUT:
the number of equations and unknowns n; the entries
%
A(I,J), 1<=I, J<=n, of the matrix A; the entries
%
B(I), 1<=I<=n, of the inhomogeneous term b; the
%
entries XO(I), 1<=I<=n, of x(0); tolerance TOL;
%
maximum number of iterations N.
%
% OUTPUT: the approximate solution X(1),...,X(n) or a message
%
that the number of iterations was exceeded.
syms('AA', 'OK', 'NAME', 'INP', 'N', 'I', 'J', 'A', 'X1');
syms('TOL', 'NN', 'K', 'ERR', 'S', 'X2', 'FLAG', 'OUP');
TRUE = 1;
FALSE = 0;
fprintf(1,'This is the Jacobi Method for Linear Systems.\n');
fprintf(1,'The array will be input from a text file in the order\n');
fprintf(1,'A(1,1), A(1,2), ..., A(1,n+1), \n');
fprintf(1,'A(2,1), A(2,2), ..., A(2,n+1), \n');
fprintf(1,'..., A(n,1), A(n,2), ..., A(n,n+1)\n');
fprintf(1,'Place as many entries as desired on each line, but
separate\n');
fprintf(1,'entries with ');
fprintf(1,'at least one blank.\n\n\n');
fprintf(1,'The initial approximation should follow in same
format.\n');
fprintf(1,'Has the input file been created? - enter Y or N.\n');
AA = input(' ','s');
OK = FALSE;
if AA == 'Y' | AA == 'y'
fprintf(1,'Input the file name in the form - drive:\\name.ext\n');
fprintf(1,'for example:
A:\\DATA.DTA\n');
NAME = input(' ','s');
INP = fopen(NAME,'rt');
OK = FALSE;
while OK == FALSE

________________________________________________________________
6
Manuel Dez Minguito

Anlisis Numrico: Mtodos iterativos de resolucin de sistemas de ecuaciones lineales


fprintf(1,'Input the number of equations - an integer.\n');
N = input(' ');
if N > 0
A = zeros(N,N+1);
X1 = zeros(N);
X2 = zeros(N);
for I = 1 : N
for J = 1 : N+1
A(I,J) = fscanf(INP, '%f',1);
end;
end;
for I = 1 : N
X1(I) = fscanf(INP, '%f',1);
end;
OK = TRUE;
fclose(INP);
else
fprintf(1,'The number must be a positive integer\n');
end;
end;
OK = FALSE;
while OK == FALSE
fprintf(1,'Input the tolerance.\n');
TOL = input(' ');
if TOL > 0
OK = TRUE;
else
fprintf(1,'Tolerance must be a positive.\n');
end;
end;
OK = FALSE;
while OK == FALSE
fprintf(1,'Input maximum number of iterations.\n');
NN = input(' ');
if NN > 0
OK = TRUE;
else
fprintf(1,'Number must be a positive integer.\n');
end;
end;
else
fprintf(1,'The program will end so the input file can be
created.\n');
end;
if OK == TRUE
% STEP 1
K = 1;
OK = FALSE;
% STEP 2
while OK == FALSE & K <= NN
% err is used to test accuracy - it measures the infinity-norm
ERR = 0;
% STEP 3
for I = 1 : N
S = 0;
for J = 1 : N
S = S-A(I,J)*X1(J);
end;
S = (S+A(I,N+1))/A(I,I);
if abs(S) > ERR
ERR = abs(S);

________________________________________________________________
7
Manuel Dez Minguito

Anlisis Numrico: Mtodos iterativos de resolucin de sistemas de ecuaciones lineales


end;
% use X2 for X
X2(I) = X1(I)+S;
end;
% STEP 4
if ERR <= TOL
% process is complete
OK = TRUE;
else
% STEP 5
K = K+1;
% STEP 6
for I = 1 : N
X1(I) = X2(I);
end;
end;
end;
if OK == FALSE
fprintf(1,'Maximum Number of Iterations Exceeded.\n');
% STEP 7
% procedure completed unsuccessfully
else
fprintf(1,'Choice of output method:\n');
fprintf(1,'1. Output to screen\n');
fprintf(1,'2. Output to text file\n');
fprintf(1,'Please enter 1 or 2.\n');
FLAG = input(' ');
if FLAG == 2
fprintf(1,'Input the file name in the form - drive:\\name.ext\n');
fprintf(1,'for example:
A:\\OUTPUT.DTA\n');
NAME = input(' ','s');
OUP = fopen(NAME,'wt');
else
OUP = 1;
end;
fprintf(OUP, 'JACOBI ITERATIVE METHOD FOR LINEAR SYSTEMS\n\n');
fprintf(OUP, 'The solution vector is :\n');
for I = 1 : N
fprintf(OUP, ' %11.8f', X2(I));
end;
fprintf(OUP, '\nusing %d iterations\n', K);
fprintf(OUP, 'with Tolerance %.10e in infinity-norm\n', TOL);
if OUP ~= 1
fclose(OUP);
fprintf(1,'Output file %s created successfully \n',NAME);
end;
end;
end;
Algoritmo 1. Mtodo de Jacobi.

La pregunta es cundo converge el mtodo de Jacobi. Para ello, presentamos un par de


teoremas que darn las condiciones necesarias y suficientes de convergecia (adems de
asegurar que la matriz A es no singular).

________________________________________________________________
8
Manuel Dez Minguito

Anlisis Numrico: Mtodos iterativos de resolucin de sistemas de ecuaciones lineales

Teorema

La condicin necesaria y suficiente para que la sucesin {x (k ) }

k =0

x (k ) = Tx (k 1) + c converja a (I T )1c

asociada al mapa

es que el radio espectral de T sea

menor que 1.
En otras palabras, y como corolario, la frmula de iteracin (0.5) da lugar a una
sucesin convergente a la solucin de (0.2), para cualquier vector inicial x (0)

Como corolario al teorema anterior cabe mostrar el resultado siguiente que servir para
dar condiciones suficientes un tanto ms prcticas. Si T < 1 para cualquier norma

matricial , la sucesin {x (k ) }

k =0

x (0)

converge a la solucin del sistema para todo

y los errores de acotacin estn dados por


k
x x (k ) T x x (0) .

(0.14)

Ntese que la expresin (0.14) da una idea de lo rpido que puede converger un mtodo,
relacionndolo con el radio espectral. Se puede demostrar que
x x (k ) (T )k x x (0) ,
(0.15)
por tanto, suponiendo que el error relativo e (T )k despus de k iteraciones es 10 ,
tendremos que (T )k 10 . Esto es,

k
.
(0.16)
log (T )
Segn (0.16) es deseable escoger un mtodo con un radio espectral mnimo, de tal
forma que el nmero de iteraciones hasta alcanzar el error relativo prescrito sea mnimo.

Teorema
Si la matriz A del sistema (0.2) es diagonalmente dominante, la sucesin proporcionada
por el mtodo de Jacobi converge a la solucin correcta para cualquier vector inicial
x (0) n .
Este segundo teorema, a efectos computacionales, es ms prctico que el primero.
Comprobar que una matriz es diagonalmente dominante es mucho ms sencillo que
determinar el radio espectral.
Las demostraciones pueden encontrarse en [Burden y Faires, 1985; Kincaid y Cheney,
1990].

Mtodo de Gauss Seidel


________________________________________________________________
9
Manuel Dez Minguito

Anlisis Numrico: Mtodos iterativos de resolucin de sistemas de ecuaciones lineales


Otra posible mejora del algoritmo es la siguiente. Admitiendo que la solucin x i(k ) es
una mejor aproximacin que x i(k 1) a la solucin real, uno podra plantearse emplear
soluciones de la ecuacin i en la iteracin k para determinar las soluciones x (jk ) con

j > i . Esto es, en vez de emplear en la iteracin k todas las soluciones de la iteracin
anterior x i(k 1) 1 i n , se emplearan los valores recientemente calculados en la
iteracin k (los x i(k ) ). En tal caso, la frmula de recurrencia ya no sera (0.11) si no la
siguiente
i 1

x i(k ) =

(aij x (jk ) )
j =1

(a x ( ) ) b
k 1

ij

j =i +1

aii

(0.17)

i 1

La expresin es anloga a la (0.11) excepto en los trminos

(a x ( ) ) que son los


k

ij

j =1

determinados en la presente iteracin k y que sustituyen a los correspondientes a la


iteracin anterior k 1 .
La frmula de recurrencia (0.17) es la del mtodo de Gauss Seidel .
Para resolver Ax = b dada una estimacin inicial x i(0) se debe introducir el nmero de
ecuaciones y de incgnitas ( n ), esto es, el orden del sistema; las entradas de la matriz
A , aij para 1 i, j n ; las entradas del trmino inhomogneo bi ; cada componente de

x i(0) , X 0i ; una tolerancia TOL y el mximo nmero de iteraciones M .


Algoritmo [Burden y Faires, 1985]: Mtodo de Gauss Seidel.
Input n, aij , bi , X 0i , M ,TOL
Ouput 0, X 0i
k 1
While k M
k 1
For i = 1 to n
i 1
n

a
x
a
X
0
ij j
i ij j
j =1
j =i +1
xi
aii
End
If x X 0 < TOL Then
Output k, x i
Output Solucin determinada con xito
Exit
End

X0 x
________________________________________________________________
10
Manuel Dez Minguito

Anlisis Numrico: Mtodos iterativos de resolucin de sistemas de ecuaciones lineales


End
Output Nmero mximo de iteraciones superado
Output No se he encontrado una solucin
Exit
Los escalares M y TOL representan, respectivamente, el nmero mximo de
iteraciones y la tolerancia admitida. Si est garantizada la convergencia a la solucin
real, se recomienda tomar como criterio que el error relativo sea menor o igual que
TOL . En otro caso, aadir al criterio anterior un nmero mximo de iteraciones M .
Una pequea modificacin que mejora al algoritmo es determinar todas las divisiones
antes de entrar en el proceso iterativo.Una forma de interpretar esto es que el sistema
original (0.2) sea sustituido por D 1Ax = D 1b donde D = (aii ) es matriz diagonal.
Puesto que las variables con este mtodo se calculan de forma secuencial, el mtodo de
Jacobi es ms eficiente cuando se emplean cdigos o computacin en paralelo, puesto
que la actualizacin de variables es simultnea.
% GAUSS-SEIDEL ITERATIVE TECHNIQUE ALGORITHM 7.2
%
% To solve Ax = b given an initial approximation x(0).
%
% INPUT:
the number of equations and unknowns n; the entries
%
A(I,J), 1<=I, J<=n, of the matrix A; the entries
%
B(I), 1<=I<=n, of the inhomogeneous term b; the
%
entries XO(I), 1<=I<=n, of x(0); tolerance TOL;
%
maximum number of iterations N.
%
% OUTPUT: the approximate solution X(1),...,X(n) or a message
%
that the number of iterations was exceeded.
syms('AA', 'OK', 'NAME', 'INP', 'N', 'I', 'J', 'A', 'X1');
syms('TOL', 'NN', 'K', 'ERR', 'S', 'FLAG', 'OUP');
TRUE = 1;
FALSE = 0;
fprintf(1,'This is the Gauss-Seidel Method for Linear Systems.\n');
fprintf(1,'The array will be input from a text file in the order\n');
fprintf(1,'A(1,1), A(1,2), ..., A(1,n+1), \n');
fprintf(1,'A(2,1), A(2,2), ..., A(2,n+1), \n');
fprintf(1,'..., A(n,1), A(n,2), ..., A(n,n+1)\n');
fprintf(1,'Place as many entries as desired on each line, but
separate\n');
fprintf(1,'entries with ');
fprintf(1,'at least one blank.\n\n\n');
fprintf(1,'The initial approximation should follow in same
format.\n');
fprintf(1,'Has the input file been created? - enter Y or N.\n');
AA = input(' ','s');
OK = FALSE;
if AA == 'Y' | AA == 'y'
fprintf(1,'Input the file name in the form - drive:\\name.ext\n');
fprintf(1,'for example:
A:\\DATA.DTA\n');
NAME = input(' ','s');
INP = fopen(NAME,'rt');
OK = FALSE;
while OK == FALSE

________________________________________________________________
11
Manuel Dez Minguito

Anlisis Numrico: Mtodos iterativos de resolucin de sistemas de ecuaciones lineales


fprintf(1,'Input the number of equations - an integer.\n');
N = input(' ');
if N > 0
A = zeros(N,N+1);
X1 = zeros(1,N);
for I = 1 : N
for J = 1 : N+1
A(I,J) = fscanf(INP, '%f',1);
end;
end;
% Use X1 for X0
for I = 1 : N
X1(I) = fscanf(INP, '%f',1);
end;
OK = TRUE;
fclose(INP);
else
fprintf(1,'The number must be a positive integer\n');
end;
end;
OK = FALSE;
while OK == FALSE
fprintf(1,'Input the tolerance.\n');
TOL = input(' ');
if TOL > 0
OK = TRUE;
else
fprintf(1,'Tolerance must be a positive.\n');
end;
end;
OK = FALSE;
while OK == FALSE
fprintf(1,'Input maximum number of iterations.\n');
NN = input(' ');
if NN > 0
OK = TRUE;
else
fprintf(1,'Number must be a positive integer.\n');
end;
end;
else
fprintf(1,'The program will end so the input file can be
created.\n');
end;
if OK == TRUE
% STEP 1
K = 1;
OK = FALSE;
% STEP 2
while OK == FALSE & K <= NN
% ERR is used to test accuracy - it measures the infinity-norm
ERR = 0;
% STEP 3
for I = 1 : N
S = 0;
for J = 1 : N
S = S-A(I,J)*X1(J);
end;
S = (S+A(I,N+1))/A(I,I);
if abs(S) > ERR
ERR = abs(S);

________________________________________________________________
12
Manuel Dez Minguito

Anlisis Numrico: Mtodos iterativos de resolucin de sistemas de ecuaciones lineales


end;
X1(I) = X1(I) + S;
end;
% STEP 4
if ERR <= TOL
OK = TRUE;
% process is complete
else
% STEP 5
K = K+1;
% STEP 6 - is not used since only one vector is required
end;
end;
if OK == FALSE
fprintf(1,'Maximum Number of Iterations Exceeded.\n');
% STEP 7
% procedure completed unsuccessfully
else
fprintf(1,'Choice of output method:\n');
fprintf(1,'1. Output to screen\n');
fprintf(1,'2. Output to text file\n');
fprintf(1,'Please enter 1 or 2.\n');
FLAG = input(' ');
if FLAG == 2
fprintf(1,'Input the file name in the form - drive:\\name.ext\n');
fprintf(1,'for example:
A:\\OUTPUT.DTA\n');
NAME = input(' ','s');
OUP = fopen(NAME,'wt');
else
OUP = 1;
end;
fprintf(OUP, 'GAUSS-SEIDEL METHOD FOR LINEAR SYSTEMS\n\n');
fprintf(OUP, 'The solution vector is :\n');
for I = 1 : N
fprintf(OUP, ' %11.8f', X1(I));
end;
fprintf(OUP, '\nusing %d iterations\n', K);
fprintf(OUP, 'with Tolerance %.10e in infinity-norm\n', TOL);
if OUP ~= 1
fclose(OUP);
fprintf(1,'Output file %s created successfully \n',NAME);
end;
end;
end;
Algoritmo 2. Mtodo de Gauss Seidel.

Un teorema similar al anterior para el mtodo de Jacobi garantiza que si la matriz


asociada al sistema lineal de ecuaciones es diagonalmente dominante, el mtodo de
Gauss Seidel converge para cualquier seleccin del vector inicial.
En otros casos la convergencia podra no estar garantizada. Incluso puede haber casos
en los que el mtodo de Jacobi converja, pero no el Gauss Seidel, y viceversa.
Ejercicio

Demustrese que, aplicando el mtodo iterativo de Gauss Seidel al sistema siguiente

________________________________________________________________
13
Manuel Dez Minguito

Anlisis Numrico: Mtodos iterativos de resolucin de sistemas de ecuaciones lineales

2 1 0 x 1 2

1 6 2
x 2 = 4


4 3 8 x 3 5

(0.18)

Se obtiene la solucin (x 1, x 2 , x 3 ) = (0.62, 0.76, 0.03)T en la iteracin k = 13 con un


error relativo de e 106 .

Teorema de Stein Rossenberg


En general no se sabe cul de las dos tcnicas (Jacobi o Gauss Seidel) es mejor; pero
es casos especiales es conocida. Uno de ellos lo recogemos en el siguiente teorema
Si aij 0 para cada i j y aii > 0 para 1 i n entonces se cumple uno y slo uno
de los siguientes puntos
0 < (TGS ) < (TJ ) < 1
1 < (TJ ) < (TGS )
0 = (TGS ) = (TJ )
(TGS ) = (TJ ) = 1 .
Es claro a partir de lo anterior (primer punto), que cuando un mtodo converge, el otro
tambin converge, siendo el mtodo de Gauss Seidel ms rpido que el de Jacobi.
Pero ojo, bajo otras condiciones, puede que esto no sea as.

Mtodos de relajacin
Hay que recordar que la rapidez en la convergencia depende del radio de convergencia
que, a su vez, depende del mtodo empleado. Por tanto sera conveniente buscar el
mtodo con el menor radio de convergencia que resuelva un sistema dado para acelerar
la convergencia.
El procedimiento emplea el concepto de vector residual, ya introducido en el tema
anterior (o en los apndices de matrices: vase condicionamiento de matrices).
El residual en los procedimientos iterativos est asociado a cada iteracin, esto es

ri(k ) = (r1(ik ), r2(ik ), , rni(k ) ) .


T

(0.19)

Evidentemente, se espera de cualquier mtodo que el residual converja a cero con


k . Para el mtodo de Gauss Seidel, la componente m -sima del residual
verifica
i 1

j =1

j =i

rmi(k ) = bm (amj x (jk ) ) (amj x (jk 1) )

(0.20)

________________________________________________________________
14
Manuel Dez Minguito

Anlisis Numrico: Mtodos iterativos de resolucin de sistemas de ecuaciones lineales

para cada m . O escrito de otro modo, particularizando para la componente i [Burden y


Faires, 1985]
(k 1)
ii i

a x

(k )
ii

+r

i 1

= bi (aij x
j =1

(k )
j

) (a x ( ) )
k 1

ij

(0.21)

j =i +1

siendo

aii x i(k 1) + rii(k ) = aii x i(k )

(0.22)

o bien

rii(k )
.
(0.23)
aii
En contra de lo que cabra pensar en un principio con respecto a la expresin (0.23),
reducir el residual rii(k ) a cero, podra no acelerar el proceso de convergencia. Ntese
que el residual est referido a la diferencia entre dos iteraciones consecutivas, pero no
respecto de la solucin. De hecho, residuales pequeos podran ralentizar la
convergencia. Por el contrario modificando el mtodo de Gauss Seidel a partir de
(0.23) segn
r (k )
(0.24)
x i(k ) = x i(k 1) + ii
aii
con ciertos 0 < conducir a una mejora sustancial de la velocidad de convergencia. A
estos mtodos se los denomina mtodos de relajacin. A los mtodos de relajacin con
0 < < 1 se los denomina de sub-relajacin, mientras que a los que tienen 1 < se
los llama de sobre-relajacin, los cuales pueden emplearse para acelerar la convergencia
de sistemas convergentes por el mtodo de Gauss Seidel. Nos referiremos a estos
ltimos como SRS (Sobre-relajacin sucesiva). Ntese que el mtodo de Gauss Seidel
es tambin un mtodo de relajacin con = 1 .
x i(k ) = x i(k 1) +

En cuanto a la convergencia de los mtodos de relajacin, presentamos en siguiente


teorema.

Teorema
Si A es simtrica y definida positiva, entonces el mtodo de relajacin converge si y
slo si 0 < < 2 .
En particular vimos antes que para el mtodo de Gauss Seidel haba convergencia para
= 1.
En los mtodos de relajacin se pasa del vector x i(k 1) al x i(k ) en n etapas, a diferencia
del mtodo de Jacobi en el que no hay etapas intermedias. Asimismo en cada una de las
etapas se emplea un vector distinto (vase (0.17) y Algoritmo 2) que se diferencia del
anterior en una componente.

A partir de (0.21) y (0.24), y separando las sumas en matrices diagonal y triangulares


superior e inferior, se obtiene (vase [Burden y Faires, 1985] para detalles)
x (k ) = (D L)1 [(1 )D + U ] x (k 1) + (D L)1b.
(0.25)
________________________________________________________________
15
Manuel Dez Minguito

Anlisis Numrico: Mtodos iterativos de resolucin de sistemas de ecuaciones lineales


Ejemplo

Un ejemplo ilustrador propuesto en [Burden y Faires, 1985] , y que reproducimos aqu,


muestra la eficiencia del mtodo.
Se trata del sistema siguiente
4 3
0 x 1 24

3 4 1 x = 30
(0.26)
2

0 1 4 x 3 24

cuya solucin es (x 1, x 2 , x 3 ) = (3, 4, 5)T . Se inicia con el vector x (0) = (1,1,1)T y se


resuelve con el mtodo de Gauss Seidel y con el mtodo SRS con = 1.25 . Se puede
demostrar (hgase como ejercicio) que en la iteracin k = 7 se obtienen los resultados
mostrados en la Tabla 1.

Gauss Seidel
SRS

x1
3.0134110
3.0000490

x2
3.9888241
4.0002586

x3
-5.0027940
-5.0003486

Tabla 1. Comparativa mtodos de Gauss Seidel y SRS.

Como puede observarse un = 1.25 > 1 acelera sustancialmente la convergencia. De


hecho, para llegar errores relativos de 107 se requieren 34 iteraciones para Gauss
Seidel y slo 14 para SRS.
La pregunta obvia es cmo determinar el valor de ptimo. Para ello presentamos el
siguiente teorema para matrices tridiagonales, como la del ejemplo (0.26).

Teorema
Si A es definida positiva y tridiagonal entonces
1. 0 < (TGS ) = (TJ )2 < 1
2. El ptimo para el mtodo SRS es = 2 / 1 + 1 (TJ )2 .

Y con esta eleccin de se verifica (TGS ) = 1 .


As pues, para el ejemplo (0.26), que es una matriz tridiagonal, TJ = D 1(L + U )
(vase (0.13)). Luego la matriz diagonal es
4 0 0

(0.27)
D = 0 4 0,

0 0 4

por tanto
D 1

1/ 4
0
0

0 .
= 0
1/ 4

0
1/ 4
0

(0.28)

As
________________________________________________________________
16
Manuel Dez Minguito

Anlisis Numrico: Mtodos iterativos de resolucin de sistemas de ecuaciones lineales

0
0 0 3 0
1/ 4

1/ 4
D 1(L + U ) = 0
0 3 0 1

1 0
1/ 4 0
0
0
y desarrollando el producto de ambas matrices
0
0.75
0

D 1(L + U ) = 0.75
0
0.25 .

0
0.25
0

(0.29)

(0.30)

A continuacin determinamos el radio espectral de la matriz D 1(L + U ) . Para ello,


determinamos el polinomio caracterstico

0.75
0

det(TJ I 3 ) = 0.75
0.25 = ( 2 0.625) .
(0.31)

0.25
0
De aqu se sigue que

(TJ ) = 0.625
y, de acuerdo con el teorema anterior,
= 2 / 1 + 1 0.625 1.24

(0.32)
(0.33)

que no est muy alejado del que se ha empleado en el ejemplo (0.26).

El algoritmo para SRS es el siguiente

Algoritmo [Burden y Faires, 1985]: Mtodo SRS.


Input n, aij , bi , X 0i , , M ,TOL
Ouput 0, X 0i
k 1
While k M
k 1
For i = 1 to n
i 1
n

bi aij x j aij X 0 j

j =1
j =i +1
x i (1 ) X 0i +
aii
End

If x X 0 < TOL Then


Output k, x i
Output Solucin determinada con xito
Exit
________________________________________________________________
17
Manuel Dez Minguito

Anlisis Numrico: Mtodos iterativos de resolucin de sistemas de ecuaciones lineales


End

X0 x
End
Output Nmero mximo de iteraciones superado
Output No se he encontrado una solucin
Exit
Para resolver Ax = b dado el parmetro y una estimacin inicial x i(0) se debe
introducir el nmero de ecuaciones y de incgnitas ( n ), esto es, el orden del sistema;
las entradas de la matriz A , aij para 1 i, j n ; las entradas del trmino
inhomogneo bi ; cada componente de x i(0) , X 0i ; una tolerancia TOL y el mximo
nmero de iteraciones M .
% SOR ALGORITHM 7.3
%
% To solve Ax = b given the parameter w and an initial approximation
% x(0):
%
% INPUT:
the number of equations and unknowns n; the entries
%
A(I,J), 1<=I, J<=n, of the matrix A; the entries
%
B(I), 1<=I<=n, of the inhomogeneous term b; the
%
entries XO(I), 1<=I<=n, of x(0); tolerance TOL;
%
maximum number of iterations N; parameter w (omega).
%
% OUTPUT: the approximate solution X(1),...,X(n) or a message
%
that the number of iterations was exceeded.
syms('OK', 'AA', 'NAME', 'INP', 'N', 'I', 'J', 'A', 'X1');
syms('TOL', 'NN', 'W', 'K', 'ERR', 'S', 'FLAG', 'OUP');
TRUE = 1;
FALSE = 0;
fprintf(1,'This is the SOR Method for Linear Systems.\n');
OK = FALSE;
fprintf(1,'The array will be input from a text file in the
order:\n');
fprintf(1,'A(1,1), A(1,2), ..., A(1,n+1) \n');
fprintf(1,'A(2,1), A(2,2), ..., A(2,n+1),\n');
fprintf(1,'..., A(n,1), A(n,2), ..., A(n,n+1)\n\n');
fprintf(1,'Place as many entries as desired on each line, but \n');
fprintf(1,'separate entries with at least one blank.\n');
fprintf(1,'The initial approximation should follow in same
format.\n\n\n');
fprintf(1,'Has the input file been created? - enter Y or N.\n');
AA = input(' ','s');
if AA == 'Y' | AA == 'y'
fprintf(1,'Input the file name in the form - drive:\\name.ext\n');
fprintf(1,'for example:
A:\\DATA.DTA\n');
NAME = input(' ','s');
INP = fopen(NAME,'rt');
OK = FALSE;
while OK == FALSE
fprintf(1,'Input the number of equations - an integer.\n');
N = input(' ');
if N > 0
A = zeros(N,N+1);
X1 = zeros(1,N);
for I = 1 : N

________________________________________________________________
18
Manuel Dez Minguito

Anlisis Numrico: Mtodos iterativos de resolucin de sistemas de ecuaciones lineales


for J = 1 : N+1
A(I,J) = fscanf(INP, '%f',1);
end;
end;
for I = 1 : N
X1(I) = fscanf(INP, '%f',1);
end;
% use X1 for X0
OK = TRUE;
fclose(INP);
else
fprintf(1,'The number must be a positive integer.\n');
end;
end;
OK = FALSE;
while OK == FALSE
fprintf(1,'Input the tolerance.\n');
TOL = input(' ');
if TOL > 0
OK = TRUE;
else
fprintf(1,'Tolerance must be a positive number.\n');
end;
end;
OK = FALSE;
while OK == FALSE
fprintf(1,'Input maximum number of iterations.\n');
NN = input(' ');
if NN > 0
OK = TRUE;
else
fprintf(1,'Number must be a positive integer.\n');
end;
end;
fprintf(1,'Input parameter w (omega)\n');
W = input(' ');
% use W for omega
else
fprintf(1,'The program will end so the input file can be
created.\n');
end;
if OK == TRUE
% STEP 1
K = 1;
OK = FALSE;
% STEP 2
while OK == FALSE & K <= NN
% ERR is used to test accuracy - it measures the infinity norm
ERR = 0;
% STEP 3
for I = 1 : N
S = 0;
for J = 1 : N
S = S-A(I,J)*X1(J);
end;
S = W*(S+A(I,N+1))/A(I,I);
if abs(S) > ERR
ERR = abs(S);
end;
X1(I) = X1(I)+S;
end;

________________________________________________________________
19
Manuel Dez Minguito

Anlisis Numrico: Mtodos iterativos de resolucin de sistemas de ecuaciones lineales


% STEP 4
if ERR <= TOL
OK = TRUE;
% process is complete
else
% STEP 5
K = K+1;
% STEP 6 - is not used since only one vector is required
end;
end;
if OK == FALSE
fprintf(1,'Maximum Number of Iterations Exceeded.\n');
% STEP 7
% procedure completed unsuccessfully
else
fprintf(1,'Choice of output method:\n');
fprintf(1,'1. Output to screen\n');
fprintf(1,'2. Output to text file\n');
fprintf(1,'Please enter 1 or 2.\n');
FLAG = input(' ');
if FLAG == 2
fprintf(1,'Input the file name in the form - drive:\\name.ext\n');
fprintf(1,'for example:
A:\\OUTPUT.DTA\n');
NAME = input(' ','s');
OUP = fopen(NAME,'wt');
else
OUP = 1;
end;
fprintf(OUP, 'SOR ITERATIVE METHOD FOR LINEAR SYSTEMS\n\n');
fprintf(OUP, 'The solution vector is :\n');
for I = 1 : N
fprintf(OUP, ' %11.8f', X1(I));
end;
fprintf(OUP, '\nusing %d iterations with\n', K);
fprintf(OUP, 'Tolerance %.10e in infinity-norm\n', TOL);
fprintf(OUP, 'with Parameter %.10e\n', W);
if OUP ~= 1
fclose(OUP);
fprintf(1,'Output file %s created successfully \n',NAME);
end;
end;
end;

Algoritmo 3. Mtodo de sobre-relajacin sucesiva.

Ntese que cuando se hace = 1 se recuperan el algoritmo de Gauss Seidel


(Algoritmo 2).

Antes de pasar a la siguiente seccin vamos a resumir los mtodos vistos hasta ahora en
la siguiente tabla. Para ello supondremos que (como, por ejemplo, en (0.13)) la matriz
A se puede descomponer segn A = D L U , siendo D la matriz compuesta por
los elementos de la diagonal principal de A ( diag(A) ) y L y U son las matrices
formadas por los elementos (cambiados de signo) que componen la parte triangular
inferior y triangular superior, respectivamente, de A .
________________________________________________________________
20
Manuel Dez Minguito

Anlisis Numrico: Mtodos iterativos de resolucin de sistemas de ecuaciones lineales

Mtodo del descenso ms rpido


Otro mtodo iterativo para resolver un sistema lineal de ecuaciones tipo Ax = b con
x , b n , A M n ( ) , det(A) 0 , y siendo A simtrica y definida positiva, es el
mtodo del descenso ms rpido (steepest descent).
Recordamos que las hiptesis anteriores significan que A = AT (simtrica) y
x T Ax > 0 para x 0 (definida positiva).
El mtodo se basa en el resultado siguiente
Si A es una matriz simtrica y definida positiva, el problema de resolver el sistema
Ax = b es equivalente al problema de minimizar la forma cuadrtica
q(x ) = x , Ax 2 x , b
(0.34)
( )
No vamos a demostrar el resultado; simplemente usaremos un par de aspectos que se
desarrollan en la demostracin. En ella se puede comprobar que la forma q(x + tv ) , con
v n y t , es mnima para t = tmin = v, b Ax / v, Av , tomando como valor
2

q(x + tminv ) = q(x ) v, b Ax / v, Av .


(0.35)
Este resultado indica que q disminuye al pasar de x a x + tminv , excepto cuando
2

v, b Ax / v, Av = 0

(0.36)

esto es, cuando v sea ortogonal al residual ( v, b Ax = 0 ).


Si x es la solucin del sistema Ax = b es claro que se cumple (0.36), siendo x un
punto mnimo para (0.34).

El somero esbozo de la demostracin nos sirve para disear el algoritmo, puesto que
sugiere un mtodo iterativo de resolucin. La idea es minimizar q(x ) a lo largo de
distintas trayectorias (dadas por v ). A v tambin se le denomina vector de direccin de
bsqueda. En la iteracin k del algoritmo se tendrn (x (0), x (1), , x (k ) ) y se deber
elegir para cada una de las iteraciones un valor apropiado de v (k ) . La siguiente iteracin
se genera del modo siguiente
x (k ) = x (k 1) + t (k 1)v (k 1)
(0.37)
siendo
t (k ) = v (k ), b Ax (k ) / v (k ), Av (k ) .
(0.38)
Si v (k 1) = 1 (es un vector direccin), x (k ) mide exactamente la distancia recorrida de

x (k 1) a x (k ) .

________________________________________________________________
21
Manuel Dez Minguito

Anlisis Numrico: Mtodos iterativos de resolucin de sistemas de ecuaciones lineales


El mtodo del descenso ms rpido se define suponiendo que v (k ) debe ser el gradiente
negativo de q en x (k ) . Se hace esta eleccin porque la derivada direccional de q (que
no es ms que la derivada de (0.35)) en un punto segn la direccin v (k ) mide el cambio
en q relativo al cambio de variable en la direccin de v (k ) . Asimismo se sabe que la
derivada direccional en un punto es mxima segn la direccin del gradiente en dicho
punto [Molina, 1996]. Por lo tanto, la direccin en la que el valor de q en x (k ) decrece
ms, es aquella dada por q(x (k ) ) . El tal caso, el gradiente lleva la direccin del
residuo r (k ) = b Ax (k ) . Por tanto, el mtodo del descenso ms rpido viene dado, a
partir de un x (0) inicial, por
v (k 1), v (k 1)
(k )
(k )
(k )
(k 1)
(0.39)
v = b Ax ,
x =x
v (k 1).
+ (k 1)
(k 1)
v , Av
El algoritmo formal para el mtodo del descenso ms rpido es el siguiente:
Algoritmo [Kincaid y Cheney, 1990]: Steepest Descent.
Input A, bi , x , M
(0)

Output 0,x (0)


For k = 0 to k = M 1
v (k ) b Ax (k )
t (k ) v (k ), v (k ) / v (k ), Av (k )

x (k +1) x (k ) + t (k )v (k )
Output k + 1, x (k +1)
End

Algoritmo 4. Algoritmo formal para el mtodo del descenso ms rpido.

Y para su implementacin en un computador


Algoritmo [Kincaid y Cheney, 1990]: Steepest Descent.
Input A, b, x , M
Output 0,x
For k = 1 to k = M
v b Ax
t v, v / v, Av
x x + tv
Output k, x
End

________________________________________________________________
22
Manuel Dez Minguito

Anlisis Numrico: Mtodos iterativos de resolucin de sistemas de ecuaciones lineales

Algoritmo 5. Mtodo del descenso ms rpido.

El mtodo del descenso ms rpido se emplea raras veces para resolver problemas
unidimensionales como Ax = b . El mtodo encuentra mucha mayor aplicacin en
problemas multidimensionales.

Mtodo del gradiente conjugado


El mtodo del gradiente conjugado es un tipo especial de mtodo de direccin
conjugada. Estos ltimos son aquellos que pretenden minimizar la forma cuadrtica
(0.34) a lo largo de una sucesin de trayectorias.
En particular, el mtodo del gradiente conjugado aplica a sistemas de ecuaciones
lineales como Ax = b en los cuales A es simtrica y definida positiva. En este mtodo,
las direcciones v (k ) , que forman un sistema A -ortogonal, se determinan una a una en
cada iteracin. Asimismo los residuales r (k ) = b Ax (k ) , forman un sistema ortogonal
(en el sentido clsico), esto es, r ( j ), r (k ) = 0 si j k .
Al formar las direcciones v (k ) un sistema A -ortogonal, el teorema siguiente da las
pautas para establecer el algoritmo

Teorema
Sea (v (0), , v n

( )

) un sistema A -ortogonal de vectores no nulos, para A es simtrica y

definida positiva. Entonces dado un x (0) inicial y definiendo


b Ax (k 1), v (k ) (k )
(k )
(k 1)
x =x
+
v ,
v (k ), Av (k )

(0.40)

para 1 i n , se tiene que Ax n = b .


( )

El algoritmo formal (no para ser implementado en un computador) es el siguiente

Algoritmo [Kincaid y Cheney, 1990]: Mtodo del gradiente conjugado.

________________________________________________________________
23
Manuel Dez Minguito

Anlisis Numrico: Mtodos iterativos de resolucin de sistemas de ecuaciones lineales


Input x (0), A, b, , M
r (0) b Ax (0)
v (0) r (0)
Output 0, x (0), r (0)
For k = 0 to k = M 1
If v (k ) = 0 Then Stop
t (k ) r (k ), r (k ) / v (k ), Av (k )

x (k +1) = x (k ) + t (k )v (k )
r (k +1) = r (k ) t (k )Av (k )
2
If r (k +1) < Then Stop
2

(k )

(k +1)

, r (k +1) / r (k ), r (k )

v (k +1) = r (k ) + s (k )v (k )
Output k + 1, x (k +1), r (k +1)
End

Algoritmo 6. Algoritmo formal para el mtodo del gradiente conjugado.

Ntese que en el algoritmo, si v (k ) = 0 entonces, tericamente x (k ) es solucin del


sistema lineal Ax = b . La computacin requiere almacenar cuatro vectores x (k ) , r (k ) ,
v (k ) y Av (k ) . El algoritmo para computacin es el siguiente
Algoritmo [Kincaid y Cheney, 1990]: Mtodo del gradiente conjugado.

________________________________________________________________
24
Manuel Dez Minguito

Anlisis Numrico: Mtodos iterativos de resolucin de sistemas de ecuaciones lineales


Input x i(0), aij , bi , , M ,

r b Ax
v r
c r, r
Output 0, x (0), r (0)
For k = 1 to k = M
1/2
If v, v
< Then Stop
z Av
t c / v, z
x x + tv
r r tz
d r, r
If d 2 < Then Stop
v r + (d / c ) v

c d
Output k, x , r
End

Algoritmo 7. Mtodo del gradiente conjugado.

Inicialmente fue concebido como un mtodo directo, se comprob que la solucin


exacta no poda obtenerse en muchos casos en un nmero finito de pasos, as que acab
emplendose como mtodo iterativo. Este mtodo es ms recomendable que uno de
eliminacin Gaussiana en el caso de tener matrices de rdenes elevados y dispersas. En
teora este mtodo conduce a la solucin del sistema en, como mucho, n pasos. De
hecho, para problemas bien condicionados y sistemas muy grandes, la convergencia en
menos iteraciones que el orden del sistema est garantizada.

________________________________________________________________
25
Manuel Dez Minguito

Anlisis Numrico: Mtodos iterativos de resolucin de sistemas de ecuaciones lineales

Bibliografa
Burden, R.L. and Faires, J.D., 1985. Numerical Analysis. PWS-Kent Publishing
Company, Boston, EE. UU.
Kincaid, D. and Cheney, W., 1990. Numerical Analysis. Brooks/Cole Publishing,
Pacific Grove, California, EE. UU.
Molina, J.J.Q., 1996. Ecuaciones Diferenciales, Anlisis Numrico y Mtodos
Matemticos. Editorial Santa Rita, Granada.

________________________________________________________________
26
Manuel Dez Minguito

Potrebbero piacerti anche