Está en la página 1de 14

0.

Mtodo de Gauss-Seidel e

Los mtodos de Gauss y Cholesky hacen parte de los mtodos directos o e e nitos. Al cabo de un n mero nito de operaciones, en ausencia de errores u de redondeo, se obtiene x solucin del sistema Ax = b. o El mtodo de Gauss-Seidel hace parte de los mtodos llamados indirectos o e e 0 0 iterativos. En ellos se comienza con x = (x1 , x0 , ..., x0 ), una aproximacin o 2 n inicial de la solucin. A partir de x0 se construye una nueva aproximacin de o o la solucin, x1 = (x1 , x1 , ..., x1 ). A partir de x1 se construye x2 (aqu el suo 1 2 n per ndice indica la iteracin y no indica una potencia). As sucesivamente se o construye una sucesin de vectores {xk }, con el objetivo, no siempre garano tizado, de que lim xk = x .
k

Generalmente los mtodos indirectos son una buena opcin cuando la matriz e o es muy grande y dispersa o rala (sparse), es decir, cuando el n mero de u 2 elementos no nulos es peque o comparado con n , n mero total de elementos n u de A. En estos casos se debe utilizar una estructura de datos adecuada que permita almacenar unicamente los elementos no nulos. En cada iteracin del mtodo de Gauss-Seidel, hay n subiteraciones. En la o e primera subiteracin se modica unicamente x1 . Las dems coordenadas x2 , o a x3 , ..., xn no se modican. El clculo de x1 se hace de tal manera que se a satisfaga la primera ecuacin. o x1 = 1 x1 i b1 (a12 x0 + a13 x0 + + a1n x0 ) n 3 2 , a11 = x0 , i = 2, ..., n. i

En la segunda subiteracin se modica unicamente x2 . Las dems coordeo a nadas x1 , x3 , ..., xn no se modican. El clculo de x2 se hace de tal manera a que se satisfaga la segunda ecuacin. o x2 2 x2 i b2 (a21 x1 + a23 x1 + + a2n x1 ) n 3 1 = , a22 = x1 , i = 1, 3, ..., n. i

As sucesivamente, en la n-sima subiteracin se modica unicamente xn . e o Las dems coordenadas x1 , x2 , ..., xn1 no se modican. El clculo de xn se a a 1

hace de tal manera que se satisfaga la n-sima ecuacin. e o xn = n xn i


n1 n1 n1 bn (an1 x1 + an3 x3 + + ann xn ) , ann n1 = xi , i = 1, 2, ..., n 1.

Ejemplo 0.1. Resolver 10 1 2 1

partiendo de x0 = (1, 2, 3, 4). x1 = 1 x1 x2 2 x2 x3 3 x3 x4 4 x4

2 1 0 x1 x2 20 2 3 1 30 0 x3 2 3 20 x4

26 15 = 53 47

26 (2 2 + (1) 3 + 0 4) = 2.5, 10 = (2.5, 2, 3, 4). 15 (1 2.5 + (2) 3 + 3 4) = = 1.175, 20 = (2.5, 1.175, 3, 4). 53 (2 2.5 + 1 (1.175) + 0 4) = 1.9725, = 30 = (2.5, 1.175, 1.9725, 4). 47 (1 2.5 + 2 (1.175) + 3 1.9725) = 2.0466, = 20 = (2.5, 1.175, 1.9725, 2.0466).

Una vez que se ha hecho una iteracin completa (n subiteraciones), se utiliza o el ultimo x obtenido como aproximacin inicial y se vuelve a empezar; se o calcula x1 de tal manera que se satisfaga la primera ecuacin, luego se calcula o x2 ... A continuacin estn las iteraciones siguientes para el ejemplo anterior. o a 3.0323 3.0323 3.0323 3.0323 1.1750 1.0114 1.0114 1.0114 2 1.9725 1.9725 2.0025 2.0025 2.0466 2.0466 2.0466 1.9991

3.0025 3.0025 3.0025 3.0025 3.0000 3.0000 3.0000 3.0000 3.0000 3.0000 3.0000 3.0000

1.0114 0.9997 0.9997 0.9997 0.9997 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000

2.0025 2.0025 2.0002 2.0002 2.0002 2.0002 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000

1.9991 1.9991 1.9991 1.9998 1.9998 1.9998 1.9998 2.0000 2.0000 2.0000 2.0000 2.0000

Tericamente, el mtodo de Gauss-Seidel puede ser un proceso innito. En o e la prctica el proceso se acaba cuando de xk a xk+n los cambios son muy a peque os. Esto quiere decir que el x actual es casi la solucin x . n o Como el mtodo no siempre converge, entonces otra detencin del proceso, e o no deseada pero posible, est determinada cuando el n mero de iteraciones a u realizadas es igual a un n mero mximo de iteraciones previsto. u a El siguiente ejemplo no es convergente, ni siquiera empezando de una aproximacin inicial muy cercana a la solucin. La solucin exacta es x = (1, 1, 1). o o o Ejemplo 0.2. Resolver 1 2 10 x1 11 11 1 2 x2 = 12 1 5 2 x3 8 partiendo de x0 = (1.0001, 1.0001, 1.0001). 1.0012 1.0001 1.0001 1.0012 1.0134 1.0001 1.0012 1.0134 0.9660 0.6863 1.0134 0.9660 0.6863 2.5189 0.9660 0.6863 2.5189 9.9541 3

83.5031 2.5189 9.9541 83.5031 926.4428 9.9541 83.5031 926.4428 2353.8586 Algunos criterios garantizan la convergencia del mtodo de Gauss-Seidel. e Por ser condiciones sucientes para la convergencia son criterios demasiado fuertes, es decir, la matriz A puede no cumplir estos requisitos y sin embargo el mtodo puede ser convergente. En la prctica, con frecuencia, es muy e a dispendioso poder aplicar estos criterios. Una matriz cuadrada es de diagonal estrictamente dominante por las si en cada la el valor absoluto del elemento diagonal es mayor que la suma de los valores absolutos de los otros elementos de la la,
n

|aii | >

j=1,j=i

|aij | , i.

Teorema 0.1. Si A es de diagonal estrictamente dominante por las, entonces el mtodo de Gauss-Seidel converge para cualquier x 0 inicial. e Teorema 0.2. Si A es denida positiva, entonces el mtodo de Gauss-Seidel e 0 converge para cualquier x inicial. Tericamente el mtodo de Gauss-Seidel se deber detener cuando xk o e a x < . Sin embargo la condicin anterior necesita conocer x , que es preo cisamente lo que se est buscando. Entonces, de manera prctica el mtodo a a e de GS se detiene cuando xk xk+n < .

Dejando de lado los super ndices, las frmulas del mtodo de Gauss-Seidel se o e pueden reescribir para facilitar el algoritmo y para mostrar que xk x y xk xk+n estn relacionadas. a
n

bi xi bi xi

aij xj
j=1,j=i

aii
n j=1

aij xj + aii xi aii 4 ,

xi x i + Sean

bi Ai x . aii

ri = bi Ai x, ri i = aii El valor ri es simplemente el error, residuo o resto que se comete en la i-sima e ecuacin al utilizar el x actual. Si ri = 0, entonces la ecuacin i-sima se o o e satisface perfectamente. El valor i es la modicacin que sufre xi en una o iteracin. o Sean r = (r1 , r2 , ..., rn ), = (1 , 2 , ..., n ). Entonces xk+n = xk + . Adems a k x es solucin si y solamente si r = 0, o sea, si y solamente = 0. Lo o anterior justica que el mtodo de GS se detenga cuando . La norma e puede ser la norma euclidiana o max |i | o |i |.

Si en el criterio de parada del algoritmo se desea enfatizar sobre los errores o residuos, entonces se puede comparar con / (a11 , ..., ann ) ; por ejemplo, max |aii |

El esquema del algoritmo para resolver un sistema de ecuaciones por el mtodo de Gauss-Seidel es: e datos: A, b, x0 , , maxit x = x0 para k = 1, ...,maxit nrmD 0 para i = 1, ..., n i = (bi prodEsc(Ai , x))/aii xi x i + i nrmdnrmD+i n-para i si nrmD ent x x, salir n-para k

0.2

Solucin por m o nimos cuadrados

Consideremos ahora un sistema de ecuaciones Ax = b, no necesariamente cuadrado, donde A es una matriz m n cuyas columnas son linealmente independientes. Esto implica que hay ms las que columnas, m n, y a que adems el rango de A es n. Es muy probable que este sistema no tenga a solucin, es decir, tal vez no existe x que cumpla exactamente las m igualo dades. Se desea que Ax Ax b Ax b Ax b 2 Ax b 2 2 = = = = = b, 0, 0, 0, 0.

Es Posible que lo deseado no se cumpla, entonces se quiere que el incumplimiento (el error) sea lo ms peque o posible. Se desea minimizar esa cantidad, a n min Ax b
2 2

(1)

o nimos cuadrados. El vector x que minimice Axb 2 se llama solucin por m 2 Como se ver ms adelante, tal x existe y es unico (suponiendo que las a a columnas de A son linealmente independientes). Con el animo de hacer ms clara la deduccin, supongamos que A es una a o matriz 4 3. Sea f (x) = Ax b 2 , 2 f (x) =(a11 x1 + a12 x2 + a13 x3 b1 )2 + (a21 x1 + a22 x2 + a23 x3 b2 )2 + (a31 x1 + a32 x2 + a33 x3 b3 )2 + (a41 x1 + a42 x2 + a43 x3 b4 )2 .

0.2.1

Ecuaciones normales

Para obtener el m nimo de f se requiere que las tres derivadas parciales, f /x1 , f /x2 y f /x3 , sean nulas. f =2(a11 x1 + a12 x2 + a13 x3 b1 )a11 x1 + 2(a21 x1 + a22 x2 + a23 x3 b2 )a21 6

+ 2(a31 x1 + a32 x2 + a33 x3 b3 )a31 + 2(a41 x1 + a42 x2 + a43 x3 b4 )a41 . Escribiendo de manera matricial, f =2(A1 x b1 )a11 + 2(A2 x b2 )a21 + 2(A3 x b3 )a31 x1 + 2(A4 x b4 )a41 . Si B es una matriz y u un vector columna, entonces (Bu)i = Bi u. f = 2 ((Ax)1 b1 )a11 + ((Ax)2 b2 )a21 + ((Ax)3 b3 )a31 x1 +((Ax)4 b4 a41 ,
4

= 2
i=1 4

(Ax b)i ai1 , (A1 )i (Ax b)i , (AT 1 )i (Ax b)i ,

= 2
i=1 4

= 2
i=1

= 2AT 1 (Ax b), = 2 AT (Ax b) 1 De manera semejante f = 2 AT (Ax b) x2 f = 2 AT (Ax b) x3


2

Igualando a cero las tres derivadas parciales y quitando el 2 se tiene AT (Ax b)


T

1 2 3

= 0, = 0, = 0

AT (Ax b) 7

A (Ax b)

Es decir, AT (Ax b) = 0, AT A x = A T b . (2)

Las ecuaciones (2) se llaman ecuaciones normales para la solucin (o seuo dosolucin) de un sistema de ecuaciones por m o nimos cuadrados. La matriz AT A es simtrica de tama o n n. En general, si A es una matriz e n T m n de rango r, entonces A A tambin es de rango r (ver [Str86]). Como e se supuso que el rango de A es n, entonces AT A es invertible. Ms a n, AT A a u es denida positiva. Por ser AT A invertible, hay una unica solucin de (2), o sea, hay un solo o vector x que hace que las derivadas parciales sean nulas. En general, las derivadas parciales nulas son simplemente una condicin necesaria para obtener o el m nimo de una funcin (tambin lo es para mximos o para puntos de silla), o e a pero en este caso, como AT A es denida positiva, f es convexa, y entonces anular las derivadas parciales se convierte en condicin necesaria y suciente o para el m nimo. En resumen, si las columnas de A son linealmente independientes, entonces la solucin por m o nimos cuadrados existe y es unica. Para obtener la solucin o por m nimos cuadrados se resuelven las ecuaciones normales. Como AT A es denida positiva, (2) se puede resolver por el mtodo de e Cholesky. Si m n y al hacer la factorizacin de Cholesky resulta que o AT A no es denida positiva, entonces las columnas de A son linealmente dependientes. Si el sistema Ax = b tiene solucin exacta, sta coincide con la solucin por o e o m nimos cuadrados. Ejemplo 0.3. Resolver por m nimos cuadrados: 2 1 0 3.1 x 1 2 3 1 8.9 x2 = 2 3.1 2 1 x3 5 4 2 0.1

Las ecuaciones normales dan: 4.0 34 20 15 x1 20 25 12 x2 = 20.5 23.4 15 12 14 x3 8

La solucin por m o nimos cuadrados es: x = (2.0252, 1.0132, 2.9728) . El error, Ax b, es: 0.0628 0.0196 0.0039 . 3 0.0275

Ejemplo 0.4. Resolver por m nimos cuadrados: 3 2 1 3 x 1 2 0 1 9 x2 = 3 2 2 6 x3 0 5 4 6

Las ecuaciones normales dan: 34 20 48 x1 3 20 25 15 x2 = 21 48 15 81 x3 27

Al tratar de resolver este sistema de ecuaciones por el mtodo de Cholesky; e no se puede obtener la factorizacin de Cholesky, luego AT A no es denida o positiva, es decir, las columnas de A son linealmente dependientes. Si se aplica el mtodo de Gauss, se obtiene que AT A es singular y se concluye que e las columnas de A son linealmente dependientes. 3 Ejemplo 0.5. Resolver por m nimos cuadrados: 2 1 3 1 2 x1 0 = 2 6 2 x2 5 4 6 Las ecuaciones normales dan: 34 20 20 25 x1 x2 = 48 15

La solucin por m o nimos cuadrados es: x = (2, 1) . 9

El error, Ax b, es:

En este caso, el sistema inicial ten solucin exacta y la solucin por m a o o nimos cuadrados coincide con ella. 3 La implementacin eciente de la solucin por m o o nimos cuadrados, v ecuaa ciones normales, debe tener en cuenta algunos detalles. No es necesario construir toda la matriz simtrica AT A (n2 elementos). Basta con almacenar e en un arreglo de tama o n(n + 1)/2 la parte triangular superior de AT A. n Este almacenamiento puede ser por las, es decir, primero los n elementos de la primera la, enseguida los n 1 elementos de la segunda la a partir del elemento diagonal, despus los n 2 de la tercera la a partir del elemento e diagonal y as sucesivamente hasta almacenar un solo elemento de la la n. Si se almacena la parte triangular superior de AT A por columnas, se almacena primero un elemento de la primera columna, enseguida dos elementos de la segunda columna y as sucesivamente. Cada una de las dos formas tiene sus ventajas y desventajas. La solucin por el mtodo de Cholesky debe tener o e en cuenta este tipo de estructura de almacenamiento de la informacin. o Otros mtodos ecientes para resolver sistemas de ecuaciones por m e nimos cuadrados utilizan matrices ortogonales de Givens o de Householder.

0 0 . 0 0

10

function a = interFilas(a, i, j) t = a(i,:) a(i,:) = a(j,:) a(j,:) = t endfunction //---------------------------------------------------------function x = sistTriSup(a, b) // solucion de un sistema triangular superior n = size(a,1) x = zeros(n,1) for i=n:-1:1 x(i) = ( b(i) - a(i,i+1:n)*x(i+1:n) ) / a(i,i) end endfunction //---------------------------------------------------------function [x, y] = interc(x, y) t = x x = y y = t endfunction //========================================================== //========================================================== // metodo de Gauss con pivoteo parcial // no muy eficiente a0 = [ 2 4 5 -10; 1 2 3 4; -10 8 5 4; -1 1 2 -2] b = [-14 40 44 -1] eps = 1.0e-8; n = size(a0,1) a = [a0 b] for k = 1:n-1 [vmax , pos] = max( abs(a(k:n,k) ) )

11

if vmax <= eps printf(\n Matriz singular o casi singular.\n\n) return end m = k-1 + pos if m > k a = interFilas(a, k, m) end for i = k+1:n coef = a(i,k)/a(k,k) a(i,:) = a(i,:) - coef*a(k,:) end end if abs( a(n,n) ) <= eps printf(\n Matriz singular o casi singular.\n\n) return end x = sistTriSup(a(:,1:n), a(:,n+1) ) //========================================================== //========================================================== // metodo de Cholesky // // // // // // // // // // resolver A x = b A simetrica y definida positiva factorizacion de Cholesky A = U U, U triangular superior inevertible

A x = b U U x = b sea y = U x U y = b resolver el sistema anterior para obtener 12

// reoslver

U x = y

para obtener

a = [9 2 3; 2 8 -1; 3 -1 5] b = [36 24 23] n = size(a, 1) y = zeros(n,1); x = zeros(n,1); u = chol(a) y(1) = b(1)/u(1,1) for i=2:n y(i) = ( b(i) - u(1:i-1,i)*y(1:i-1) )/u(i,i) end x(n) = y(n)/u(n,n) for i=n-1:-1:1 x(i) = ( y(i) - u(i,i+1:n)*x(i+1:n) )/u(i,i) end //========================================================== //========================================================== // metodo de Gauss-Seidel a = [ 10 2 -1 0 ; 1 20 -2 3 ; -2 1 30 0 ; 1 2 3 20] b = [26 -15 53 47 ] x0 = [0 0 0 0] n = size(a,1)

x = x0 maxit = 10 for k = 1:maxit 13

for i = 1:n res = b(i) - a(i,:)*x x(i) = x(i) + res/a(i,i) end end

14

También podría gustarte