Sei sulla pagina 1di 5

2.

1 Mtodo de relajacin de Gauss-Seidel (RGS)

A fin de lograr una convergencia ms rpida a la proporcionada en el mtodo


implementado por Jacobi, se realizan cambios en el algoritmo.
Sabemos que se defini a la matriz A como: A = L + R + D, llegando a la siguiente
ecuacin:
DXK+1 = B + (D A) XK

Esta vez haremos el siguiente cambio:

L+D=G AGR G A = - R (3.24)

Reemplazando en la ecuacin (3.20), se obtiene:

G RX K 1 X K B G RX K (3.25)
Desarrollando:
GX K 1 GX K RX K 1 RX K B GX K RX K
Eliminando trminos:
GX K 1 B RX K 1

Ajustando el lado derecho para el proceso iterativo, se llega a la formula recursiva:

GX K 1 B RX K (3.26)

Desarrollando (3.26) en forma matricial, se tiene:

a11 0 x1( k 1) b1 0 a12 a13 a1n x1( k )


(k)
a 22 a 21

x (2k 1) b1 . .

x 2


.

a 31 a 32


. .

. a a . .

41 42
( k 1) (k)

a nn a n1 a n 2 a nn 1 0
x n bn 0 a n 1 n
x n

Desarrollando en forma explcita tenemos:

N N
ai i xiK 1 ai j x Kj 1 bi ai j x Kj (3.27)
j i j i

Dnde: i = 1, 2, 3,......., N
K, es el orden de aproximacin y N el orden del sistema de ecuaciones.
La tasa de convergencia en el mtodo RGS es gobernado por la matriz H, dada por:

H [ D L]1 R

En este caso existe una relacin entre los auto-valores de H y los de la matriz J, por lo
que es posible definir el radio espectral como:

H 2J

Por lo cual la tasa de convergencia es:


rH 2J 1

Ejemplo:

Usando el mtodo de Relajacin de Gauss-Seidel, resolver el siguiente sistema:


3x y 3
2x 4 y 2

Utilizaremos una tolerancia de 0.06 y el siguiente vector de aproximacin:


x10 1.2
X 0
0
x 0 .2
2
Escribiendo en forma matricial:
3 1 x 3

2 4 y 2

Dnde: x = x1, y = x2 y N = 2

Para obtener la primera aproximacin (K = 1), usaremos la ecuacin (3.27) con K = 0 y


N = 2, haciendo variar i desde 1 hasta N.

i=1
2 2
a 11x 11 a 1j x 1j b1 a 1j x 0j
j 1 j 1

b1 a 12 x 02 3 10.2
a x 0 b1 a 12 x
1
11 1
0
2 x 1
1 0.933
a 11 3
i=2
2 2
a 22 x 12 a 2j x 1j b 2 a 2j x 0j
j 2 j 2

b 2 a 21x 11 2 20.933
a 22 x a x b 2 0 x
1
2
1
21 1 1
2 0.034
a 22 4

El vector solucin en primera aproximacin es:

0.933
X1
0.034
Evaluamos ahora la convergencia, calculando si se cumple no la condicin de
convergencia (evaluacin de la diferencia).

X K 1 X K tolerancia (TOL)
Operando:
0.933 1.2 0.267

0.034 0.2 0.166

Dado que an no se ha logrado cumplir la condicin para detener las iteraciones, se


contina el proceso para una segunda aproximacin (K = 2). Ahora para K = 1y N = 2

i=1
2 2
a11 x12 a1 j x 2j b1 a1 j x1j
j 1 j 1

b1 a12 x12 3 1(0.034)


a11 x12 0 b1 a12 x12 x12 0.989
a11 3

i=2
2 2
a 22 x22 a 2 j x 2j b2 a2 j x1j
j 2 j 2

b2 a 21 x12 2 2 0.989
a 22 x22 a 21 x12 b2 0 x22 0.006
a 22 4

El vector solucin en segunda aproximacin es:

0.989
X 2
0.006

Evaluamos la condicin de convergencia, con la tolerancia indicada (0.06)

0.989 0.933 0.056



0.006 0.034 0.028

Se observa que cumple la condicin y por lo tanto se detienen las iteraciones, la solucin
aproximada del sistema es:

y = 0.006 y x = 0.989

Los resultados computacionales con el programa en Fortran son:

SOLUCION DE SISTEMAS LINEALES GAUSS-SEIDEL


==========================================

INGRESO DE DATOS
=============================================
INGRESE LA DIMENSION DE LA MATRIZ
2
INGRESE LA TOLERANCIA
0.06
INGRESE MATRIZ DE COEFICIENTES A
3 1
2 4
INGRESE ELEMENTOS DE B
3
2
INGRESE ELEMENTOS DE VECTOR APROXIMADO
1.2
0.2
=============================================

RESULTADOS EN TODOS LOS ORDENES


===============================
X: 1 1.2000 0.9333 0.9889
X: 2 0.2000 0.0333 0.0056
===============================
TOLERANCIA: 0.060000 NUM ITERACIONES: 2

Codificacin

La codificacin que genera los resultados mostrados del ejemplo anterior es la


siguiente:

PROGRAM RELAJACION_GAUSS_SEIDEL

REAL(4) A(100,100),B(100),XP(100,100)

5 WRITE (*,*)''
WRITE (*,*)' SOLUCION DE SISTEMAS LINEALES GAUSS-SEIDEL'
WRITE (*,*)' =========================================='
WRITE (*,*)''
WRITE (*,*)' INGRESO DE DATOS'

WRITE (*,*)' ============================================='


WRITE (*,*)' INGRESE LA DIMENSION DE LA MATRIZ '
READ (*,*)M
WRITE (*,*)' INGRESE LA TOLERANCIA'
READ(*,*)TOL
K2=0
WRITE (*,*)' INGRESE MATRIZ DE COEFICIENTES A'
DO I=1,M
READ (*,*)(A(I,J),J=1,M)
END DO
WRITE (*,*)' INGRESE ELEMENTOS DE B'
DO I=1,M
READ(*,*)B(I)
END DO
WRITE(*,*)''
WRITE (*,*)' INGRESE ELEMENTOS DE VECTOR APROXIMADO'
K2=1
DO I=1,M
READ(*,*)XP(K2,I)
END DO
WRITE (*,*)' ============================================='
WRITE (*,*)''
10 DO I=1,M
SUMA1=0
SUMA2=0
DO J=1,M
IF (J.LT.I) THEN
SUMA1=SUMA1+A(I,J)*XP(K2+1,J)
END IF
IF (J.GT.I) THEN
SUMA2=SUMA2+A(I,J)*XP(K2,J)
END IF
XP(K2+1,I)=(B(I)-SUMA1-SUMA2)/A(I,I)
END DO
END DO
DO I=1,M
ER=ABS(XP(K2,I)-XP(K2+1,I))
IF (ER.GT.TOL)THEN
K2=K2+1
GOTO 10
ELSE
END IF
END DO
20 WRITE(*,*)' RESULTADOS EN TODOS LOS ORDENES'
WRITE(*,*)' ==============================='
DO J=1,M
WRITE(*,25)J,(XP(MM,J),MM=1,K2+1)
END DO
WRITE(*,*)' ==============================='
WRITE(*,23)TOL,K2
23 FORMAT (' TOLERANCIA:',F9.6,1X,'NUM ITERACIONES:',I3)
25 FORMAT (' X:',I3,8(1x,F8.4))
END

Observaciones:

El mtodo de relajacin de Jacobi y el mtodo RGS convergen solo para


matrices cuya diagonal es dominante.
Es necesario calcular la tasa de convergencia para cada sistema evaluado.
Para calcular la solucin en primer orden (iniciando con K = 0), el programa
necesita de una solucin aproximada, esto determinara el nmero de iteraciones
requeridas.
Para detener el proceso iterativo debe compararse la diferencia en valor absoluto
de cada uno de los componentes de los vectores aproximados con cierta
tolerancia.

Potrebbero piacerti anche