Álgebra y matemática discreta - 2012 sesión de prácticas 2
TRANSCRIPT
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Álgebra y Matemática Discreta - 2012
Sesión de Prácticas 2
Leandro Marín
Dpto. de Matemática Aplicada
Facultad de Informática
2012
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
1 Máximo Común Divisor
2 Aritmética Modular
3 Polinomios
4 Cuerpos
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Definición
El máximo común divisor de a y b es el mayor de los divisorescomunes de a y b.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Definición
El máximo común divisor de a y b es el mayor de los divisorescomunes de a y b.
Se puede calcular directamente en sage con el comandogcd(a,b) que son las siglas en inglés (greatest commondivisor).
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Definición
El máximo común divisor de a y b es el mayor de los divisorescomunes de a y b.
Se puede calcular directamente en sage con el comandogcd(a,b) que son las siglas en inglés (greatest commondivisor).
Por ejemplo gcd(2352,4312)=392
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Tabla del Máximo Común Divisor
Aunque podemos usar el comando directamente, vamos a vercómo se calcularía la tabla que hacemos en clase.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Tabla del Máximo Común Divisor
Aunque podemos usar el comando directamente, vamos a vercómo se calcularía la tabla que hacemos en clase.
Para generar la tabla vamos a empezar dando los valoresiniciales a = 156 y b = 441. Los valores de v y t
respectivamente serán 0 y 1 (como siempre).
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Tabla del Máximo Común Divisor
Aunque podemos usar el comando directamente, vamos a vercómo se calcularía la tabla que hacemos en clase.
Para generar la tabla vamos a empezar dando los valoresiniciales a = 156 y b = 441. Los valores de v y t
respectivamente serán 0 y 1 (como siempre).
En sage es posible hacer la asignación en bloque:
a,b,v,t = 156 ,441 ,0,1
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Tabla del Máximo Común Divisor (II)
El cálculo se tiene que hacer mientras que b sea distinto de 0.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Tabla del Máximo Común Divisor (II)
El cálculo se tiene que hacer mientras que b sea distinto de 0.
Eso se hace con una estructura
while condicion :
y luego un bloque similar al del caso for.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Tabla del Máximo Común Divisor (II)
El cálculo se tiene que hacer mientras que b sea distinto de 0.
Eso se hace con una estructura
while condicion :
y luego un bloque similar al del caso for.
En cada paso del ciclo tenemos que calcular r ,q y recalculara, b, v , t, concretamente
q,r = a //b,a%b
a,b,v,t = b,r,t,r-t*q
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Tabla del Máximo Común Divisor (III)
El programa completo quedaría del siguiente modo:
a,b,v,t = 156 ,441 ,0,1
while b!=0:
q,r = a //b,a%b
print a,b,r,v,t,q
a,b,v,t = b,r,t,v-t*q
print a,b,r,v,t,q
Los valores de q y r no los podemos calcular en la última fila, asíque ponemos los mismos que en la fila anterior. Las únicascolumnas importantes al final son la de a que nos indica el máximocomún divisor y la de v que nos indica el coeficiente del b original.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Obtenemos los siguientes valores
156 441 156 0 1 0
441 156 129 1 0 2
156 129 27 0 1 1
129 27 21 1 -1 4
27 21 6 -1 5 1
21 6 3 5 -6 3
6 3 0 -6 23 2
3 0 0 23 -52 2
Lo que significa que el máximo común divisor es 3 y que3 = 156 · u + 441 · 23. Para calcular el valor de u despejamos:
u =3 − 441 · 23
156= −65
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
xgcd
El máximo común divisor extendido se puede calcular tambiéncon un comando sage, es xgcd(a,b).
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
xgcd
El máximo común divisor extendido se puede calcular tambiéncon un comando sage, es xgcd(a,b).
Si ponemos xgcd(156,441) lo que obtenemos es (3,−65, 23) .
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
xgcd
El máximo común divisor extendido se puede calcular tambiéncon un comando sage, es xgcd(a,b).
Si ponemos xgcd(156,441) lo que obtenemos es (3,−65, 23) .
Estos valores son respectivamente el máximo común divisor ylos coeficientes de 156 y 441.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
xgcd
El máximo común divisor extendido se puede calcular tambiéncon un comando sage, es xgcd(a,b).
Si ponemos xgcd(156,441) lo que obtenemos es (3,−65, 23) .
Estos valores son respectivamente el máximo común divisor ylos coeficientes de 156 y 441.
Son los mismos que habíamos calculado nosotros.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
El Anillo Zmod(n)
Dado un número entero n ≥ 1 podemos definir el anillo derestos modulares Zn con el comando Zmod(n)
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
El Anillo Zmod(n)
Dado un número entero n ≥ 1 podemos definir el anillo derestos modulares Zn con el comando Zmod(n)
Pongamos por ejemplo:
R = Zmod(6)
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
El Anillo Zmod(n)
Dado un número entero n ≥ 1 podemos definir el anillo derestos modulares Zn con el comando Zmod(n)
Pongamos por ejemplo:
R = Zmod(6)
Si entonces escribimos R y pulsamos enter nos dirá
Ring of integers modulo 6
es decir, anillo de enteros módulo 6.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
El Anillo Zmod(6)
A partir de este momento, podemos forzar a los elementos aestar en este anillo, pongamos por ejempo
R = Zmod(6)
a = R(3)
b = R(4)
a*b
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
El Anillo Zmod(6)
A partir de este momento, podemos forzar a los elementos aestar en este anillo, pongamos por ejempo
R = Zmod(6)
a = R(3)
b = R(4)
a*b
Nos escribirá 0 puesto que las operaciones están en Z6.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
El Anillo Zmod(6)
A partir de este momento, podemos forzar a los elementos aestar en este anillo, pongamos por ejempo
R = Zmod(6)
a = R(3)
b = R(4)
a*b
Nos escribirá 0 puesto que las operaciones están en Z6.
Si ponemos
a-b
y pulsamos enter, nos escribirá 5 puesto que3 − 4 = −1 ≡ 5(6).
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Operaciones Modulares
Si operamos un número de Zn con un elemento de Z, elresultado lo considerará en Zn
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Operaciones Modulares
Si operamos un número de Zn con un elemento de Z, elresultado lo considerará en Zn
Como a valía 3 ∈ Z6, si ponemos 7 ∗ a nos responderá 3porque 21 ≡ 3(6).
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Operaciones Modulares
Si operamos un número de Zn con un elemento de Z, elresultado lo considerará en Zn
Como a valía 3 ∈ Z6, si ponemos 7 ∗ a nos responderá 3porque 21 ≡ 3(6).
También podemos hacer exponenciaciones a18 = 3
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Inversos
Si tratamos de calcular un inverso que no existe nos dará un error,así si ponemos a^-1 obtenemos
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
/home/leandro/AMD12/<ipython console> in <module>()
/usr/local/sage-5.0.beta6/local/lib/python2.7/site-packages/sage/rings/finite_rings/integer_mod.so
/in sage.rings.finite_rings.integer_mod.IntegerMod_int.__pow__
/(sage/rings/finite_rings/integer_mod.c:20781)()
/usr/local/sage-5.0.beta6/local/lib/python2.7/site-packages/sage/rings/finite_rings/integer_mod.so
/in sage.rings.finite_rings.integer_mod.IntegerMod_int.__invert__
/(sage/rings/finite_rings/integer_mod.c:20884)()
ZeroDivisionError: Inverse does not exist.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Inversos
Tomemos ahora otro anillo modular
S = Zmod(256)
c = S(7)
print c^-1
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Inversos
Tomemos ahora otro anillo modular
S = Zmod(256)
c = S(7)
print c^-1
Nos devolverá 183, que es el inverso de 7 módulo 256.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Inversos
Tomemos ahora otro anillo modular
S = Zmod(256)
c = S(7)
print c^-1
Nos devolverá 183, que es el inverso de 7 módulo 256.
Podemos comprobarlo poniendo 183*c que nos dará 1.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
La Función ϕ de Euler
El número de elementos invertibles en Zn se llama ϕ(n) y secalcula con euler_phi(n).
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
La Función ϕ de Euler
El número de elementos invertibles en Zn se llama ϕ(n) y secalcula con euler_phi(n).
Esta función tiene la propiedad de que cualquier elementoinvertible elevado a ese número es 1.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
La Función ϕ de Euler
El número de elementos invertibles en Zn se llama ϕ(n) y secalcula con euler_phi(n).
Esta función tiene la propiedad de que cualquier elementoinvertible elevado a ese número es 1.
Pongamos por ejemplo:
S = Zmod(256)
c = S(7)
print c^euler_phi(256)
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
La Función ϕ de Euler
El número de elementos invertibles en Zn se llama ϕ(n) y secalcula con euler_phi(n).
Esta función tiene la propiedad de que cualquier elementoinvertible elevado a ese número es 1.
Pongamos por ejemplo:
S = Zmod(256)
c = S(7)
print c^euler_phi(256)
Nos devolverá 1.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
La Función ϕ de Euler
El número de elementos invertibles en Zn se llama ϕ(n) y secalcula con euler_phi(n).
Esta función tiene la propiedad de que cualquier elementoinvertible elevado a ese número es 1.
Pongamos por ejemplo:
S = Zmod(256)
c = S(7)
print c^euler_phi(256)
Nos devolverá 1.
En este caso la función vale 128.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Teorema Chino de los Restos
Supongamos que queremos encontrar cuales son los posiblesvalores de x tales que
x ≡ 3(5) x ≡ 2(7)
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Teorema Chino de los Restos
Supongamos que queremos encontrar cuales son los posiblesvalores de x tales que
x ≡ 3(5) x ≡ 2(7)
Estos sistemas tienen solución por el Teorema Chino de losRestos, que nos dice que la solución es única módulo elmínimo común múltiplo de 5 y 7, en este caso 35.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Teorema Chino de los Restos
Supongamos que queremos encontrar cuales son los posiblesvalores de x tales que
x ≡ 3(5) x ≡ 2(7)
Estos sistemas tienen solución por el Teorema Chino de losRestos, que nos dice que la solución es única módulo elmínimo común múltiplo de 5 y 7, en este caso 35.
El cálculo con sage se hace con el comando
crt([3,2],[5,7])
En este caso el valor es 23 módulo 35.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Polinomios con Coeficientes Modulares
Podemos definir también polinomios con coeficientesmodulares. Por ejemplo:
R = PolynomialRing(Zmod(7),’x’)
p = R(x^3-1)
factor(p)
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Polinomios con Coeficientes Modulares
Podemos definir también polinomios con coeficientesmodulares. Por ejemplo:
R = PolynomialRing(Zmod(7),’x’)
p = R(x^3-1)
factor(p)
Obtendremos
(x + 3) * (x + 5) * (x + 6)
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Polinomios con Coeficientes Modulares
Podemos definir también polinomios con coeficientesmodulares. Por ejemplo:
R = PolynomialRing(Zmod(7),’x’)
p = R(x^3-1)
factor(p)
Obtendremos
(x + 3) * (x + 5) * (x + 6)
Porque considerando los coeficientes en este cuerpo, elpolinomio se factoriza completamente.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Factorización
Como sucedía con polinomios sobre otros cuerpos, lafactorización depende del cuerpo en el que se tomen loscoeficientes.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Factorización
Como sucedía con polinomios sobre otros cuerpos, lafactorización depende del cuerpo en el que se tomen loscoeficientes.
Si ponemos el mismo polinomio, pero considerado en Z5
tenemos:
R = PolynomialRing(Zmod(5),’x’)
p = R(x^3-1)
factor(p)
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Factorización
Como sucedía con polinomios sobre otros cuerpos, lafactorización depende del cuerpo en el que se tomen loscoeficientes.
Si ponemos el mismo polinomio, pero considerado en Z5
tenemos:
R = PolynomialRing(Zmod(5),’x’)
p = R(x^3-1)
factor(p)
Obtenemos otra factorización:
(x + 4) * (x^2 + x + 1)
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Dominios Euclídeos
Casi todo lo que hemos dicho para Z en relación con ladivisibilidad, es cierto también para los polinomios concoeficientes en R, Q, C o un incluso Zp con p primo.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Dominios Euclídeos
Casi todo lo que hemos dicho para Z en relación con ladivisibilidad, es cierto también para los polinomios concoeficientes en R, Q, C o un incluso Zp con p primo.
En particular podemos calcular el máximo común divisor y elmáximo común divisor extendido con el mismo algoritmo quelo hacíamos en Z.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Dominios Euclídeos
Casi todo lo que hemos dicho para Z en relación con ladivisibilidad, es cierto también para los polinomios concoeficientes en R, Q, C o un incluso Zp con p primo.
En particular podemos calcular el máximo común divisor y elmáximo común divisor extendido con el mismo algoritmo quelo hacíamos en Z.
También es cierto que todo polinomio se descompone deforma única como producto de polinomios irreducibles. Cualessean esos factores depende de donde estén los coeficientes.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Dominios Euclídeos
Casi todo lo que hemos dicho para Z en relación con ladivisibilidad, es cierto también para los polinomios concoeficientes en R, Q, C o un incluso Zp con p primo.
En particular podemos calcular el máximo común divisor y elmáximo común divisor extendido con el mismo algoritmo quelo hacíamos en Z.
También es cierto que todo polinomio se descompone deforma única como producto de polinomios irreducibles. Cualessean esos factores depende de donde estén los coeficientes.
En realidad, siempre que tengamos una división con resto, lopodemos hacer. Los conjuntos donde tenemos una división deesta forma se llaman dominios euclídeos.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Definción
Un cuerpo es un conjunto K con dos operaciones + y · y doselementos destacados distiontos llamados 0 y 1 tales que:
a + b = b + a, (a + b) + c = a + (b + c), a + 0 = a y paratodo a existe −a tal que a + (−a) = 0.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Definción
Un cuerpo es un conjunto K con dos operaciones + y · y doselementos destacados distiontos llamados 0 y 1 tales que:
a + b = b + a, (a + b) + c = a + (b + c), a + 0 = a y paratodo a existe −a tal que a + (−a) = 0.
a · b = b · a, (a · b) · c = a · (b · c), a · 1 = a y para todo a 6= 0existe a−1 tal que a · a−1 = 1.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Definción
Un cuerpo es un conjunto K con dos operaciones + y · y doselementos destacados distiontos llamados 0 y 1 tales que:
a + b = b + a, (a + b) + c = a + (b + c), a + 0 = a y paratodo a existe −a tal que a + (−a) = 0.
a · b = b · a, (a · b) · c = a · (b · c), a · 1 = a y para todo a 6= 0existe a−1 tal que a · a−1 = 1.
a · (b + c) = a · b + a · c.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Ejempos de Cuerpos
Son cuerpos por ejemplo Q, R y C. Estos son cuerposinfinitos.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Ejempos de Cuerpos
Son cuerpos por ejemplo Q, R y C. Estos son cuerposinfinitos.
También son cuerpos los conjuntos Zp cuando p es primo.Estos son cuerpos finitos.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Ejempos de Cuerpos
Son cuerpos por ejemplo Q, R y C. Estos son cuerposinfinitos.
También son cuerpos los conjuntos Zp cuando p es primo.Estos son cuerpos finitos.
Existen otros cuerpos finitos más complejos con un número deelementos pα.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Ejempos de Cuerpos
Son cuerpos por ejemplo Q, R y C. Estos son cuerposinfinitos.
También son cuerpos los conjuntos Zp cuando p es primo.Estos son cuerpos finitos.
Existen otros cuerpos finitos más complejos con un número deelementos pα.
Los cuerpos finitos se suelen llamar también cuerpos de Galois.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Cuerpo de 8 elementos
Igual que los cuerpos Zp se hacían con la relación decongruencia módulo p, los cuerpos de Galois se hacen conpolinomios y congruencias módulo un polinomio irreducible.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Cuerpo de 8 elementos
Igual que los cuerpos Zp se hacían con la relación decongruencia módulo p, los cuerpos de Galois se hacen conpolinomios y congruencias módulo un polinomio irreducible.
El programa sage puede manejarlos sin ninguna dificultad.
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Cuerpo de 8 elementos
Igual que los cuerpos Zp se hacían con la relación decongruencia módulo p, los cuerpos de Galois se hacen conpolinomios y congruencias módulo un polinomio irreducible.
El programa sage puede manejarlos sin ninguna dificultad.
Para definir el cuerpo de 8 elementos, tenemos que decirsimplemente cómo queremos llamar a la variable de lospolinomios que aparecen.
K = GF(8,’a’)
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Recorriendo un Cuerpo Finito
Podemos recorrer todos los elementos de un cuerpo finitocomo una lista. Si ponemos
K = GF(8,’a’)
for x in K:
print x
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Recorriendo un Cuerpo Finito
Podemos recorrer todos los elementos de un cuerpo finitocomo una lista. Si ponemos
K = GF(8,’a’)
for x in K:
print x
Obtendremos todos los elementos de este cuerpo:
0, a, a2, a + 1, a2 + a, a2 + a + 1, a2 + 1, 1
Índice Máximo Común Divisor Aritmética Modular Polinomios Cuerpos
Recorriendo un Cuerpo Finito
Podemos recorrer todos los elementos de un cuerpo finitocomo una lista. Si ponemos
K = GF(8,’a’)
for x in K:
print x
Obtendremos todos los elementos de este cuerpo:
0, a, a2, a + 1, a2 + a, a2 + a + 1, a2 + 1, 1
Podemos manejar variables con estos valores como las decualquier otro cuerpo.