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
En el primer paso, multiplicamos la primera ecuación por y la restamos a la segunda, después multiplicamos la primera ecuación por y la restamos a la tercera y finalmente multiplicamos la primera ecuación por y la restamos a la cuarta. Los números 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:
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 y la restamos de la tercera y después multiplicamos la segunda fila por y la restamos a la cuarta. Los multiplicadores son en esta ocasión 3 y y el sistema de ecuaciones se reduce a:
El último paso consiste en multiplicar la tercera ecuación por y restarla a la cuarta. El sistema resultante resulta ser:
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:
Eliminación gaussiana básica
Ilustraremos el método de Gauss aplicando el procedimiento a un sistema de cuatro ecuaciones con cuatro incógnitas:En el primer paso, multiplicamos la primera ecuación por y la restamos a la segunda, después multiplicamos la primera ecuación por y la restamos a la tercera y finalmente multiplicamos la primera ecuación por y la restamos a la cuarta. Los números 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:
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 y la restamos de la tercera y después multiplicamos la segunda fila por y la restamos a la cuarta. Los multiplicadores son en esta ocasión 3 y y el sistema de ecuaciones se reduce a:
El último paso consiste en multiplicar la tercera ecuación por y restarla a la cuarta. El sistema resultante resulta ser:
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:
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!!
hola voy empezando a programar matrices me podrias explicar esta parte
ResponderEliminarFor 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
hola que tal, contestando tu pregunta la parte interesante se centra en esta parte del codido:
ResponderEliminarEsta 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?
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
ResponderEliminarno problem si es para ayudar
EliminarVengo del futuro, sigue disponible?
Eliminarhola 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
ResponderEliminarlisto no hay problema espero te ayude,y no olvides recomendar esto si es de tu satisfaccion...de antemano gracias...
ResponderEliminarHOLA 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
EliminarHola 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
ResponderEliminaramigo podrías ayudarme soy nuevo en visual y necesito entregar un proyecto semestral correo krloss1993@hotmail.com
ResponderEliminarme gustaria me dieras un ejemplo de como hacer una matriz 3x3 por el metodo de eliminacion de gauss en visual basic 2010
ResponderEliminarque tal mi correo es jossm04@gmail.com si quieres un ejemplo en concreto para enviarte
EliminarHola 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