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