Algoritmo Eliminación de Gauss Simple VB 2010

Uno de los métodos directos mas simple de  calculo de sistemas de ecuaciones es el de Eliminación Gauss Simple o Basica, siguiendo con teoria: de http://www.uv.es/~diaz/mn/node29.html

Eliminación gaussiana básica

Ilustraremos el método de Gauss aplicando el procedimiento a un sistema de cuatro ecuaciones con cuatro incógnitas:
 \begin{displaymath}\begin{array}{llll} \left( \begin{array}{rrrr} 6 & -2 & 2 ... ...ay}{r} 12 \\ 34 \\ 27 \\ -38 \end{array} \right) \end{array}\end{displaymath}

En el primer paso, multiplicamos la primera ecuación por $\frac{12}{6}=2$y la restamos a la segunda, después multiplicamos la primera ecuación por $\frac{3}{6}=\frac{1}{2}$y la restamos a la tercera y finalmente multiplicamos la primera ecuación por $\frac{-6}{6}=-1$y la restamos a la cuarta. Los números 2, $\frac{1}{2}$y -1 son los multiplicadores del primer paso del proceso de eliminación. El número 6 es el elemento pivote de este primer paso y la primera fila, que no sufre modificación alguna, se denomina fila pivote. El sistema en estos momentos tiene el siguiente aspecto:
 \begin{displaymath}\begin{array}{llll} \left( \begin{array}{rrrr} 6 & -2 & 2 ... ...ay}{r} 12 \\ 10 \\ 21 \\ -26 \end{array} \right) \end{array}\end{displaymath}

En el siguiente paso del proceso, la segunda fila se emplea como fila pivote y -4 como elemento pivote. Aplicamos del nuevo el proceso: multiplicamos la segunda fila por $\frac{-12}{-4}=3$y la restamos de la tercera y después multiplicamos la segunda fila por $\frac{2}{-4}=-\frac{1}{2}$y la restamos a la cuarta. Los multiplicadores son en esta ocasión 3 y $-\frac{1}{2}$y el sistema de ecuaciones se reduce a:
 \begin{displaymath}\begin{array}{llll} \left( \begin{array}{rrrr} 6 & -2 & 2 ... ...ay}{r} 12 \\ 10 \\ -9 \\ -21 \end{array} \right) \end{array}\end{displaymath}

El último paso consiste en multiplicar la tercera ecuación por $\frac{4}{2}=2$y restarla a la cuarta. El sistema resultante resulta ser:
 \begin{displaymath}\begin{array}{llll} \left( \begin{array}{rrrr} 6 & -2 & 2 ... ...ray}{r} 12 \\ 10 \\ -9 \\ -3 \end{array} \right) \end{array}\end{displaymath}

El sistema resultante es triangular superior y equivalente al sistema original (las soluciones de ambos sistemas coinciden). Sin embargo, este sistema es fácilmente resoluble aplicando el algoritmo de sustitución regresiva. La solución del sistema de ecuaciones resulta ser:
\begin{displaymath}x = \left( \begin{array}{r} 1 \\ -3 \\ -2 \\ 1 \end{array} \right) \end{displaymath} 
 La implementacion en VB2010
 Sub GaussSimple()
  Dim sum, factor As Double
  Dim n As Integer'Depende de la matriz
        'Eliminación hacia adelante
        If A(1, 1) = 0 Then
            Console.WriteLine("" & vbLf & "*El elemento pivote a(1,1), no se puede continuar = 0:*" & vbLf & "")
            Console.ReadLine()
        Else
            For k As Integer = 1 To n - 1
                For i As Integer = k + 1 To n
                    factor = A(i, k) / A(k, k)
                    For j As Integer = k + 1 To n
                        A(i, j) = A(i, j) - (factor * A(k, j))
                    Next j
                    B(i, 1) = B(i, 1) - (factor * B(k, 1))
                Next i
            Next k
            'Sustitución hacia atrás
            X(n, 1) = B(n, 1) / A(n, n)
            For i As Integer = n - 1 To i Step -1
                sum = 0
                For j As Integer = i + 1 To n
                    sum = sum + (A(i, j) * X(j, 1))
                Next j
                X(i, 1) = (B(i, 1) - sum) / A(i, i)
            Next
        End If
    End Sub

 Si no esta claro mi algoritmo, me escriben y ver en que los puedo ayudar. Recuerden para completar el proyecto tienen que integrar los codigos de ingreso de la matriz, los que pueden conseguir en mis anteriores publicaciones sobre matrices, etc. Nos vemos en otra entrega!!

Comentarios

  1. hola voy empezando a programar matrices me podrias explicar esta parte
    For k As Integer = 1 To n - 1
    For i As Integer = k + 1 To n
    factor = A(i, k) / A(k, k)
    For j As Integer = k + 1 To n
    A(i, j) = A(i, j) - (factor * A(k, j))
    Next j
    B(i, 1) = B(i, 1) - (factor * B(k, 1))
    Next i
    Next k


    y tambien como declaras las matrices de A y de B

    ResponderEliminar
  2. hola que tal, contestando tu pregunta la parte interesante se centra en esta parte del codido:

    Esta seccion opera con el pivote a partir de la segunda fila para formar ceros debajo de (1,1); El pivote se lo conoce como (i,i)osea los elementos de la diagonal principal
    For k As Integer = 1 To n - 1
    For i As Integer = k + 1 To n
    factor = A(i, k) / A(k, k)
    Reacomoda la matriz operada con el factor
    For j As Integer = k + 1 To n
    A(i, j) = A(i, j) - (factor * A(k, j))
    Next j
    Realiza las operaciones con la matrix B independiente
    B(i, 1) = B(i, 1) - (factor * B(k, 1))
    Next i
    Next k
    Con esto se prepara la matriz para realizar sustitucion hacia atras
    la matriz formada es de diagonal superior
    con la sustitucion hacia atras se reduce y se encuentra la sustitucion, si revisas un poco de teoria lo entenderas mucho mejor, en muscho de los casos la teoria es el paso para la creacion de codigos muy complejos si le colocas todos los recursos para que se lleve a efecto.
    Si no estas conforme me indicas, Bueno con tu segunda pregunta lo hago asi:

    Dim A(500, 500) As Double
    Dim B(500, 500) As Double
    Dim X(500, 500) As Double
    Dim sum, factor As Double
    Dim n As Integer ' Contiene el orden de la matriz
    Sub Main()
    Console.BackgroundColor = ConsoleColor.White
    Console.Clear()
    Console.ForegroundColor = ConsoleColor.Black
    Console.Title = "ELIMINACIÓN DE GAUSS (SIMPLE)"
    Console.Write(vbLf) 'Da un enter al titulo
    Console.Write("" & vbTab & "ELIMINACIÓN DE GAUSS (SIMPLE)")
    Console.Write(vbLf)
    Console.Write(vbLf)
    Call Ingresar()
    Call GaussSimple()
    Call Imprimir()
    End Sub



    Sub Ingresar()
    ' Lee los datos ingresados por teclado
    Console.Write("" & vbTab & "Ingrese el tamaño de la matriz : ", n)
    n = Integer.Parse(Console.ReadLine()) 'Lee el tamaño de la matriz
    Console.Write(vbLf)
    Console.WriteLine("" & vbLf & " * Ingrese los elementos de la Matriz A * " & vbLf & "")
    '-----Para la Matriz A
    For i As Integer = 1 To n
    For j As Integer = 1 To n
    Console.Write("" & vbTab & "Elemento [{0},{1}] : ", i, j)
    A(i, j) = Double.Parse(Console.ReadLine())
    Next
    Next
    '-----Para el vector B
    Console.WriteLine("" & vbLf & " * Ingrese los elementos de la Matriz B * " & vbLf & "")
    For i As Integer = 1 To n
    For j As Integer = 1 To 1
    Console.Write("" & vbTab & "Elemento [{0},{1}] : ", i, j)
    B(i, j) = Double.Parse(Console.ReadLine()) ' Lectura de datos
    Next
    Next
    End Sub
    'Para la salida de datos
    Sub Imprimir()
    'Impresión de la solución
    Console.WriteLine("" & vbLf & " * La Solución del sistema es : *" & vbLf & "")
    For i As Integer = 1 To n
    For j As Integer = 1 To 1
    Console.Write("" & vbTab & "X" & i & " = " & "{0,2:f3}", X(i, j))
    Next
    Console.Write("" & vbLf & "")
    Next
    Console.ReadLine()
    End Sub

    Reitero, si no estas conforme para subir mi proyecto?

    ResponderEliminar
  3. amigo quisiera que me facilies tu proyecto es para usarlo como guia en el desarrollo de mi tarea te agadeceria mucho por fa es que es una tarea de tres dias y aun no logro entender muy bien de antemano te doy las gracias si puedes mi mail smart_eduard@hotmail.com

    ResponderEliminar
  4. hola como esta disculpa que te moleste mira a mi me mandaron a hacer un trabajo de resolucion de sistemas de ecuaciones por el metodo de Gauss Jordan, lo tengo que hacer en visual basic y la verdad no entiendo nada xq solo he programado en c++ no se si me podrias ayudar mi correo es eduar_ad@hotmail.com

    ResponderEliminar
  5. listo no hay problema espero te ayude,y no olvides recomendar esto si es de tu satisfaccion...de antemano gracias...

    ResponderEliminar
    Respuestas
    1. HOLA ESTOY TRATANDO PROGRAMAR EL MÉTODO EN VISUAL BASIC 6.0 PERO NO ENTIENDO EL PROCEDIMIENTO DE SUSTITUCIÓN HACIA ATRÁS PODRÍAS EXPLICARME ESA PARTE..TE LO AGRADECERIA MUCHO MI CORREO ES sano_bus@hotmail.com

      Eliminar
  6. Hola disculpa tbn me gustaria que me puedas brindar tu programa esque no entien muy bn como programarlo y nesecito una guia y es un trabajo que teng que presentar me preguntaba si podrias enviarmelo a mario_bocchio@hotmail.com gracias

    ResponderEliminar
  7. amigo podrías ayudarme soy nuevo en visual y necesito entregar un proyecto semestral correo krloss1993@hotmail.com

    ResponderEliminar
  8. me gustaria me dieras un ejemplo de como hacer una matriz 3x3 por el metodo de eliminacion de gauss en visual basic 2010

    ResponderEliminar
    Respuestas
    1. que tal mi correo es jossm04@gmail.com si quieres un ejemplo en concreto para enviarte

      Eliminar
  9. Hola Jose! perdon las molestias! me gustaria que me puedas brindar de tu programa de eliminación de Gauss! para visual basic 2010 porfavor! me gustaria programarlo y me surgieron varias dudas. mi correo es german_007_89@hotmail.com muchas gracias

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Imprimir directamente ReportViewer a impresora predeterminada

DevComponents DotnetBar 12.5.0.2

Metodo Iterativo Gauss-Seidel en Visual Basic