Artículo |
Solución de Ecuaciones Lineales Simultaneas |
Autor / Fuente |
Harvey Triana / Método de Eliminación de Gauss |
Tema |
Matemática aplicada e Ingeniería |
Actualización |
Septiembre 20 de 1997 |
Descripción |
Procedimiento para solucionar sistemas de ecuaciones lineales relales de "n" dimensiónes. |
La solución de un sistema de 'n' ecuaciones lineales simultáneas con 'n' incógnitas es un interesante reto a los programadores. El siguiente código lo escribí inicialmente en Fortran (1992), aquí presento la versión Visual Basic. En general, la función encuentra aplicación en Ingeniería y matemática superior. He utilizado la función en programación de Simuladores de Flujo y Solución del Método de los Mínimos Cuadrados. El código y un ejemplo sencillo se muestra a continuación.
DefInt A-Z '------------------------------------------------------------------------- 'Solución de Ecuaciones Lineales 'Sintaxis 'Argumentos: 'A(): Arreglo bidimensional que contiene la matriz 'C(): Arreglo unidimensional que entregará la solución. 'Por Ing. Harvey Triana, Petrosoft Co., 1996 '------------------------------------------------------------------------- Static Function Gauss(ByRef A() As Double, ByRef C() As Double) As Boolean Dim Tem As Double, Sum As Double, i, l, j, k, n, m On Error GoTo Gauss_Err n = UBound(C) m = n + 1 For l = 1 To n - 1 j = l For k = l + 1 To n If (Abs(A(j, l)) >= Abs(A(k, l))) Then Else j = k End If Next If Not (j = l) Then For i = 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 = 1 To m A(j, i) = A(j, i) - Tem * A(l, i) Next Next Next C(n) = A(n, m) / A(n, n) For i = 1 To n - 1 j = n - i Sum = 0 For l = 1 To i k = j + l Sum = Sum + A(j, k) * C(k) Next C(j) = (A(j, m) - Sum) / A(j, j) Next Gauss = True 'HT© Exit Function Gauss_Err: Gauss = False End Function '------------------------------------------------------------------------------ 'Ejemplo sencillo de cómo usar Gauss. Salida a la ventana Debug '------------------------------------------------------------------------------ Private Sub EjemploSencillo() 'El siguiente sistema de ecuaciones lineales que debe ser resuelto: '|1 1 1 6| '|1 0 1 4| '|1 1 0 3| Dim Sistema(1 To 3, 1 To 4) As Double Dim Solución(1 To 3) As Double Sistema(1, 1) = 1: Sistema(1, 2) = 1: Sistema(1, 3) = 1: Sistema(1, 4) = 6 Sistema(2, 1) = 1: Sistema(2, 2) = 0: Sistema(2, 3) = 1: Sistema(2, 4) = 4 Sistema(3, 1) = 1: Sistema(3, 2) = 1: Sistema(3, 3) = 0: Sistema(3, 4) = 3 If Gauss(Sistema(), Solución()) Then Debug.Print "Solución:" Debug.Print "C1 = "; Solución(1) Debug.Print "C2 = "; Solución(2) Debug.Print "C3 = "; Solución(3) Stop Else MsgBox "El sistema de ecuaciones no tiene solución..." End If End Sub
Harvey Triana
Envíe sus comentarios a:
[email protected]
Derechos libres de reutilización solo para programación.