Mostrando entradas con la etiqueta Álgebra. Mostrar todas las entradas
Mostrando entradas con la etiqueta Álgebra. Mostrar todas las entradas

jueves, 6 de diciembre de 2012

Teoría de las Categorías para las Ciencias de la Computación


Más de uno ya conoce las Categorías, esta rama joven de las matemáticas se usa en diversos campos de estudio, ya sea la Topología, Álgebra, Teoría de la Demostración, Lógica y otras más disciplinas como la Ciencia de la Computación, en esta ocasión les comparto varios libros sobre el tema, muchos de ellos enfocados de lleno a compu, también otros dedicados a la Teoría de Módulos, de Grupos, de Anillos, etc. Espero les sirvan mucho, tanto como a mí. 

miércoles, 5 de diciembre de 2012

Algoritmo de Euclides extendido[Python]


Hace unos minutos el compañero Juan publico el Algoritmo de Euclides, parecerá competencia pero les comparto uno que generaliza el anterior, pues además de calcular el máximo común divisor escribe éste como combinación lineal de los números que le pasamos, aquí el código:
#-*- coding: utf-8 -*-

def eucExt(a,b):
 r = [a,b]
 s = [1,0] 
 t = [0,1]
 i = 1 
 q = [[]]
 while (r[i] != 0): 
  q = q + [r[i-1] // r[i]]
  r = r + [r[i-1] % r[i]]
  s = s + [s[i-1] - q[i]*s[i]]
  t = t + [t[i-1] - q[i]*t[i]]
  i = i+1
 return (r[i-1], s[i-1], t[i-1])
#Aquí comienza la interacción con el usuario, el try-catch es para atrapar
#errores, porque les pedimos números y el usuario podría meter letras.
try:
 print "Sean a1, a2 enteros\n"
 a1 = raw_input("Teclea el valor de a1: ")
 print "\ta1 =",a1
 a2 = raw_input("Teclea el valor de a2: ")
 print "\ta2 =",a2
 print "\t\tMCD(", a1, ",", a2, ") =", eucExt(int(a1),int(a2))[0]
 print "\t\t", eucExt(int(a1),int(a2))[0], "=", a1, "(", eucExt(int(a1),int(a2))[1], ") +", a2, "(", eucExt(int(a1),int(a2))[2], ")" 
except ValueError:
 print "No metiste un número jaja"
Espero les sirva!