Está en la página 1de 14

0.

M etodo de Gauss-Seidel

Los m etodos de Gauss y Cholesky hacen parte de los m etodos directos o nitos. Al cabo de un n umero nito de operaciones, en ausencia de errores de redondeo, se obtiene x soluci on del sistema Ax = b. El m etodo de Gauss-Seidel hace parte de los m etodos llamados indirectos o 0 0 0 iterativos. En ellos se comienza con x = (x1 , x0 on 2 , ..., xn ), una aproximaci 0 inicial de la soluci on. A partir de x se construye una nueva aproximaci on de 1 1 1 2 la soluci on, x1 = (x1 el su1 , x2 , ..., xn ). A partir de x se construye x (aqu per ndice indica la iteraci on y no indica una potencia). As sucesivamente se construye una sucesi on de vectores {xk }, con el objetivo, no siempre garantizado, de que lim xk = x .
k

Generalmente los m etodos indirectos son una buena opci on cuando la matriz es muy grande y dispersa o rala (sparse ), es decir, cuando el n umero de 2 elementos no nulos es peque no comparado con n , n umero total de elementos de A. En estos casos se debe utilizar una estructura de datos adecuada que permita almacenar u nicamente los elementos no nulos. En cada iteraci on del m etodo de Gauss-Seidel, hay n subiteraciones. En la primera subiteraci on se modica u nicamente x1 . Las dem as coordenadas x2 , x3 , ..., xn no se modican. El c alculo de x1 se hace de tal manera que se satisfaga la primera ecuaci on. x1 1 = x1 i
0 0 b1 (a12 x0 2 + a13 x3 + + a1n xn ) , a11 = x0 i = 2, ..., n. i ,

En la segunda subiteraci on se modica u nicamente x2 . Las dem as coordenadas x1 , x3 , ..., xn no se modican. El c alculo de x2 se hace de tal manera que se satisfaga la segunda ecuaci on. x2 2 x2 i
1 1 b2 (a21 x1 1 + a23 x3 + + a2n xn ) = , a22 = x1 i = 1, 3, ..., n. i ,

As sucesivamente, en la n- esima subiteraci on se modica u nicamente xn . Las dem as coordenadas x1 , x2 , ..., xn1 no se modican. El c alculo de xn se 1

hace de tal manera que se satisfaga la n- esima ecuaci on. xn n = xn i


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

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 20 2 3 x2 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 iteraci on completa (n subiteraciones), se utiliza el u ltimo x obtenido como aproximaci on inicial y se vuelve a empezar; se calcula x1 de tal manera que se satisfaga la primera ecuaci on, luego se calcula x2 ... A continuaci on est an las iteraciones siguientes para el ejemplo anterior. 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

Te oricamente, el m etodo de Gauss-Seidel puede ser un proceso innito. En la pr actica el proceso se acaba cuando de xk a xk+n los cambios son muy peque nos. Esto quiere decir que el x actual es casi la soluci on x . Como el m etodo no siempre converge, entonces otra detenci on del proceso, no deseada pero posible, est a determinada cuando el n umero de iteraciones realizadas es igual a un n umero m aximo de iteraciones previsto. El siguiente ejemplo no es convergente, ni siquiera empezando de una aproximaci on inicial muy cercana a la soluci on. La soluci on exacta es x = (1, 1, 1). 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 m etodo de Gauss-Seidel. 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 m etodo puede ser convergente. En la pr actica, con frecuencia, es muy 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 m etodo de Gauss-Seidel converge para cualquier x 0 inicial. Teorema 0.2. Si A es denida positiva, entonces el m etodo de Gauss-Seidel 0 converge para cualquier x inicial. Te oricamente el m etodo de Gauss-Seidel se deber a detener cuando xk x < . Sin embargo la condici on anterior necesita conocer x , que es precisamente lo que se est a buscando. Entonces, de manera pr actica el m etodo de GS se detiene cuando xk xk+n < .

Dejando de lado los super ndices, las f ormulas del m etodo de Gauss-Seidel se pueden reescribir para facilitar el algoritmo y para mostrar que xk x y xk xk+n est an relacionadas.
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- esima ecuaci on al utilizar el x actual. Si ri = 0, entonces la ecuaci on i- esima se satisface perfectamente. El valor i es la modicaci on que sufre xi en una iteraci on. Sean r = (r1 , r2 , ..., rn ), = (1 , 2 , ..., n ). Entonces xk+n = xk + . Adem as k x es soluci on si y solamente si r = 0, o sea, si y solamente = 0. Lo anterior justica que el m etodo de GS se detenga cuando . La norma 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 m etodo de Gauss-Seidel es: 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

Soluci on por m 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 m as las que columnas, m n, y que adem as el rango de A es n. Es muy probable que este sistema no tenga soluci on, es decir, tal vez no existe x que cumpla exactamente las m igualdades. 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 m as peque no posible. Se desea minimizar esa cantidad, min Ax b
2 2

(1)

on por m nimos cuadrados. El vector x que minimice Ax b 2 2 se llama soluci Como se ver a m as adelante, tal x existe y es u nico (suponiendo que las columnas de A son linealmente independientes). Con el a nimo de hacer m as clara la deducci on, supongamos que A es una , 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 soluci on (o seudosoluci on) de un sistema de ecuaciones por m nimos cuadrados. La matriz AT A es sim etrica de tama no n n. En general, si A es una matriz T m n de rango r , entonces A A tambi en es de rango r (ver [Str86]). Como se supuso que el rango de A es n, entonces AT A es invertible. M as a un, AT A es denida positiva. Por ser AT A invertible, hay una u nica soluci on de (2), o sea, hay un solo vector x que hace que las derivadas parciales sean nulas. En general, las derivadas parciales nulas son simplemente una condici on necesaria para obtener el m nimo de una funci on (tambi en lo es para m aximos o para puntos de silla), pero en este caso, como AT A es denida positiva, f es convexa, y entonces anular las derivadas parciales se convierte en condici on necesaria y suciente para el m nimo. En resumen, si las columnas de A son linealmente independientes, entonces la soluci on por m nimos cuadrados existe y es u nica. Para obtener la soluci on por m nimos cuadrados se resuelven las ecuaciones normales. Como AT A es denida positiva, (2) se puede resolver por el m etodo de Cholesky. Si m n y al hacer la factorizaci on de Cholesky resulta que AT A no es denida positiva, entonces las columnas de A son linealmente dependientes. Si el sistema Ax = b tiene soluci on exacta, esta coincide con la soluci on por m nimos cuadrados. Ejemplo 0.3. Resolver por m nimos cuadrados: 2 1 0 3.1 1 2 x1 8.9 3 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 soluci on por m 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 9 x1 1 2 0 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 m etodo de Cholesky; no se puede obtener la factorizaci on de Cholesky, luego AT A no es denida positiva, es decir, las columnas de A son linealmente dependientes. Si se aplica el m etodo de Gauss, se obtiene que AT A es singular y se concluye que 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 soluci on por m nimos cuadrados es: x = (2, 1) . 9

El error, Ax b, es:

En este caso, el sistema inicial ten a soluci on exacta y la soluci on por m nimos cuadrados coincide con ella. 3 La implementaci on eciente de la soluci on por m nimos cuadrados, v a ecuaciones normales, debe tener en cuenta algunos detalles. No es necesario construir toda la matriz sim etrica AT A (n2 elementos). Basta con almacenar en un arreglo de tama no n(n + 1)/2 la parte triangular superior de AT A. 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, despu es los n 2 de la tercera la a partir del elemento 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 soluci on por el m etodo de Cholesky debe tener en cuenta este tipo de estructura de almacenamiento de la informaci on. Otros m etodos ecientes para resolver sistemas de ecuaciones por m 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