Cálculo de determinantes con Python

Dentro de la materia de Tecnología de la Información y la Comunicación II de 2º de Bachillerato estamos creando pequeños programas basados en Python. El siguiente código nos permite calcular el determinante de una matriz cuadrada de cualquier orden. Para evitar la tediosa tarea de cumplimentación de la matriz cuadrada a la que se le calcula el determinante, se ha automatizado la tarea de creación de dicha matriz.

import random  

def dibujamatriz(m):
    for i in range(len(m)):
        print ‘[‘,
        for j in range(len(m[i])):
            print ‘{:>3s}’.format(str(m[i][j])),
        print ‘]’

def copia(m):
    result=[]
    for f in m:
        result.append(f[:])
    return result

def determinante(m):
    orden=len(m[0])
    if orden==2:
        return m[0][0]*m[1][1]-m[0][1]*m[1][0]
    else:
        j=0
        for i in range(orden):
            n=copia(m)
 #            print n[0][i]
            for k in range(orden):
#                print i, k
                n[k].pop(i)
#                print n
            n.pop(0)
            print dibujamatriz(n)
            j=j+m[0][i]*(-1)**(i+k)*determinante(n)
    return j  
while True:
    orden_matriz=int(raw_input(‘Indica el orden de la matriz \n’))
    matriz= [ [ random.randint(-20,20) for i in range(orden_matriz) ] for j in range(orden_matriz) ]
    dibujamatriz(matriz)
    print determinante(matriz) 
    opcion=raw_input(‘quieres calcular otro determinante (s)/(n) \n’)
    opcion=opcion.lower()
    while opcion<>’s’and opcion<>’n’:
        print ‘debes introducir una opcion valida \n’
        opcion=raw_input(‘quieres calcular otro determinante (s)/(n) \n’)
        opcion=opcion.lower()
    if opcion==’s’:
        continue
    elif opcion==’n’:
        print ‘hasta luego, Lucas’
        break

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar