Está en la página 1de 5

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
?
1
2
3 Sub GaussSimple()
4  Dim sum, factor As Double
5  Dim n As Integer'Depende de la matriz
6        'Eliminación hacia adelante
       If A(1, 1) = 0 Then
7            Console.WriteLine("" & vbLf & "*El elemento pivote a(1,1), no se puede co
8            Console.ReadLine()
9        Else
10            For k As Integer = 1 To n - 1
11                For i As Integer = k + 1 To n
                   factor = A(i, k) / A(k, k)
12                    For j As Integer = k + 1 To n
13                        A(i, j) = A(i, j) - (factor * A(k, j))
14                    Next j
15                    B(i, 1) = B(i, 1) - (factor * B(k, 1))
16                Next i
           Next k
17            'Sustitución hacia atrás
18            X(n, 1) = B(n, 1) / A(n, n)
19            For i As Integer = n - 1 To i Step -1
20                sum = 0
               For j As Integer = i + 1 To n
21                    sum = sum + (A(i, j) * X(j, 1))
22                Next j
23                X(i, 1) = (B(i, 1) - sum) / A(i, i)
24            Next
25        End If
   End Sub
26
27
28
Solución de Ecuaciones Lineales Simultaneas

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

También podría gustarte