Método de Gauss-Jordan con Python
El método de Gauss-Jordan utiliza operaciones con matrices para resolver sistemas de ecuaciones de n números de variables. Para aplicar este método solo hay que recordar que cada operación que se realice aplicará a toda la fila o a toda la columna.
El objetivo de este método es tratar de convertir la parte de la matriz donde están los coeficientes de las variables en una matriz identidad. Esto se logra mediante simples operaciones de suma, resta y multiplicación.
El sistema de ecuaciones lineales se resuelve utilizando un código en Python.
El código es el siguiente:
import numpy as np
def GaussJordan(x,y):
m,n=x.shape
augmat=np.zeros(shape=(m,n+1))
augmat[:m,:n]=x
augmat[:,m]=y
np.set_printoptions(precision=2,suppress=True)
print('# Original augmented matrix')
print(augmat)
for i in range(0,m-1):
for j in range(i+1,m):
k=(-1)*augmat[j,i]/augmat[i,i]
temprow=augmat[i,:]*k
print('# Uso la linea %2i para la linea %2i'%(i+1,j+1))
print('k=%.2f'%k,'*',augmat[i,:],'=',temprow)
augmat[j,:]=augmat[j,:]+temprow
print(augmat)
for i in range(m-1,0,-1):
for j in range(i-1,-1,-1):
k=(-1)*augmat[j,i]/augmat[i,i]
temprow=augmat[i,:]*k
print('# Uso la línea %2i para la línea %2i'%(i+1,j+1))
print('k=%.2f'%k,'*',augmat[i,:],'=',temprow)
augmat[j,:]=augmat[j,:]+temprow
print(augmat)
for i in range(0,m):
augmat[i,:]=augmat[i,:]/augmat[i,i]
print('# Normalizando las filas')
print(augmat)
return augmat[:,n]
No olvides tener instalado el paquete numpy
y la manera de implementar el código anterior es ingresando en modo arreglo los coeficientes de las ecuaciones.
x=np.array([[-3,3,2],[4,1,-1],[1,-2,1]])
y=np.array([1,2,3])
Declarada las variables se llama la función GauusJordan
y se imprime el procedimiento como se muestra a continuación:
b=GaussJordan(x,y)
print(b)
Las operaciones paso por paso son:
# Original augmented matrix
[[-3. 3. 2. 1.]
[ 4. 1. -1. 2.]
[ 1. -2. 1. 3.]]
# Uso la linea 1 para la linea 2
k=1.33 * [-3. 3. 2. 1.] = [-4. 4. 2.67 1.33]
[[-3. 3. 2. 1. ]
[ 0. 5. 1.67 3.33]
[ 1. -2. 1. 3. ]]
# Uso la linea 1 para la linea 3
k=0.33 * [-3. 3. 2. 1.] = [-1. 1. 0.67 0.33]
[[-3. 3. 2. 1. ]
[ 0. 5. 1.67 3.33]
[ 0. -1. 1.67 3.33]]
# Uso la linea 2 para la linea 3
k=0.20 * [0. 5. 1.67 3.33] = [0. 1. 0.33 0.67]
[[-3. 3. 2. 1. ]
[ 0. 5. 1.67 3.33]
[ 0. 0. 2. 4. ]]
# Uso la línea 3 para la línea 2
k=-0.83 * [0. 0. 2. 4.] = [-0. -0. -1.67 -3.33]
[[-3. 3. 2. 1.]
[ 0. 5. 0. -0.]
[ 0. 0. 2. 4.]]
# Uso la línea 3 para la línea 1
k=-1.00 * [0. 0. 2. 4.] = [-0. -0. -2. -4.]
[[-3. 3. 0. -3.]
[ 0. 5. 0. -0.]
[ 0. 0. 2. 4.]]
# Uso la línea 2 para la línea 1
k=-0.60 * [ 0. 5. 0. -0.] = [-0. -3. -0. 0.]
[[-3. 0. 0. -3.]
[ 0. 5. 0. -0.]
[ 0. 0. 2. 4.]]
# Normalizando las filas
[[ 1. -0. -0. 1.]
[ 0. 1. 0. -0.]
[ 0. 0. 1. 2.]]
[ 1. -0. 2.]
Al encontrar la matriz identidad se obtiene la solución del sistema de ecuaciones.
Método de Gauss-Jordan con Python por Marco Polo Jácome Toss se distribuye bajo una Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional.