Algoritmo Eliminación Gauss-Jordan VB 2010
Hola, veamos preámbulo de wikipedia:
En matemáticas, la eliminación de Gauss-Jordan, llamada así debido a Carl Friedrich Gauss y Wilhelm Jordan, es un algoritmo del álgebra lineal para determinar las soluciones de un sistema de ecuaciones lineales, encontrar matrices e inversas. Un sistema de ecuaciones se resuelve por el método de Gauss cuando se obtienen sus soluciones mediante la reducción del sistema dado a otro equivalente en el que cada ecuación tiene una incógnita menos que la anterior. El método de Gauss transforma la matriz de coeficientes en una matriz triangular superior. El metodo de Gauss-Jordan continúa el proceso de transformación hasta obtener una matriz diagonal unitaria.
Ejemplo
Supongamos que es necesario encontrar los números x, y, z, que satisfacen simultáneamente estas ecuaciones:
Esto es llamado un sistema lineal de ecuaciones. El objetivo es reducir el sistema a otro equivalente, que tenga las mismas soluciones. Las operaciones (llamadas elementales) son estas:
- Multiplicar una ecuación por un escalar no nulo.
- Intercambiar de posición dos ecuaciones
- Sumar a una ecuación un múltiplo de otra.
Estas operaciones pueden representarse con matrices elementales que se usan también en otros procedimientos como la factorización LU o la diagonalización por congruencia de una matriz simétrica.
En nuestro ejemplo, eliminamos x de la segunda ecuación sumando 3/2 veces la primera ecuación a la segunda y después sumamos la primera ecuación a la tercera. El resultado es:
Ahora eliminamos y de la primera ecuación sumando -2 veces la segunda ecuación a la primera, y sumamos -4 veces la segunda ecuación a la tercera para eliminar y.
Primero:
, es decir,
que no tiene solución.Implementación en Visual Basic 2010
Module Module1
Dim A(500, 500), C() As Double
Dim sum, factor, tem As Double
Dim n, m, j, k As Integer
Sub Main()
Console.BackgroundColor = ConsoleColor.White
Console.Clear()
Console.ForegroundColor = ConsoleColor.Black
Console.Title = "ELIMINACIÓN DE GAUSS-JORDAN"
Console.Write(vbLf) 'Da un enter al titulo
Console.Write("" & vbTab & "ELIMINACIÓN DE GAUSS-JORDAN")
Console.Write(vbLf)
Console.Write(vbLf)
Call Ingresar()
Call Presentar()
Call GAUSSJORDAN()
Call Imprimir()
End Sub
Sub Ingresar()
Console.Write("" & vbTab & "Ingrese el tamaño de la matriz primitiva : ", n)
n = Integer.Parse(Console.ReadLine())
m = n + 1
Console.WriteLine("" & vbLf & " * Ingrese los elementos de la matriz aumentada : " & vbLf & "")
For i As Integer = 1 To n
For j = 1 To m
Console.Write("" & vbTab & "Elemento [{0},{1}] : ", i, j)
A(i, j) = Double.Parse(Console.ReadLine())
Next
Next
End Sub
Sub Presentar()
Console.WriteLine("" & vbLf & " * La matriz aumentada es : " & vbLf & "")
For i As Integer = 1 To n
For j = 1 To m
Console.Write("" & vbTab & "{0,2:f2}", A(i, j))
Next
Console.Write("" & vbLf & "")
Next
End Sub
Sub GAUSSJORDAN()
For l As Integer = 1 To n - 1
j = l
For k = l + 1 To n
If (Math.Abs(A(j, l)) >= Math.Abs(A(k, l))) Then
Else : j = k
End If
Next
If Not (j = l) Then
For i As Integer = 1 To m
tem = A(l, i)
A(l, i) = A(j, i)
A(j, i) = tem
Next
End If
For j = l + 1 To n
tem = A(j, l) / A(l, l)
For i As Integer = 1 To m
A(j, i) = A(j, i) - tem * A(l, i)
Next
Next
Next
ReDim C(n * 2)
C(n) = A(n, m) / A(n, n)
For i As Integer = 1 To n - 1
j = n - i
sum = 0
For l As Integer = 1 To i
k = j + l
sum = sum + A(j, k) * C(k)
Next
C(j) = (A(j, m) - sum) / A(j, j)
Next
End Sub
Sub Imprimir()
Console.WriteLine("" & vbLf & " * La solución del sistema es : " & vbLf & "")
For i As Integer = 1 To n
For j = 1 To 1
Console.Write("" & vbTab & "X" & i & " = " & "{0,2:f2}", C(i))
Next j
Console.Write("" & vbLf & "")
Next i
Console.ReadLine()
End Sub
End Module
En base al ingreso de datos de los algoritmos anteriores este código se acopla perfectamente. Nos vemos y espero sus comentarios. Ya que he recibido errores por parte de algunos lectores voy a ver si les subo el link de mi ejemplo:Link: https://docs.google.com/file/d/0B-UGWA03tc5ZNTloUEFRUmpuT0k/edit?usp=sharing
Counter Downloads









parcero una dudita, al introducir tu codigo como aparece me sale sintaxis error, vos sabes como soluciono eso?
ResponderEliminarQue tal, como dice en mi post, la de gauss jordan solo es la funcion, es necesario ingresar los elementos ordenadamente,en su caso para que mejor les ayude voy a ver si pongo el ejemplo de descarga
ResponderEliminarAhora puedes descargar mi ejemplo
ResponderEliminar