[ Foro de Python ]

Rango de una matriz por Gauss

01-Feb-2017 17:27
Invitado (batera2121)
0 Respuestas

Buenas:

Estoy haciendo un programa que calcule el Rango de una matriz por el método de Gauss. Aquí el código:



def rango_matriz(matriz):
return len(filas_no_nulas(escalonar(matriz)))


def filas_no_nulas(m):
return [f for f in m if f != [0] * len(f)]


from copy import deepcopy


def escalonar(A):
A = deepcopy(A)

for i in range(len(A)):
elegir_fila(A, i)

normalizar_fila(A[i], i)

reducir_desde_fila(A, i)

return A



def elegir_fila(A, j):
for i in range(j, len(A)):
if A[i][j] != 0:
A[i], A[j] = A[j], A[i]

#AQUÍ ES DONDE FALLA LA FUNCIÓN SI, POR EJEMPLO, HAY MÁS FILAS QUE COLUMNAS. EL ERROR ES EL SIGUIENTE:
"line 28, in elegir_fila
if A[i][j] != 0:
IndexError: list index out of range"


def normalizar_fila(fila, j):
aux = fila[j]
for i in range(j, len(fila)):
try:
fila[i] /= aux
except ZeroDivisionError:
pass


def reducir_desde_fila(A, j):
for i in range(j + 1, len(A)):
reducir_fila(A[i], A[j], j)


def reducir_fila(fila, pivote, j):
primero = fila[j]
for i in range(j, len(fila)):
fila[i] -= (pivote[i] * primero)

Espero que alguien pueda darme algún tipo de solución al problema (La página se come la identación). Muchas gracias.




Si ya eres usuario del sistema, puedes contestar desde tu cuenta y así ganar prestigio.

Si sólo eres un visitante, puedes optar por...