Álgebra y matemática discreta sesión de prácticas 2

21
´ Algebra y Matem´ atica Discreta Sesi´ondePr´ acticas 2 ´ Algebra y Matem´ atica Discreta Sesi´ on de Pr´ acticas 2 (c) 2013 Leandro Mar´ ın, Francisco J. Vera, Gema M. D´ ıaz 23 Sep 2013 - 29 Sep 2013

Upload: hoangdieu

Post on 01-Jan-2017

227 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Álgebra y Matemática Discreta Sesión de Prácticas 2

Algebra y Matematica Discreta Sesion de Practicas 2

Algebra y Matematica DiscretaSesion de Practicas 2

(c) 2013 Leandro Marın, Francisco J. Vera, Gema M. Dıaz

23 Sep 2013 - 29 Sep 2013

Page 2: Álgebra y Matemática Discreta Sesión de Prácticas 2

Algebra y Matematica Discreta Sesion de Practicas 2

Aritmetica

Maximo Comun Divisor

Definicion

El maximo comun 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 ingles (greatest commondivisor).

Por ejemplo gcd(2352,4312)=392

Page 3: Álgebra y Matemática Discreta Sesión de Prácticas 2

Algebra y Matematica Discreta Sesion de Practicas 2

Aritmetica

Maximo Comun Divisor

Tabla del Maximo Comun Divisor

Aunque podemos usar el comando directamente, vamos a vercomo 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 seran 0 y 1 (como siempre).

En sage es posible hacer la asignacion en bloque:

a,b,v,t = 156 ,441 ,0,1

Page 4: Álgebra y Matemática Discreta Sesión de Prácticas 2

Algebra y Matematica Discreta Sesion de Practicas 2

Aritmetica

Maximo Comun Divisor

Tabla del Maximo Comun Divisor (II)

El calculo 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,v-t*q

Page 5: Álgebra y Matemática Discreta Sesión de Prácticas 2

Algebra y Matematica Discreta Sesion de Practicas 2

Aritmetica

Maximo Comun Divisor

Tabla del Maximo Comun 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 ultima fila, asıque ponemos los mismos que en la fila anterior. Las unicascolumnas importantes al final son la de a que nos indica el maximocomun divisor y la de v que nos indica el coeficiente del b original.

Page 6: Álgebra y Matemática Discreta Sesión de Prácticas 2

Algebra y Matematica Discreta Sesion de Practicas 2

Aritmetica

Maximo Comun Divisor

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 maximo comun divisor es 3 y que3 = 156 · u + 441 · 23. Para calcular el valor de u despejamos:

u =3− 441 · 23

156= −65

Page 7: Álgebra y Matemática Discreta Sesión de Prácticas 2

Algebra y Matematica Discreta Sesion de Practicas 2

Aritmetica

Maximo Comun Divisor

xgcd

El maximo comun divisor extendido se puede calcular tambiencon un comando sage, es xgcd(a,b).

Si ponemos xgcd(156,441) lo que obtenemos es(3,−65, 23) .

Estos valores son respectivamente el maximo comun divisor ylos coeficientes de 156 y 441.

Son los mismos que habıamos calculado nosotros.

Page 8: Álgebra y Matemática Discreta Sesión de Prácticas 2

Algebra y Matematica Discreta Sesion de Practicas 2

Aritmetica

Aritmetica Modular

El Anillo Zmod(n)

Dado un numero 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 dira

Ring of integers modulo 6

es decir, anillo de enteros modulo 6.

Page 9: Álgebra y Matemática Discreta Sesión de Prácticas 2

Algebra y Matematica Discreta Sesion de Practicas 2

Aritmetica

Aritmetica Modular

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 escribira 0 puesto que las operaciones estan en Z6.

Si ponemos

a-b

y pulsamos enter, nos escribira 5 puesto que3− 4 = −1 ≡ 5(6).

Page 10: Álgebra y Matemática Discreta Sesión de Prácticas 2

Algebra y Matematica Discreta Sesion de Practicas 2

Aritmetica

Aritmetica Modular

Operaciones Modulares

Si operamos un numero de Zn con un elemento de Z, elresultado lo considerara en Zn

Como a valıa 3 ∈ Z6, si ponemos 7 ∗ a nos respondera 3porque 21 ≡ 3(6).

Tambien podemos hacer exponenciaciones a18 = 3

Page 11: Álgebra y Matemática Discreta Sesión de Prácticas 2

Algebra y Matematica Discreta Sesion de Practicas 2

Aritmetica

Aritmetica Modular

Inversos

Si tratamos de calcular un inverso que no existe nos dara 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.

Page 12: Álgebra y Matemática Discreta Sesión de Prácticas 2

Algebra y Matematica Discreta Sesion de Practicas 2

Aritmetica

Aritmetica Modular

Inversos

Tomemos ahora otro anillo modular

S = Zmod(256)

c = S(7)

print c^-1

Nos devolvera 183, que es el inverso de 7 modulo 256.

Podemos comprobarlo poniendo 183*c que nos dara 1.

Page 13: Álgebra y Matemática Discreta Sesión de Prácticas 2

Algebra y Matematica Discreta Sesion de Practicas 2

Aritmetica

Aritmetica Modular

La Funcion ϕ de Euler

El numero de elementos invertibles en Zn se llama ϕ(n) y secalcula con euler_phi(n).

Esta funcion tiene la propiedad de que cualquier elementoinvertible elevado a ese numero es 1.

Pongamos por ejemplo:

S = Zmod(256)

c = S(7)

print c^euler_phi(256)

Nos devolvera 1.

En este caso la funcion vale 128.

Page 14: Álgebra y Matemática Discreta Sesión de Prácticas 2

Algebra y Matematica Discreta Sesion de Practicas 2

Aritmetica

Aritmetica Modular

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 solucion por el Teorema Chino de losRestos, que nos dice que la solucion es unica modulo elmınimo comun multiplo de 5 y 7, en este caso 35.

El calculo con sage se hace con el comando

crt([3,2],[5,7])

En este caso el valor es 23 modulo 35.

Page 15: Álgebra y Matemática Discreta Sesión de Prácticas 2

Algebra y Matematica Discreta Sesion de Practicas 2

Aritmetica

Polinomios

Polinomios con Coeficientes Modulares

Podemos definir tambien 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.

Page 16: Álgebra y Matemática Discreta Sesión de Prácticas 2

Algebra y Matematica Discreta Sesion de Practicas 2

Aritmetica

Polinomios

Factorizacion

Como sucedıa con polinomios sobre otros cuerpos, lafactorizacion 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 factorizacion:

(x + 4) * (x^2 + x + 1)

Page 17: Álgebra y Matemática Discreta Sesión de Prácticas 2

Algebra y Matematica Discreta Sesion de Practicas 2

Aritmetica

Polinomios

Dominios Euclıdeos

Casi todo lo que hemos dicho para Z en relacion con ladivisibilidad, es cierto tambien para los polinomios concoeficientes en R, Q, C o un incluso Zp con p primo.

En particular podemos calcular el maximo comun divisor y elmaximo comun divisor extendido con el mismo algoritmo quelo hacıamos en Z.

Tambien es cierto que todo polinomio se descompone deforma unica como producto de polinomios irreducibles. Cualessean esos factores depende de donde esten los coeficientes.

En realidad, siempre que tengamos una division con resto, lopodemos hacer. Los conjuntos donde tenemos una division deesta forma se llaman dominios euclıdeos.

Page 18: Álgebra y Matemática Discreta Sesión de Prácticas 2

Algebra y Matematica Discreta Sesion de Practicas 2

Aritmetica

Cuerpos

Definicion

Un cuerpo es un conjunto K con dos operaciones + y · y doselementos destacados distintos 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 .

Page 19: Álgebra y Matemática Discreta Sesión de Prácticas 2

Algebra y Matematica Discreta Sesion de Practicas 2

Aritmetica

Cuerpos

Ejempos de Cuerpos

Son cuerpos por ejemplo Q, R y C. Estos son cuerposinfinitos.

Tambien son cuerpos los conjuntos Zp cuando p es primo.Estos son cuerpos finitos.

Existen otros cuerpos finitos mas complejos con un numero deelementos pα.

Los cuerpos finitos se suelen llamar tambien cuerpos de Galois.

Page 20: Álgebra y Matemática Discreta Sesión de Prácticas 2

Algebra y Matematica Discreta Sesion de Practicas 2

Aritmetica

Cuerpos

Cuerpo de 8 elementos

Igual que los cuerpos Zp se hacıan con la relacion decongruencia modulo p, los cuerpos de Galois se hacen conpolinomios y congruencias modulo un polinomio irreducible.

El programa sage puede manejarlos sin ninguna dificultad.

Para definir el cuerpo de 8 elementos, tenemos que decirsimplemente como queremos llamar a la variable de lospolinomios que aparecen.

K = GF(8,’a’)

Page 21: Álgebra y Matemática Discreta Sesión de Prácticas 2

Algebra y Matematica Discreta Sesion de Practicas 2

Aritmetica

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.