Metódo de Gauss

La técnica conocida como eliminación de Gauss  involucra una combinación de ecuaciones para eliminar las incógnitas. Aunque es uno de los métodos más antiguos en la solución de ecuaciones simultaneas, continua siendo uno de los algoritmos de mayor importancia, y es la base para resolver ecuaciones lineales en muchos paquetes  populares de software.
 
La eliminación gaussiana comprende la eliminación hacia adelante y la sustitución hacia atrás. Aunque las técnicas son adecuadas para implementarlas en computadoras, se requiere de algunas modificaciones para obtener un algoritmo confiable, por ejemplo evitar la división por cero.
 
Este procedimiento está diseñado para resolver un conjunto de n ecuaciones.

Eliminación hacia delante de incógnitas: la primera fase se designa para reducir el conjunto de ecuaciones a un sistema triangular superior. El paso inicial será el de eliminar la primera incógnita, x1, desde la segunda hasta la n-ésima ecuación.

Método de gauss eliminación hacia adelante:








Método de gauss sustitución hacia atrás:

X3 = c’’3 / a’’33
X2 = (c’2 / a’23 X3)  / a’22
X1 = (c1 – a12 X2 – a13 X3) / a11
 

Eliminación de gauss simple (ejemplo):

 



 
La primera parte del procedimiento es la eliminación hacia adelante. Se multiplica E1 por 0.1/3 y es resta el resultado de la ecuación E2.
 
a21 = 0.1 - 3(0.1/3)         =  0
a22 = 7 - (-0.1(0.1/3))     =  7.0033
a23 = -0.3 - (-0.2(0.1/3)) = -0.2933
c2   = -19.3 - 7.85(0.1/3) = -19.5617
 
Después se multiplica la ecuación E1 por 0.3/3 y se resta de la ecuación E3.
 
a31 = 0.3 - 3(0.3/3)         =  0
a32 = -0.2 - (-0.1(0.3/3)) =  -0.19
a33 = 10 - (-0.2(0.3/3))   =  10.02
c3   = 71.4 - 7.85(0.3/3)  =  70.615
 
El conjunto de ecuaciones queda de la siguiente manera:
 
 
 

Para completarse la eliminación hacia adelante, x2 debe eliminarse de la ecuación E3. Para llevar a cabo esto, se multiplica la ecuación E2 por -.19 / 7.0033 y se resta el resultado de la ecuación E3.
 
a32 = -0.19 - 7.0033(-0.19/7.0033)         = 0
a33 = 10.02 - 0.2933(-0.19/7.0033)        = 10.028
c3   = 70.615 - (-19.5617(-0.19/7.0033)) = 70.084
 
Después de aplicar la primera fase del método de gauss, la eliminación hacia adelante nuestro conjunto de ecuaciones nos queda de la siguiente manera:
 
 
 
 
 
 

Método de gauss sustitución hacia atrás:

 
De la ecuación E3 despejamos X3. 
X3 = 70.084 / 10.028 = 6.99
 
Debemos sustituir X3 en la ecuación E2 y despejamos X2. 
X2 = (-19.5617 - (-0.2933(6.99))) / 7.0033 = -2.5
 
Por ultimo sustituimos X3, X2 en la ecuación E1 y obtenemos X1.
X1 = (7.85 - (-0.1(-2.5)) - (-0.2(6.99))) / 3 = 2.99
 

Algoritmo Para el Método de Gauss en C#:


// Metódo de Gauss fase de eliminación hacia adelante.
// algoritmo simple no evita la division por cero.
static void Eliminacion(double[,] matriz, int n)
{
    for (int k = 0; k < n - 1; k++)
    {
        for (int i = k + 1; i < n; i++)
        {
            double factor = matriz[i, k] / matriz[k, k];
 
            for (int j = k; j <= n; j++)
            {
                matriz[i, j] = matriz[i, j] - matriz[k, j] * factor;
            }
        }
    }
}
 
// Metódo de Gauss fase de suitución hacia atras.
static double[] Sustitucion(double[,] matriz, int n)
{
    double[] resultado = new double[n];
 
    resultado[n - 1] = matriz[n - 1, n] / matriz[n - 1, n - 1];
 
    for (int f = n - 2; f >= 0; f--)
    {
        double sum = 0;
 
        for (int i = n - 1; i > f; i--)
        {
            sum += matriz[f, i] * resultado[i];
        }
 
        resultado[f] = (matriz[f, n] - sum) / matriz[f, f];
    }
 
    return resultado;
}

     

    Comentarios

    Entradas populares de este blog

    Conectar SQL Server con Java

    Entrenar OpenCV en Detección de Objetos

    Procesamiento de imágenes en OpenCV

    Acceso a la webcam con OpenCV

    Conociendo la clase cv::Mat de OpenCV