Gauss Seidel y Jacobi

El método de gauss seidel y el metodo de jacobi son similares, ambos usados para resolver sistemas de ecuaciones lineales, el método de gauss seidel debe su nombre a los matemáticos Carl Friedrich Gauss y Philipp Ludwig von Seidel mientras que el método de jacobi al matemático alemán Carl Gustav Jakob Jacobi.
 

Gauss-Seidel

 
Este método iterativo es el más comúnmente usado. Debe asegurase de que los elementos de la diagonal no sean ceros para que se pueda resolver por este método.
Ejemplo si se tiene un sistema  de tres ecuaciones, X1 se puede despejar de la primera ecuación, X2 de la segunda y X3 de la tercera.




Ahora se puede empezar a resolver para encontrar X1 suponemos que X2 y X3 son ceros, resolvemos para X2 ya tenemos X1 que lo encontramos anteriormente y suponemos que X3 es cero, para encontrar X3 solo resolvemos pues ya tenemos X1 y X2.
 
El proceso se repite solo que utilizado los valores que ya tenemos de X1, X2, X3 hasta que la solución converja lo mas cercano a los valores reales.
 
Algoritmo escrito en C#, la matriz introducida debe ser diagonalmente dominante para asegurar la convergencia, este algoritmo solo realiza 5  iteraciones.
 
       public string Seidel(double[,] matrix, int filas, int columnas )
        {
            double[] sol = new double[filas];
            StringBuilder sb = new StringBuilder();

            for (int iteraciones = 0; iteraciones < 5; iteraciones++)
            {
                for (int i = 0; i < filas; i++)
                {
                    double suma = 0;
                    for (int j = 0; j < columnas - 1; j++)
                    {
                        if (j == i) continue;
                        suma += matrix[i, j] * sol[j];
                    }
                    sol[i] = (matrix[i, columnas - 1] - suma) / matrix[i, i];
                }

                for (int i = 0; i < filas; i++)
                {
                    sb.AppendLine("X" + (i + 1) + " = " + sol[i]);
                }

                sb.AppendLine();
            }

            return sb.ToString();
        }
    Programa que realiza  Gauss Seidel en C# para Visual Studio

     
    Descargar proyecto VS 2010

    Jacobi

    Otro método iterativo en el llamado iteraciones de jacobi es parecido a gauss-seidel solo que los valores encontrados no son utilizados inmediatamente.




    Para encontrar X1 suponemos que X2 y X3 son cero, para X2 en la segunda ecuación suponemos que X1 y X3 son cero y para hallar X3 suponemos que X1 y X2 son cero, ya tenemos X1, X2, X3 ahora repetimos el proceso  remplazando con los valores que ya encontramos.
     
    Algoritmo escrito en C#, la matriz introducida debe ser diagonalmente dominante para asegurar la convergencia, este algoritmo solo realiza 5  iteraciones.
     
            public string Jacobi(double[,] matrix, int filas, int columnas )
            {
                double[] sol = new double[filas];
                double[] soltem = new double[filas];
                StringBuilder sb = new StringBuilder();

                for (int iteraciones = 0; iteraciones < 5; iteraciones++)
                {
                    for (int i = 0; i < filas; i++)
                    {
                        double suma = 0;
                        for (int j = 0; j < columnas - 1; j++)
                        {
                            if (j == i) continue;
                            suma += matrix[i, j] * sol[j];
                        }
                        soltem[i] = (matrix[i, columnas - 1] - suma) / matrix[i, i];
                    }

                    for (int i = 0; i < filas; i++)
                    {
                        sol[i] = soltem[i];
                        sb.AppendLine("X" + (i + 1) + " = " + sol[i]);
                    }

                    sb.AppendLine();
                }

                return sb.ToString();
            }

    Proyecto completo en wpf iteraciones de jacobi C#
     
      
    Descarga el Proyecto VS 2010

    Comentarios

    1. Lo utilicé para comprobar mis resultados, es un excelente programa, gracias :D

      ResponderEliminar
    2. men como seria esto en java :o ya estoy analizando y primero ta bbueno felicidades, y el otro ya complejo

      ResponderEliminar
    3. oye me puuden pasar el programa angel_isaac_@hotmail.com

      ResponderEliminar
    4. amigo y en netbeans con interfaz grafica lo tienes?

      ResponderEliminar
    5. por favorf envienlo en java nadinmaza@gmail.com

      ResponderEliminar
    6. no da todas las iteraciones solo muestra 5 de 13, que son las que deberia de dar y no da el error

      ResponderEliminar

    Publicar un comentario

    Temas relacionados

    Entradas populares de este blog

    tkinter Grid

    tkinter Canvas

    Histogramas OpenCV Python

    Python Binance API