Polinomios, cuerpos y extensiones. Un vistazo utilizando el

Transcripción

Polinomios, cuerpos y extensiones. Un vistazo utilizando el
Universidad de Puerto Rico, Rı́o Piedras
Facultad de Ciencias Naturales
Departamento de Matemáticas
San Juan, Puerto Rico
Polinomios, cuerpos y extensiones. Un vistazo utilizando el
Programa Mathematica
Proyecto MATE 4081: Álgebra Abstracta
Los sistemas de álgebra computacional (CAS, por sus siglas en inglés) han revolucionado la forma en la cual trabajamos problemas matemáticos. En la actualidad,
los CAS son utilizados, entre otras cosas, para
1. descubrir nuevos patrones y relaciones,
2. sugerir principios matemáticos utilizando las capacidades gráficas de estos
3. explorar un posible resultado para ver si merece una demostración formal,
4. remplazar derivaciones a manos con derivaciones basadas en la computadora,
5. confirmar resultados derivados de forma analı́tica.
Muchas áreas de la matemática se han beneficiado grandemente por los CAS,
siendo la Teorı́a de Números, el Álgebra y la Combinatoria las más beneficiadas.
Algunos ejemplos de CAS son Mathematica, MAPLE y SAGE.
En este mini proyecto trabajaremos con el programa Mathematica. La Facultad
de Ciencias Naturales de la Universidad de Puerto Rico, Recinto de Rı́o Piedras posee
una licencia (de tipo “Site License”) para este programa. Esta licencia permite que
tanto estudiantes como profesores de la Facultad puedan descargar el programa en
sus computadoras personales. Para obtener su copia, por favor ingrese a
http://emmy.uprrp.edu/lmedina/wolfram/
y siga las instrucciones.
El anillo de polinomios F [x] donde F es un cuerpo
En nuestro curso hemos trabajado con el anillo F [x]. En particular, demostramos,
entre otras cosas,
1. F [x] es an anillo conmutativo con identidad,
2. F [x] es un dominio integral,
3. F [x] es un dominio de ideales principales,
4. dado f (x), g(x) ∈ F [x] \ {0}, el gcd(f (x), g(x)) existe y puede escribirse como
una combinación de f (x) y g(x),
1
5. un ideal I = (p(x)) es maximal si y solo si p(x) es irreducible.
El sistema Mathematica es bien útil para hacer calculaciones en este cuerpo. A continuación, algunos ejemplos.
Ejemplo: Suponga que queremos encontrar el gcd(f (x), g(x)) en Q[x] con
f (x) = x3 + 6x2 + 11x + 6
g(x) = x4 + 15x3 + 73x2 + 129x + 70.
En este caso, tenemos dos opciones. Opción 1, lo hacemos a mano (y sufrimos por
pecadores). Opción 2, somos personas racionales y utilizamos los recursos que nos
provee nuestra instución, en este caso, el programa Mathematica. Supongamos que
somos racionales, entonces, abrimos el programa Mathematica y escribimos
PolynomialGCD[x3 + 6x2 + 11x + 6, x4 + 15x3 + 73x2 + 129x + 70]
y Mathematica, siendo un ser orgulloso, regresa la respuesta
x2 + 3x + 2.
Ejemplo: Suponga ahora que usted no esta satisfecho(a) y quiere a(x), b(x) ∈ Q[x]
tal que
x + 2 = gcd(f (x), g(x)) = a(x)f (x) + b(x)g(x)
con
f (x) = x3 + 6x2 + 11x + 6
g(x) = x4 + 15x3 + 73x2 + 129x + 70.
En este caso, escriba en Mathematica el siguiente código
PolynomialExtendedGCD[x3 + 6x2 + 11x + 6, x4 + 15x3 + 73x2 + 129x + 70].
De nuevo, como Mathematica es un ser orgulloso, regresa la respuesta
{2 + 3x + x2 , {1/8(−9 − x), 1/8}}.
Esto significa que si
1
a(x) = − (9 + x)
8
1
b(x) =
,
8
entonces
2 + 3x + x2 = a(x)f (x) + b(x)g(x).
Ejemplo: Suponga ahora que queremos encontrar gcd(f (x), g(x)) sobre Z13 [x] con
f (x) = x5 + 3x2 + x + 1
g(x) = x4 + 12x3 + 11x2 + 2x + 1.
En este caso, si escribe el código
2
PolynomialGCD[x5 + 3x2 + x + 1, x4 + 12x3 + 11x2 + 2x + 1]
obtendrá 1, lo cual es correcto en Q[x], pero no en Z13 [x]. Para obtener el resultado
deseado, debe escribir
PolynomialGCD[x5 + 3x2 + x + 1, x4 + 12x3 + 11x2 + 2x + 1, Modulus->13].
En este caso, obtendrá la respuesta
x2 + x + 8,
la cual es correcta. De igual forma, si quiere obtener a(x), b(x) ∈ Z13 [x] tal que
x2 + x + 8 = a(x)f (x) + b(x)g(x),
entonces escriba
PolynomialExtendedGCD[x5 + 3x2 + x + 1, x4 + 12x3 + 11x2 + 2x + 1,
Modulus->13].
En este caso, obtiene la respuesta
{8 + x + x2 , {1 + 6x, 7 + 6x + 7x2 }},
la cual implica que a(x) = 1 + 6x y b(x) = 7 + 6x + 7x2 .
Puede verificar su respuesta escribiendo el siguiente código
PolynomialMod[(1 + 6x)(x5 + 3x2 + x + 1) + (7 + 6x + 7x2 )(x4 + 12x3 + 11x2 + 2x + 1),
13].
Ejemplo: Suponga ahora que quiere verificar si el polinomio p(x) = x5 + 2x + 1 es
irreducible en Q[x]. En este caso, escriba el código
IrreduciblePolynomialQ[x5 + 2x + 1].
Mathematica regresa la respuesta True, lo cual nos dice que este polinomio es irreducible en Q[x]. Tratemos ahora el mismo problema, pero en Z3 [x]. En este caso,
escribimos
IrreduciblePolynomialQ[x5 + 2x + 1, Modulus->3]
y Mathematica regresa True, lo cual nos dice que este polinomio también es irreducible
sobre Z3 [x]. Desde luego, como tenemos un CAS, podemos tratar primos más grandes,
digamos que queremos saber si este polinomio es irreducible sobre Z17 [x]. Bueno,
escriba
IrreduciblePolynomialQ[x5 + 2x + 1, Modulus->17]
y note que Mathematica regresa False, lo cual nos dice que este polinomio es reducible
en Z17 [x]. Si quiere saber una factorización, escriba
3
Factor[x5 + 2x + 1, Modulus->17]
y observe que Mathematica regresa (10 + 9x + x2 )(12 + 3x + 8x2 + x3 ), la cual es una
factorización para este polinomio en Z17 [x].
Ahora, de nuevo, estamos en un CAS, podemos tratar primos aún más grandes,
digamos que queremos hacer el mismo ejercicio con el primo número 10,000. Este
primo se puede obtener en Mathematica escribiendo
Prime[10000].
Note que Mathematica regresa 104,729, el cual es el primo número 10,000.
Verifiquemos si x5 + 2x + 1 es irreducible en Z104729 [x]. Escriba
IrreduciblePolynomialQ[x5 + 2x + 1, Modulus->104729].
Mathematica regresa False, lo cual nos dice que este polinomio es reducible en
Z104729 [x]. Esto es cierto, de hecho, note que si escribimos
Factor[x5 + 2x + 1, Modulus->104729],
obtenemos la factorización (2971 + x)(28802 + x)(71857 + x)(28372 + 1099x + x2 ) en
Z104729 [x].
Ejemplo: Suponga que ahora nos piden que construyamos un cuerpo con 28,561
elementos. Para esto, primero necesitamos verificar si 28,561 es una potencia de un
primo. Si lo es, entonces podemos construir tal cuerpo, si no lo es, entonces este
problema es imposible. Para econtrar la factorización prima de este número, escriba
FactorInteger[28561].
Note que Mathematica regresa {{13, 4}}, lo cual nos dice que 28561 = 134 y por lo
tanto sabemos que un cuerpo con esa cantidad de elementos puede construirse.
Nota: Escriba FactorInteger[24] y verifique la respuesta. ¿Ve algún patrón?
Para construir este cuerpo, necesitamos encontrar un polinomio de grado 4 que sea
irreducible en Z13 [x]. Puede verificar que x4 + 1 es reducible sobre Z13 [x] y por lo
tanto, este polinomio no nos sirve. Considere x4 + 2. Note que
IrreduciblePolynomialQ[x4 + 2,Modulus-> 13]
regresa True y por lo tanto, x4 + 2 es irreducible en Z13 [x]. Como x4 + 2 es irreducible
en Z13 [x], entonces (x4 + 2) es un ideal maximal de Z13 [x] y por lo tanto,
Z13 [x]/(x4 + 2)
es un cuerpo con 134 = 28, 561 elementos.
Ejemplo: Considere el cuerpo anterior. Sabemos los elementos este cuerpo, el cual
llamaremos F134 , son de la forma [ax3 + bx2 + cx + d] con a, b, c, d ∈ Z13 y [x4 + 2] = 0,
4
lo cual es equivalente a [x4 ] = [−2] = [11]. Suponga que queremos encontrar el inverso
de [3x3 + 5x2 + x + 5]. Esto es, queremos encontrar [ax3 + bx2 + cx + d] tal que
[3x3 + 5x2 + x + 5][ax3 + bx2 + cx + d] = [1].
Escriba el siguiente código en Mathematica
Collect[(3x3 + 5x2 + x + 5)(ax3 + bx2 + cx + d), x]
Note que esto regresa
[5d+(5c+d)x+(5b+c+5d)x2 +(5a+b+5c+3d)x3 +(a+5b+3c)x4 +(5a+3b)x5 +3ax6 ]
Ahora, nuestros elementos son polinomios cúbicos sobre Z13 y [x4 ] = [11]. Por lo tanto,
debemos reducir en grado. Para esto, note que [x4 ] = [11] implica que [x5 ] = [11x] y
[x6 ] = [11x2 ]. Escriba el código
Collect[PolynomialMod[Collect[(3x3 + 5x2 + x + 5)(ax3 + bx2 + cx + d), x]/.{x4
-> 11, x5 -> 11x, x6 -> 11x2 },13],x]
lo cual regresa
[(11a + 3b + 7c + 5d) + (3a + 7b + 5c + d)x + (7a + 5b + c + 5d)x2 + (5a + b + 5c + 3d)x3 ].
En arroz y habichuelas, el producto [3x3 + 5x2 + x + 5][ax3 + bx2 + cx + d] es igual a
[(11a + 3b + 7c + 5d) + (3a + 7b + 5c + d)x + (7a + 5b + c + 5d)x2 + (5a + b + 5c + 3d)x3 ]
en F134 . Ahora, nosotros queremos que este producto de [1]. Para que esto suceda,
necesitamos que
5a + b + 5c + 3d
7a + 5b + c + 5d
3a + 7b + 5c + d
11a + 3b + 7c + 5d
≡
≡
≡
≡
0 mod 13 (coeficiente de x3 )
0 mod 13 (coeficiente de x2 )
0 mod 13 (coeficiente de x)
1 mod 13 (coeficiente constante)
Para resolver este sistema de congruencias, escriba el código
Solve[{11a + 3b + 7c + 5d = 1, 3a + 7b + 5c + d = 0, 7a + 5b + c + 5d =
0, 5a + b + 5c + 3d = 0},{a, b, c, d},Modulus-> 13]
para obtener el resultado
{{a->10, b->2, c->5, d->9}}.
En arroz y habichuelas, el inverso de [3x3 +5x2 +x+5] en F134 es [10x3 +2x2 +5x+9].
Este resultado se puede verificar escribiendo el código
5
PolynomialMod[(3x3 + 5x2 + x + 5)(10x3 + 2x2 + 5x + 9), x4 + 2, Modulus -> 13]
el cual regresa 1.
Problemas
1. Sea pn el n-ésimo primo.
(a) Encuentre d(x) = gcd(x110 + x50 + x + 1, x49 + x24 + 2) en Zp433 [x].
(b) Encuentre a(x), b(x) ∈ Zp433 [x] tal que
a(x)(x110 + x50 + x + 1) + b(x)(x49 + x24 + 2) = d(x).
2. Encuentre los primeros dos primos p tal que x6 + 3x3 + 3 factoriza como el
producto de polinomios lineales sobre Zp [x].
3. Defina, para n > 1, el polinomio qn (x) = xn + x + n. Encuentre los primeros 5
primos p para los cuales los polinomios q2 (x), q3 (x), q4 (x), q5 (x), q6 (x) son irreducibles en Zp [x] a la misma vez.
4. Construya un cuerpo con 1, 419, 857 elementos.
5. Haga lo siguiente:
(a) Verifique que Z19 [x]/(x9 + 3) es un cuerpo.
(b) ¿Cuántos elementos tiene este cuerpo?
(c) Encuentre el inverso de [x5 + 3x2 + x + 1] en este cuerpo.
6

Documentos relacionados