Está en la página 1de 3

# Lo primero es realizar la función para mostrar los subíndices

subscript = str.maketrans("0123456789", "₀₁₂₃₄₅₆₇₈₉")

# El siguiente paso es solicitar al usuario que introduzca los datos para formar la matriz

def introducir_matriz():

rows, cols = 4, 4

matriz = []

for i in range(rows):

col = []

for j in range(cols):

coeficiente = "a" + str(i + 1) + str(j + 1)

num = input("Por favor, introduzca el coeficiente {}:


".format(coeficiente.translate(subscript)))

if num == '':

num = 0

col.append(float(num))

matriz.append(col)

return matriz

# Con esta función conseguimos que nos muestre la matriz

def mostrar_matriz(matriz):

for linea in matriz:

for d in linea:

if d == -0.00:

d = 0.00

print('%.2f' % float(d), end=", ")

print("\b\b\t\t\t", end=" ")

print()
# Con esta función, vamos a conseguir localizar los pivotes de cada línea, se elige el elemento
con mayor valor absoluto

def pivoteo_matriz(mtrz, i):

col = str(i + 1)

coeficiente = ("a" + str(i + 1)).translate(subscript)

pivote = '%.2f' % 0

aux = mtrz[i].copy()

for l in mtrz[i:]:

if abs(float(l[i])) > abs(float(pivote)):

pivote = l[i]

aux = l.copy()

# Con esta función conseguimos realizar control de errores

if pivote == '0.00':

print("Cada uno de los elementos de la columna " + col + " incluido el pivote "

"son IGUALES a 0, por este motivo no podemos continuar con el método")

exit(0)

print("Coeficiente " + coeficiente + ", el pivote de la columna " + col + " es " +

('%.2f' % float(pivote)).rstrip('0').rstrip('.'))

mtrz.remove(aux)

mtrz.insert(i, aux)

return mtrz

# Con esta función conseguimos realizar la reducción a 0

def reduccion_a_cero(matriz, i):

for j in range(i + 1, 4):

pivote = matriz[i][i]

constante = float(matriz[j][i]) / float(pivote)


for k in range(i, 4):

matriz[j][k] = float(matriz[j][k]) - (constante * float(matriz[i][k]))

# Si todos los coeficientes son = 0

if all(elem == 0 for elem in matriz[j]):

print("Al poner la fila " + str(j + 1) + " como combinación lineal de la fila " + str(j) +

", todos sus elementos son iguales a cero. No podemos continuar con el método.")

print(matriz[j])

exit(1)

return matriz

# Y finalmente tenemos la función principal del programa

if __name__ == '__main__':

matriz = introducir_matriz()

print()

print("La matriz introducida por el usuario es:")

mostrar_matriz(matriz)

print()

for i in range(3):

print("Se ordena la matriz de la columna", i + 1)

# Se realiza el pivoteo antes de realizar la eliminación

matriz = pivoteo_matriz(matriz, i)

# Una vez está el pivoteo echo, ponemos a 0 todos los coeficientes que están abajo.

matriz = reduccion_a_cero(matriz, i)

mostrar_matriz(matriz)

print()

print("Finalmente, la matriz final queda asi:")

mostrar_matriz(matriz)

También podría gustarte