Método Gauss Seidel

Este es uno de los métodos mas interesantes del análisis numérico y particualmente útil ya que nos permite encontrar la solución de un sistema de «n» ecuaciones con «n» incógnitas.

Para comenzar es preciso mencionar que es un método iterativo, es decir que debe aplicarse recursivamente hasta encontrar una solucion adecuada o con un error considerablemente pequeño.

En cada iteración obtenemos una solución posible del sistema con un error determinado, a medida que aplicamos nuevamente el método, la solución puede ser más precisa, entonces se dice que el sistema converge, pero si al aplicar el método reiteradas veces la solución tiene un error (ya explicaremos como se calcula este error) cada vez mayor se dice que el sistema no converge y no se puede resolver el sistema de ecuaciones por este método.

Bien proseguiré con la explicación del método y luego aclararé los detalles necesarios para determinar la eficacia del mismo.

Teniendo el siguiente sistema de ecuaciones:

gauss_seidel1.gif

Despejamos x1 de la ecuación 1, x2 de la ecuación 2, … , xn de la ecuación n, quedando:

gauss_seidel2.gif

Desde la formula anterior resultan las fórmulas que se deberán ir aplicando en las diferentes iteraciones. Para comenzar a aplicar el método debemos asignar un valor arbitrario a las variables x2,…xn con el fin de obtener x1. Lo mas conveniente en este caso es que los valores comiencen en cero, lo cual nos facilitaría el trabajo ya que se reduce el cálculo de las primeras soluciones, entonces de esto resulta que:

gauss_seidel3.gif

Ahora despejamos x2 de la ecuación 2 y reemplazamos a x1 por el valor obtenido en la ecuación anterior. De esto nos queda:

gauss_seidel4.gif

Una vez que tenemos x2, despejamos x3 de la ecuación 3 y así sucesivamente con las n ecuaciones, cada vez asignando el valor de las x1, x2, … xn-1 obtenido en el paso anterior.

Cuando hemos despejado las xn, tenemos lo que se conoce como primera solución o solución de la primer iteración:

gauss_seidel5.gif

Con los nuevos valores de x1, x2,…,xn aplicamos los mismos pasos anteriores pero con los nuevos valores de las xn, de esta manera conseguimos una segunda solución:

gauss_seidel6.gif

Al tener esta segunda solución estamos en condiciones de calcular el error que se calcula como sigue:

gauss_seidel7.gif

Así, repetimos el método tantas veces hasta que el error sea muy pequeño o los suficientemente aceptable.

Ahora solo queda mencionar que para que un sistema sea convergente se debe cumplir que la matriz de coeficientes sea diagonalmente dominante, y para ello se debe verificar la siguiente expresión:

gauss_seidel9.gif

gauss_seidel10.gif

Si no se cumple esa condición, se puede permutar las filas de la matriz, con el fin de poder convertirla en una diagonalmente dominante.

Ahora mostraré un ejemplo, mediante el uso de un programa hecho en Visual Basic que hice para aplicar el método. El programa podrá ser descargado desde aqui. Para que todos los puedan ver y tratar de entender el funcionamiento del método.

Al iniciar el programa indico que la matriz de coeficientes es de 3 filas y 3 columnas (la matriz siempre tiene que ser cuadrada). Entonces supongamos los siguientes coeficientes:

Coeficientes

Luego cargo la matriz «b» que es la que contiene el valor de los resultados de las ecuaciones:

matriz b

Hago clic en el botón verificar convergencia y si el programa me dice que se verifica, indico cuantas iteracciones quiero realizar y pulso en el botón «Calcular solución».

De esta forma el programa me arroja la solución del sistema (el valor de x1, x2,…xn) y me muestra el error, denominado por el programa como «Norma Infinito».

Solucion

Se puede apreciar que la norma infinito no las muestra en notación científica, ya que es un error muy pequeño.

También el programa tiene la opción de guardar todas las iteracciones que hizo, hasta llegar a la ultima, esta opción es muy útil ya que se pude ver como fueron variando las soluciones hasta llegar a la última iteracción indicada, a medida que se hacen mas iteracciones, mas precisa es la solución.

Para finalizar, aquí muestro la secuencia que me arrojó el programa para este ejemplo:

Resolucion de Sistema de Ecuaciones Lineales
--------------------------------------------
Matriz A
--------
9 -3 2
-5 25 3
-4 2 11
Matriz B
--------
-9
2
15
--------------------------------------------
Solucion N°:1
------------

X1=-1
X2=-0,12
X3= 1,02181818181818
Norma Infinito: 1,02181818181818

——————————————–
Solucion N°:2
————

X1=-1,26707070707071
X2=-0,296032323232323
X3= 0,956707438016529
Norma Infinito: 0,267070707070707

——————————————–
Solucion N°:3
————

X1=-1,31127909397
X2=-0,297060711355984
X3= 0,940818640621087
Norma Infinito: 4,42083868992962E-02

——————————————–
Solucion N°:4
————

X1=-1,30809104614557
X2=-0,294516446103644
X3= 0,941515337056819
Norma Infinito: 3,18804782443349E-03

——————————————–
Solucion N°:5
————

X1=-1,30739777915829
X2=-0,294461396278475
X3= 0,941757425083982
Norma Infinito: 6,93266987283891E-04

——————————————–
Solucion N°:6
————

X1=-1,30743322655593
X2=-0,294497536321264
X3= 0,941751106038073
Norma Infinito: 3,61400427889014E-05

——————————————–
Solucion N°:7
————

X1=-1,30744386900444
X2=-0,294498906525456
X3= 0,941747485184833
Norma Infinito: 1,06424485053491E-05

——————————————–
Solucion N°:8
————

X1=-1,30744352110511
X2=-0,294498402443203
X3= 0,941747520042359
Norma Infinito: 5,04082253327542E-07

——————————————–
Solucion N°:9
————

X1=-1,30744336082381
X2=-0,294498374569846
X3= 0,941747573258585
Norma Infinito: 1,60281300898291E-07

——————————————–
Solucion N°:10
————

X1=-1,30744336335852
X2=-0,294498381462735
X3= 0,941747573590125
Norma Infinito: 6,89288898181317E-09

——————————————–

Descargar Programa Método Gauss Seidel

ModulosGaussSeidel

 

Publicado en Analisis Numerico
120 Comentarios en “Método Gauss Seidel
  1. Cecille dice:

    Muchísimas gracias John, saludos.

  2. Pilar Herrera dice:

    me gustaria ver el cogido fuente x favor lo necesito para aun deber de programacion seria muy amable en enviarme el codigo a mi correo se le agradece de antemano.. Pilarik_17@hotmail.com

  3. krlos dice:

    hola, hey amigo gracias por la aplicacion , muy util
    por favor me dirias si lo isite por matlab y si es asi compartirias el codigo conmigo, quiero analizar unas funciones que aplicaste, enviamelo a mi correo por fa
    graacias

  4. pao dice:

    por fa me lo mandarias el codigo para esta muy interesante porfa este es mi correo pj_1008@hotmail.com lo antes posible

  5. nesfonta dice:

    disculpa puede enviarme el codigo a este correo
    nesfontalbor@hotmail.com

  6. vanne dice:

    hola.!! vi las pantallas de tu programa me podrias enviqr el codigo a mi correo vanne_mexico@hotmail.com

  7. Crucesita dice:

    xfa envienme el codigo grax

  8. xavier dice:

    esta fantastico el programa me podrias mandar por correo el codigo tengo que hacer un programa similar y me seria de mucha utilidad, ¡ME URGE! gracias

  9. mel dice:

    me puedes mandar a mi tb en correo porfavor!! lo necesitooo!!

  10. mel dice:

    porfii me puedes mandar a mi tb en correo !! lo necesitooo!!

  11. carlos dice:

    muy buena explicacion. Solo que ya no nos dijiste como hacerle si el sistema converge. espero me puedas ayudar pues mi erros es cada ves mayos. gracias.

  12. Carlos, si el sistema converge significa que encontrarás una solución. Si tenés errores cada vez mas grande significa que el sistema no converge y no llegarás a una solución.
    Saludos.

  13. jose dice:

    hola geronimo se que mucha gente te lo a pedido pero estoy muy apurado y era por si me podias enviar el codigo original. de verdad te lo agradeceria mucho. saludos

  14. diana dice:

    enserio muy buena informacion pero me podrias enviar tu codificacion del programa a mi correo enserio es el calidad de urgente…si no me ire a repite de una materia te lo agradeceria mucho. sahian182@hotmail.com

  15. adan dice:

    hola muy buena información la que haz puesto, no se si me lo puedas enviar la codificación del programa y el de relajacion a mi correo, es que ando muy perdido en este soymejor21@hotmail.com

  16. john dice:

    hola, está muy bueno tu progrmaa, me podrìas mandar el codigo para estudiarlo y ver como le hiciste para trnasformar la diagonal! es urgente, gracias!!!! johnloco2005@hotmail.com

  17. El satrapal dice:

    Hola, que tal, me intereso mucho esta entrada y te felicito por el programa, quisiera saber si podrías enviarme el código fuente para ver como lo fuiste desarrollando e interiorizarme mas en el tema, agradeceria mucho tu ayuda.
    Mi mail es: mauriciojc_1988@yahoo.com.ar

    Gracias!

  18. jennyfer cortes dice:

    esta muy bueno tu programita, excelente!!!! Por favor me podras ayudar necesito el metodo gauss seisel en visual basic 6.0 (codigo fuente) ayudame por fis para pasar una materia. mi correo shasta_macnasty1@hotmail.com

  19. Jimmy dice:

    que tal, amigo me gustaria que me enviaras ese proyecto, el codigo si es posible, te lo agradeceria, tengo que presentar uno asi y no se como acerlo

  20. Jeisson Rincon dice:

    Que tal amigo, me gustaría que me enviaras el proyecto, quede muy interesado en el código, te lo agradezco, no se como hacerlo y seria de gran ayuda

  21. Gisela dice:

    Hola buen día, soy estudiante de Computación científica y me han puesto a programar este método en python y fortran, ya hice la mayoría del código, sin embargo me gustaría saber si podría mandarme el código de su programa, de antemano muchas gracias, mi correo es: giselaarrietarivera@gmail.com o gia3703@gmail.com
    que tenga una buen día.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.