Está en la página 1de 9

SIMULACIN DE YACIMIENTOS

TAREA I: SIMULACIN EN FORTRAN DEL MTODO ITERATIVO DE JACOBI Y GAUSS SEIDEL.

Jos Alejandro Lozano Arias


Juan David Vallejo Restrepo

1. Mtodo de Jacobi

En qu consiste el mtodo?

El mtodo de Jacobi plantea una solucin numrica () , al sistema de ecuaciones lineales = ,


cabe resaltar que la matriz debe ser diagonalmente dominante para que exista una solucin del
sistema. Matemticamente los () se hallan con la siguiente formula:

()
( =1,1 (1) )
= (1)

Operativamente el proceso empieza asignando valores iniciales a las variables, de tal forma que
para la prxima iteracin se sustituyen los valores obtenidos de las variables en la iteracin
inmediatamente anterior.

El mtodo para determinar que la aproximacin es buena es por medio del criterio del residuo.

b A X i ij
m 1
j
i
0
ResMax
rel

Res (2)
Cdigo en fortran para el mtodo de Jacobi
Qu hace el cdigo?

- Para comenzar, se declaran las variables necesarias que se utilizarn en todo el programa,
tambin el vector A, B, Xo (vector de aproximacin inicial), Xk (vector solucin) y mult, que
es un vector que guarda el producto de matriz por vector.
- Despus el programa pide al usuario que digite la dimensin de la matriz A y de acuerdo a
ste, redefine las dimensiones de los matrices y los vectores que usar en adelante.
- A continuacin el programa lee de un archivo .txt (que debe estar ubicado en la misma
carpeta del ejecutable Jacobi), los valores de la matriz A, del vector B y del vector Xo. A su
vez, el usuario debe ingresar el error que desea utilizar para el criterio de convergencia y un
nmero mximo de iteraciones a realizar.
- El programa toma el vector inicial Xo, y le aplica el mtodo de Jacobi haciendo la primera
iteracin.
- Como el criterio de convergencia es B-AX<Tol, es necesario calcular el producto de la matriz
A, por el vector X encontrado en la iteracin anterior. Se us un ciclo para encontrar A(X) y
a ese resultado se le llam mult.
- El error se calcular por medio de la norma infinito de B-AX, la cual toma el mayor valor del
vector, que para sta primera iteracin ser el residuo inicial.
- Se inicializa un contador llamado L, que llevar registro de las iteraciones que se han
realizado (L va hasta el valor que haya ingresado el usuario) y aplica el mtodo de Jacobi
para el nuevo vector Xo.
- Calcula nuevamente B-AX, con el vector obtenido en la iteracin anterior.
- A continuacin se calcula la norma infinito de B-AX, sta se divide entre el residuo inicial y
se compara con el error que el usuario defini.
- Finalmente, si el error relativo es menor que el error que el usuario ingres, el programa se
detiene e imprime el valor final de Xk y L, que es la cantidad de iteraciones que hizo. De lo
contrario, vuelve a definir Xo igual a Xk y vuelve a empezar el ciclo.

2. Mtodo de Gauss Seidel

En qu consiste el mtodo?

ste mtodo emplea valores iniciales y posteriormente itera para obtener mejores aproximaciones
a la solucin. Es especialmente adecuado cuando se tiene un gran nmero de ecuaciones. Dado que
el error en ste mtodo viene dado por el nmero de iteraciones, el error de redondeo no suele
preocupar.

El mtodo de Gauss Seidel supone un sistema de n ecuaciones:

[]{} = {} (3)

Y calcula los valores de como:

1
=1 =1
= (4)

Se empieza el proceso de solucin escogiendo valores iniciales para las x. stos valores se sustituyen
en la ecuacin 3, la cual se utiliza para calcular un nuevo valor de . Despus se reemplaza el nuevo
valor de en la ecuacin 3 y se calcula el nuevo valor de 2 , y de la misma forma se hace hasta
calcular el ltimo valor del sistema que corresponde a . Despus se regresa a la primera ecuacin
y se repite todo el procedimiento hasta que el error sea menor a una tolerancia fijada.
La calidad de la aproximacin se mide usando el criterio del residuo.

b A X
i ij
m 1
j
i
ResMax
rel

Res 0 (5)

A primera vista, el mtodo iterativo de Jacobi y el de Gauss Seidel son muy similares, sin embargo,
dichos mtodos varan con respecto a la asignacin de los datos de las variables para la iteracin 2
en adelante; es decir, en el mtodo de Jacobi el valor que se tiene despus de la iteracin es el que
se asignar a la nueva variable, mientras que en el mtodo de Gauss Seidel, los valores que se van
obteniendo de la variable se van reemplazando de manera sucesiva en las otras ecuaciones.
A continuacin se muestra un esquema comparativo entre Gauss Seidel (a) y Jacobi (b), para un
supuesto de una matriz 3X3

Ilustracin 1. Diferencia entre los mtodos de a) Gauss Seidel y b) Jacobi, para un sistema de ecuaciones lineales 3X3.
Tomado de [1]
Cdigo en fortran para Gauss Seidel
Qu hace el cdigo?

- Para comenzar, se declaran las variables necesarias que se utilizarn en todo el programa,
tambin el vector A, B, Xo (vector de aproximacin inicial), Xk (vector solucin) y mult, que
es un vector que guarda el producto de matriz por vector.
- Despus el programa pide al usuario que digite la dimensin de la matriz A y de acuerdo a
ste, redefine las dimensiones de los matrices y los vectores que usar en adelante.
- A continuacin el programa lee de un archivo .txt (que debe estar ubicado en la misma
carpeta del ejecutable Gauss Seidel), los valores de la matriz A, del vector B y del vector
Xo. A su vez, el usuario debe ingresar el error que desea utilizar para el criterio de
convergencia y un nmero mximo de iteraciones a realizar.
- El programa toma el vector inicial Xo, y le aplica el mtodo de Gauss Seidel haciendo la
primera iteracin
- Como el criterio de convergencia es B-AX<Tol, es necesario calcular el producto de la matriz
A, por el vector X encontrado en la iteracin anterior. Se us un ciclo para encontrar A(X) y
a ese resultado se le llam mult.
- El error se calcular por medio de la norma infinito de B-AX, la cual toma el mayor valor del
vector, que para sta primera iteracin ser el residuo inicial.
- Se inicializa un contador llamado L, que llevar registro de las iteraciones que se han
realizado (L va hasta el valor que haya ingresado el usuario) y aplica el mtodo de Gauss
Seidel para el nuevo vector Xo.
- Calcula nuevamente B-AX, con el vector obtenido en la iteracin anterior.
- A continuacin se calcula la norma infinito de B-AX, sta se divide entre el residuo inicial y
se compara con el error que el usuario defini.
- Finalmente, si el error relativo es menor que el error que el usuario ingres, el programa
para e imprime el valor final de Xk y L, que es la cantidad de iteraciones que hizo. De lo
contrario, vuelve a definir Xo igual a Xk y vuelve a empezar el ciclo.
Ejemplo de aplicacin

Se cre una matriz 4x4, sabiendo de antemano que las soluciones son 1 = 1, 2 = 2, 3 = 1,
4 = 1 as:

101 2 + 23 = 6
1 + 112 3 + 34 = 25
{
21 2 + 103 4 = 11
32 3 + 84 = 15

Y con base en lo anterior, se corre sta misma matriz en el simulador aplicando los mtodos de
Jacobi y Gauss Seidel. Los resultados obtenidos, junto con el nmero de iteraciones son:

Procedimiento usando Jacobi y el cdigo en Fortran

Ilustracin 2. Captura de pantalla, resultados Mtodo Jacobi en Fortran

Se puede observar que el simulador despus de ingresar la dimensin de la matriz y tomar los datos
del .txt, realiza 9 iteraciones (de acuerdo a la tolerancia que se le fij) y arroja como resultado: X 1=
0.99967, X2= 2.00044, X3= -1.00036, X4= 1.00061; que prcticamente no difieren de la solucin real
que es 1 = 1, 2 = 2, 3 = 1, 4 = 1.
Procedimiento usando Jacobi y el cdigo en Fortran

Ilustracin 3. Captura de pantalla, resultados Mtodo de Gauss Seidel en Fortran

Se puede observar que el simulador despus de ingresar la dimensin de la matriz y tomar los datos
del .txt, realiza 5 iteraciones (de acuerdo a la tolerancia que se le fij) y arroja como resultado: X 1=
0.99938, X2= 1.99982, X3= -0.99978, X4= 1.00009; que prcticamente no difieren de la solucin real
que es 1 = 1, 2 = 2, 3 = 1, 4 = 1.

En definitiva ambos mtodos manejan una alta precisin y demuestran efectividad para la solucin
de sistemas de ecuaciones lineales nxn.

Referencias

[1] D. Lpez y Y. Ceballos, Mtodo de Jacobi, Medelln.

[2] S. Chapra y R. Canale, Mtodos Numricos para Ingenieros, McGraw-Hill, 2006.

También podría gustarte