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:
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 ModuleEn 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