Está en la página 1de 4

Tema:

MÉTODOS ITERATIVOS: MÉTODO DE JACOBI Y MÉTODO DE GAUSS-SEIDEL

Objetivos
- Hallar soluciones a sistemas de ecuaciones lineales mediante métodos iterativos.
- Entender el funcionamiento de los métodos de Jacobi y Gauss-Seidel.
- Utilizar, analizar y comparar ambos métodos y verificar cuál de los dos es más eficiente
y en que casos.

Marco teórico
Como se ha visto a lo largo del curso, se han utilizado métodos iterativos para la obtención de
raíces, puntos fijos, resolución de ecuaciones, etc., y sería de esperar que existan métodos para
la solución de sistemas de ecuaciones lineales no singulares y determinados. Verificando lo
enunciado anteriormente, existen varios métodos para ese fin, como son los Métodos de Jacobi
y Gauss-Seidel, los cuales implican acercarse mediante iteraciones a cada uno de los valores de
cada incógnita. Si bien están sujetos a una tolerancia, los resultados son muy eficaces, ágiles y
muy confiables. A continuación, el funcionamiento de cada método:

- Método de Jacobi: consiste en utilizar una matriz P (precondicionador) igual a la


diagonal de la matriz A de coeficientes, por lo que quedaría:

Ahora, con lo aprendido previamente en el curso se tiene que el precondcionador por el vector
x, es igual a la diferencia del mismo precondicionador y la matriz A por el mismo vector x, más
el vector de términos independientes b:

Si realizamos un método de iteración y le llamamos a x como un xk+1 resultado de la iteración,


obtendremos que:

Donde, si despejamos xk+1, tenemos que es igual a la inversa de la matriz diagonal (las
componentes de la inversa de una matriz diagonal son igual a la matriz de los recíprocos de cada
componente) se tienen las siguientes fórmulas, la una de manera vectorial y la otra componente
a componente:
𝑥 (𝑘+1) = 𝐷 −1 (𝒃 − (𝐴 − 𝐷)𝑥 (𝑘) )

(0) (0) (0) (0)


Tal que 𝒙(0) = (𝑥1 , 𝑥2 , 𝑥3 , … , 𝑥𝑛 )𝑇 es el vector inicial de la iteración, y es k>0. Todo esto
está sujeto a una tolerancia
para obtener la precisión
deseada. La matriz del lado
derecho es la matriz de
iteración. Una nota importante
es que, si la matriz A es
estrictamente diagonalmente
dominante por filas, entonces
el método de Jacobi converge.
- Método de Gauss-Seidel: comprende el mismo razonamiento que el método de Jacobi.
La diferencia radica en que, cuando exista la posibilidad de usar el xk+1 valor de la componente,
es decir, el valor de la solución de dicha componente de x obtenido en la iteración k+1, se la
utilizará, lo cual acelera el método desde su inicio. De forma más sencilla, sigue la estructura de
la siguiente fórmula:

Podemos observar que para la primera iteración de cada bucle k-ésimo, la primera componente
entra directamente hacia la segunda sumatoria e itera, mientras que la n-ésima componente de
cualquier iteración entrara solamente en la primera sumatoria. Las componentes intermedias
entrarán hasta cierto punto en la primera, luego saltarán la posición i-ésima y por último
acabarán las iteraciones restantes en la segunda sumatoria.
Las condiciones para cierto grupo de matrices A esta dada por:
1. Matrices que son estrictamente diagonalmente dominantes por filas;
2. Matrices que son simétricas y definidas positivas.

Códigos:
En la presente sección se mostrarán los códigos de cada ejemplo con sus respectivas
explicaciones:
- Método de Jacobi:
function [x,iter ]= IterJacobi(A,b,x0 ,nmax ,tol)
[n,n]= size(A); %Obtiene el tamaño de A
D = diag(diag(A)); %el primer diag(A)obtiene el vector diagonal de
A, y el segundo diag() obtiene una matriz
diagonal con traza igual a dicha diagonal
iter = 0; %cuenta las iteraciones
r = b - A * x0; %es la fórmula iterativa que resolverá el
sistema
err = norm (r); %es el error inicial
x = x0; %se agrega el valor a la variable de salida
while err > tol && iter < nmax
iter = iter + 1; %contador
z = D\r; %Realiza el producto vectorial entre la Inversa
de D y el residuo r el cual es la división por
cada componente de D original.
x = x + z; %Se suman x y z para acabar la iteración y
converja
r = b - A * x; %Recalcula r para la siguiente iteración
err = norm (r); %Recalcula el error mediante la norma del
vector
end
disp('La solución del sistema por Jacobi es: ')
disp(x);
disp('El número de iteraciones del sistema es: ')
disp(iter);
return

- Método de Gauss-Seidel:
function [x,iter ]= IterGauss(A,b,x0 ,nmax ,tol)
P = tril(A); %Devuelve la matriz triangularr inferior de A
iter = 0; %contador
r = b - A * x0; %La formula de Gauss Seidel tiene la misma estructura
que
%Jacobi en inicio
err = norm (r); %Obtiene el error
x = x0;
while err > tol && iter < nmax
iter = iter + 1; %contador
z = P\r; %realiza la operacion caracteristica de este
metodo,
%haciendo que la inversa de la matriz triangular
%inferior de A (precondicionador), multiplicada
por
%el residuo, utilice
%los coeficientes de r actualizados
x = x + z; %Obtiene el nuevo vector x solucion
r = b - A * x; %Recalcula el vector residuo
err = norm (r); %Recalcula el error
end
disp('La solucion del sistema por Gauss-Seidel es: ')
disp(x);
disp('El numero de iteraciones del sistema es: ')
disp(iter);

Ejercicios:
1. Compare la velocidad convergencia de los métodos de Jacobi y Gauss-Seidel y de
conclusiones:

Sea la matriz A una matriz estrictamente diagonalmente dominante por filas, entonces ambos
métodos convergen. Sea la tolerancia igual a 0.00001 y el máximo número de iteraciones igual
a 500. Sean el vector b y x0 el descritos:
8 −2 1 3 0
𝐴 = {−1 −7 3} , 𝑏 = {−2}, 𝑥0 = {0}
2 −4 6 1 0
Según la teoría estudiada, solo para ciertos casos especiales, la convergencia del método de
Gauss-Seidel es más veloz que el de Jacobi (cuando el radio espectral de la matriz de iteración
de Gauss-Seidel es igual al cuadrado del de la matriz de Jacobi en matrices tridiagonales). Por lo
que si converge más rápido se puede suponer que los radios espectrales de dichas matrices
tienen esa relación. Pero como se dijo, es una suposición porque existen una variedad de casos
en los que puede ocurrir o no lo antes descrito.

Si ingresamos en Matlab el siguiente script y lo ejecutamos tendremos lo siguiente:


Como se muestra en el Command Window, la convergencia del método de Gauss-Seidel es
mucho más ágil para encontrar las soluciones puesto que solo necesito 8 iteraciones (las cuales
se pueden optimizar aún más) a diferencia del método de Jacobi que necesitó de 20. Por lo
tanto, el método de Gauss-Seidel es mucho más potente y ágil.

2. Obtenga los valores de salida del siguiente sistema simétrico tal que la tolerancia es de
0.00001 y el número de iteraciones de 100:
8 1 2 5 3
𝐴 = {1 7 3} , 𝑏 = {1}, 𝑥0 = {2}
2 3 6 7 1
Este ejemplo se lo desarrollará por los dos métodos aprendidos y se los volverá a comprar.
Ingresando los valores, se obtienen los siguientes resultados:

Otra vez podemos conlcuir que el método de Gauss-Seidel es mucho mas veloz.

Resultados y Conclusiones
A lo largo de este informe, se han enunciado algunos conceptos que conllevan a la convergencia
de los dos métodos iterativos estudiados. Pues bien, a pesar de que ambos están ligados a que
sus matrices de coeficientes sean matrices que son estrictamente diagonalmente dominantes
por filas o matrices simétricas y definidas positivas, éstos métodos iterativos son muy potentes.
No se tiene la información necesaria para compararlos con los métodos directos que se
estudiaron previamente, pero se podría decir que en situaciones que conllevan matrices
extremadamente grandes, los métodos iterativos resultan más ágiles.

Cabe recalcar que, el método de Jacobi y el método de Gauss-Seidel son o ambos divergentes o
ambos convergentes. No existen resultados generales que muestren que el método de Gauss-
Seidel converge más rápido que el de Jacobi, pero en algunos casos especiales si ocurre, como
cuando A es una matriz tridiagonal no singular de (n x n) tal que sus elementos diagonales son
todos no nulos. Pero si hablamos de hechos, pudimos comprobar que el método de Gauss-Seidel
converge más rápido que el de Jacobi y en cuando el valor de inicial de x es alejado de las raíces,
lo hace mucho más rápido.

Referencias
Chapra, S., & Canale, R. (2007). Métodos numéricos para ingenieros. México D.F.: McGraw-Hill.
QUARTERONI, A., & SALERI, F. (2006). Cálculo Científico con Matlab y Octave. Milán: Springer.

También podría gustarte