Método de Gauss-Jordán



 -Fundamento Teórico-

  1. 1. Creación de la matriz aumentada:
    Se representa el sistema de ecuaciones lineales como una matriz, donde los coeficientes de las incógnitas forman la matriz de coeficientes y los términos independientes forman una columna separada, creando la matriz aumentada.
  2. 2. Aplicación de operaciones elementales de fila:
    Se realizan operaciones sobre las filas de la matriz aumentada para transformar la matriz de coeficientes en una matriz identidad.
  3. 3. Obtención de la matriz identidad:
    Se utiliza una serie de operaciones para obtener ceros en todas las posiciones de la matriz de coeficientes, excepto en la diagonal principal, donde se obtienen unos.
  4. 4. Solución del sistema:
    La columna de términos independientes de la matriz resultante contiene las soluciones del sistema de ecuaciones. 
Las operaciones elementales de fila que se utilizan son:
  • Intercambiar dos filas.
  • Multiplicar una fila por un escalar no nulo.
  • Sumar a una fila un múltiplo de otra fila. 

-Algoritmo del Método-

  1. 1. Formación de la Matriz Ampliada:
    Primero, se representa el sistema de ecuaciones lineales en forma de matriz ampliada, donde la matriz de coeficientes está a la izquierda y la matriz de términos independientes a la derecha. 
  2. 2. Eliminación hacia Adelante (Forma Escalonada):
    • Intercambio de Filas: Si es necesario, se intercambian filas para que el primer elemento no nulo (el pivote) de la primera columna sea el elemento de la diagonal principal. 
    • Pivote: Se divide la fila donde está el pivote por el valor del pivote para obtener un 1 en la posición del pivote. 
    • Eliminación: Se suman o restan múltiplos de la fila del pivote a las demás filas para obtener ceros debajo del pivote. 
  3. 3. Eliminación hacia Atrás (Forma Escalonada Reducida):
    • Ceros por Encima del Pivote: Se utiliza el pivote para eliminar los elementos por encima de él, sumando o restando múltiplos de la fila del pivote a las filas superiores. 
  4. 4. Solución del Sistema:
    Una vez que la matriz está en forma escalonada reducida, se obtienen las soluciones del sistema de ecuaciones directamente de la matriz. 
Ejemplo:
Considera el sistema de ecuaciones:
Código
2x + y = 5x + 2y = 4
  1. Matriz Ampliada:
Código
[ 2  1 | 5 ][ 1  2 | 4 ]
  1. Eliminación hacia Adelante:
    • Intercambiar Filas: Intercambiamos las filas para que el elemento de la diagonal principal sea el pivote.
    • Dividir R1 por 2:
Código
     [ 1  0.5 | 2.5 ]     [ 1  2 | 4 ]
  • Eliminar el 1 en R2: R2 = R2 - R1:
Código
     [ 1  0.5 | 2.5 ]     [ 0  1.5 | 1.5 ]
  1. Eliminación hacia Atrás:
    • Dividir R2 por 1.5:
Código
     [ 1  0.5 | 2.5 ]     [ 0  1 | 1 ]
  • Eliminar el 0.5 en R1: R1 = R1 - 0.5*R2:
Código
     [ 1  0 | 2 ]     [ 0  1 | 1 ]
  1. Solución: x = 2, y = 1

-Ejemplo Resuelto Paso a Paso-

Ejemplo:

Resolver el siguiente sistema de ecuaciones utilizando el método de Gauss-Jordan:

x+2y+3z=92x+3y+z=83x+y+2z=7\begin{aligned} x + 2y + 3z &= 9 \\ 2x + 3y + z &= 8 \\ 3x + y + 2z &= 7 \end{aligned}

Este sistema de ecuaciones lo podemos escribir en forma matricial:

(123923183127)\begin{pmatrix} 1 & 2 & 3 & | & 9 \\ 2 & 3 & 1 & | & 8 \\ 3 & 1 & 2 & | & 7 \end{pmatrix}

Paso 1: Escribir la matriz aumentada

La matriz aumentada del sistema es:

(123923183127)\begin{pmatrix} 1 & 2 & 3 & | & 9 \\ 2 & 3 & 1 & | & 8 \\ 3 & 1 & 2 & | & 7 \end{pmatrix}

Paso 2: Transformar la matriz en una forma escalonada

Queremos hacer que los elementos debajo de la diagonal principal sean 0.

Fila 2: Hacer 0 el elemento en la posición (2,1)(2,1)

Para esto, restamos 2 veces la fila 1 de la fila 2:

F2F22F1F_2 \leftarrow F_2 - 2F_1 (123923183127)(1239015103127)\begin{pmatrix} 1 & 2 & 3 & | & 9 \\ 2 & 3 & 1 & | & 8 \\ 3 & 1 & 2 & | & 7 \end{pmatrix} \Rightarrow \begin{pmatrix} 1 & 2 & 3 & | & 9 \\ 0 & -1 & -5 & | & -10 \\ 3 & 1 & 2 & | & 7 \end{pmatrix}

Fila 3: Hacer 0 el elemento en la posición (3,1)(3,1)

Restamos 3 veces la fila 1 de la fila 3:

F3F33F1F_3 \leftarrow F_3 - 3F_1 (1239015103127)(12390151005720)\begin{pmatrix} 1 & 2 & 3 & | & 9 \\ 0 & -1 & -5 & | & -10 \\ 3 & 1 & 2 & | & 7 \end{pmatrix} \Rightarrow \begin{pmatrix} 1 & 2 & 3 & | & 9 \\ 0 & -1 & -5 & | & -10 \\ 0 & -5 & -7 & | & -20 \end{pmatrix}

Paso 3: Hacer 1 el pivote en la segunda fila, columna 2

Dividimos la fila 2 entre 1-1:

F211F2F_2 \leftarrow \frac{1}{-1} F_2 (12390151005720)\begin{pmatrix} 1 & 2 & 3 & | & 9 \\ 0 & 1 & 5 & | & 10 \\ 0 & -5 & -7 & | & -20 \end{pmatrix}

Paso 4: Hacer 0 los elementos en la columna 2 de la fila 1 y fila 3

Fila 1: Hacer 0 el elemento en (1,2)(1,2)

Restamos 2 veces la fila 2 de la fila 1:

F1F12F2F_1 \leftarrow F_1 - 2F_2 (12390151005720)(107110151005720)\begin{pmatrix} 1 & 2 & 3 & | & 9 \\ 0 & 1 & 5 & | & 10 \\ 0 & -5 & -7 & | & -20 \end{pmatrix} \Rightarrow \begin{pmatrix} 1 & 0 & -7 & | & -11 \\ 0 & 1 & 5 & | & 10 \\ 0 & -5 & -7 & | & -20 \end{pmatrix}

Fila 3: Hacer 0 el elemento en (3,2)(3,2)

Sumamos 5 veces la fila 2 a la fila 3:

F3F3+5F2F_3 \leftarrow F_3 + 5F_2 (107110151005720)(1071101510001830)\begin{pmatrix} 1 & 0 & -7 & | & -11 \\ 0 & 1 & 5 & | & 10 \\ 0 & -5 & -7 & | & -20 \end{pmatrix} \Rightarrow \begin{pmatrix} 1 & 0 & -7 & | & -11 \\ 0 & 1 & 5 & | & 10 \\ 0 & 0 & 18 & | & 30 \end{pmatrix}

Paso 5: Hacer 1 el pivote en la tercera fila, columna 3

Dividimos la fila 3 entre 18:

F3118F3F_3 \leftarrow \frac{1}{18} F_3 (107110151000153)\begin{pmatrix} 1 & 0 & -7 & | & -11 \\ 0 & 1 & 5 & | & 10 \\ 0 & 0 & 1 & | & \frac{5}{3} \end{pmatrix}

Paso 6: Hacer 0 los elementos en la columna 3 de la fila 1 y fila 2

Fila 1: Hacer 0 el elemento en (1,3)(1,3)

Sumamos 7 veces la fila 3 a la fila 1:

F1F1+7F3F_1 \leftarrow F_1 + 7F_3 (107110151000153)(100830151000153)\begin{pmatrix} 1 & 0 & -7 & | & -11 \\ 0 & 1 & 5 & | & 10 \\ 0 & 0 & 1 & | & \frac{5}{3} \end{pmatrix} \Rightarrow \begin{pmatrix} 1 & 0 & 0 & | & \frac{8}{3} \\ 0 & 1 & 5 & | & 10 \\ 0 & 0 & 1 & | & \frac{5}{3} \end{pmatrix}

Fila 2: Hacer 0 el elemento en (2,3)(2,3)

Restamos 5 veces la fila 3 de la fila 2:

F2F25F3F_2 \leftarrow F_2 - 5F_3 (100830151000153)(100830105300153)\begin{pmatrix} 1 & 0 & 0 & | & \frac{8}{3} \\ 0 & 1 & 5 & | & 10 \\ 0 & 0 & 1 & | & \frac{5}{3} \end{pmatrix} \Rightarrow \begin{pmatrix} 1 & 0 & 0 & | & \frac{8}{3} \\ 0 & 1 & 0 & | & \frac{5}{3} \\ 0 & 0 & 1 & | & \frac{5}{3} \end{pmatrix}

Paso 7: Resultado final

La matriz ha quedado en su forma identidad en la parte izquierda, y las soluciones están en la columna derecha:

(100830105300153)\begin{pmatrix} 1 & 0 & 0 & | & \frac{8}{3} \\ 0 & 1 & 0 & | & \frac{5}{3} \\ 0 & 0 & 1 & | & \frac{5}{3} \end{pmatrix}

Por lo tanto, la solución del sistema es:

x=83,y=53,z=53x = \frac{8}{3}, \quad y = \frac{5}{3}, \quad z = \frac{5}{3}

import numpy as np
import matplotlib.pyplot as plt

# Definir la matriz de coeficientes y el vector de constantes
A = np.array([[1, 2, 3], [2, 3, 1], [3, 1, 2]], dtype=float)
b = np.array([9, 8, 7], dtype=float)

# Método de Gauss-Jordan
def gauss_jordan(A, b):
    n = len(b)
   
    # Matriz aumentada
    augmented_matrix = np.hstack([A, b.reshape(-1, 1)])
   
    # Eliminación hacia adelante
    for i in range(n):
        # Pivote
        pivot = augmented_matrix[i, i]
       
        # Normalizamos la fila para que el pivote sea 1
        augmented_matrix[i, :] = augmented_matrix[i, :] / pivot
       
        # Hacer cero los elementos debajo y encima del pivote
        for j in range(n):
            if i != j:
                factor = augmented_matrix[j, i]
                augmented_matrix[j, :] -= factor * augmented_matrix[i, :]
   
    return augmented_matrix[:, -1]  # La solución está en la última columna

# Resolución del sistema
solution = gauss_jordan(A, b)
x, y, z = solution

# Imprimir la solución
print(f"Solución del sistema:")
print(f"x = {x:.4f}, y = {y:.4f}, z = {z:.4f}")

# Gráfica de las ecuaciones
x_vals = np.linspace(-3, 3, 400)
y_vals = np.linspace(-3, 3, 400)
X, Y = np.meshgrid(x_vals, y_vals)

# Ecuación 1: x + 2y + 3z = 9
Z1 = (9 - X - 2*Y) / 3

# Ecuación 2: 2x + 3y + z = 8
Z2 = (8 - 2*X - 3*Y)

# Ecuación 3: 3x + y + 2z = 7
Z3 = (7 - 3*X - Y) / 2

# Graficar las tres ecuaciones en 3D
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')

ax.plot_surface(X, Y, Z1, alpha=0.5, rstride=100, cstride=100, color='blue', edgecolor='none')
ax.plot_surface(X, Y, Z2, alpha=0.5, rstride=100, cstride=100, color='green', edgecolor='none')
ax.plot_surface(X, Y, Z3, alpha=0.5, rstride=100, cstride=100, color='red', edgecolor='none')

# Marcar la solución en el gráfico
ax.scatter(x, y, z, color='black', s=100, label=f'Solución: ({x:.4f}, {y:.4f}, {z:.4f})')

# Títulos y etiquetas
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('Solución del sistema de ecuaciones')

# Leyenda
ax.legend()

# Mostrar gráfico
plt.show()


-Grafica-

-Video Explicativo-



-Conclusión-

El método de Gauss-Jordan es una técnica eficaz para resolver sistemas de ecuaciones lineales, transformando la matriz aumentada en una forma escalonada reducida. Permite encontrar soluciones únicas, infinitas o determinar si un sistema es inconsistente. En esencia, el método facilita la resolución de sistemas complejos y la determinación de la inversa de matrices. 

Comentarios