Saltar a contenido principal

Sección 6.6 Ejercicios en Sage

Los siguientes ejercicios más que sobre clases laterales y subgrupos, son sobre el uso de Sage como herramienta experimental. Están diseñados para ayudarle a ser más eficiente y más expresivo, a la hora de escribir comandos en Sage. Tendremos muchas oportunidades de trabajar con clases laterales y subgrupos en los capítulos que vienen. Estos ejercicios no son tan guiados y su dificultad va en aumento. Están diseñados para explorar, o confirmar, resultados presentados en este o anteriores capítulos.

Importante: Debiese contestar cada uno de los últimos tres problemas con una sola línea (complicada) de Sage cuyo resultado sea True. Una “sola línea” quiere decir que tendrá varios comandos de Sage usados juntos de formas complejas. No quiere decir varios comandos Sage separados por punto y coma, tipeados en una sola línea. Asegúrese de incluir algunos pasos intermedios usados en construir su solución, pero usando rangos de números más pequeños para no abrumar al lector con demasiado para mirar. Esto le ayudará a usted y al corrector de su trabajo para tener confianza en que la versión final es correcta.

Cuando verifique la divisibilidad de enteros, recuerde que range() produce enteros comunes, cuya funcionalidad es básica. El comando srange() produce enteros Sage, que tienen más capacidades. (Vea el último ejercicio como ejemplo.) Y recuerde que una lista es una forma compacta de examinar muchas posibilidades a la vez.

1.

Use .subgroups() para encontrar un ejemplo de un grupo \(G\) y un entero \(m\text{,}\) tal que (a) \(m\) divide el orden de \(G\text{,}\) y (b) \(G\) no tiene subgrupo de orden \(m\text{.}\) (No use el grupo \(A_4\) como \(G\text{,}\) pues ese está en el texto.) Escriba una sola línea de código Sage que contenga toda la lógica necesaria para producir \(m\) como respuesta. (Puede darle un nombre simple a su grupo en una línea previa y luego referirse a él por ese nombre.) A continuación un ejemplo muy simple que le puede ayudar a estructurar su respuesta.

2.

Ejemplifique el Pequeño Teorema de Fermat (en cualquiera de sus variantes) usando el número compuesto \(391=17\cdot 23\) como elección de base (ya sea \(a\) o \(b\)), y para \(p\) recorriendo todos los valores primos entre \(100\) y \(1000\text{.}\)

Construya paulatinamente una solución — haga una lista de potencias (empezando por unos pocos primos), luego haga una lista de potencias reducidas en la aritmética modular, luego una lista de comparaciones con el valor predicho, luego verifique todos estos valores lógicos resultantes de la comparación. Esta es una estrategia útil en muchos problemas similares. Finalmente podrá escribir una sola línea que realice la verificación completa y devuelva True. A continuación hay algunas sugerencias de funciones útiles.

3.

Verifique que el grupo de unidades mód \(n\) tiene orden \(n-1\) cuando \(n\) es primo, nuevamente para todos los primos entre \(100\) y \(1000\text{.}\) Como antes, su resultado debe ser simplemente True, una única vez, indicando que la proposición respecto al orden es verdadera para todos los primos examinados. Como antes, construya su solución paso a paso, y con conjuntos menores de primos en el comienzo. Exprese su respuesta como una sola línea de código Sage.

4.

Verifique el Teorema de Euler para todos los valores \(0\lt n\lt 100\) y para \(1\leq a \leq n\text{.}\) Esto requerirá bucles for anidados con un condicional. Nuevamente, a continuación un pequeño ejemplo que puede ser útil para construir su línea única de código Sage. Note el uso de srange() en este ejemplo.

5.

El grupo simétrico en \(7\) símbolos, \(S_7\text{,}\) tiene \(7! = 5040\) elementos. Considere las siguientes preguntas sin utilizar Sage, basado en lo que sabemos sobre los órdenes de los elementos en grupos de permutaciones (Ejercicio 5.3.13).

  • ¿Cuál es el mayor orden posible?

  • ¿Cuántos elementos hay de orden \(10\text{?}\)

  • ¿Cuántos elementos hay de orden \(1\text{?}\)

  • ¿Cuántos elementos hay de orden \(2\text{?}\)

  • ¿Cuál es el menor entero positivo para el que no hay elemento de ese orden?

Estas preguntas resultan más fáciles si sabe usar los coeficientes binomiales para contar en situaciones similarmenate complejas. En cualquier caso, reflexione seriamente sobre cada una de esta preguntas (y quizás alguna otra que se le ocurra) antes de lanzarse con Sage.

Ahora, calcule cuántos elementos hay de cada orden usando el método .order(), e incluya esto en una lista exhaustiva que contenga el número de elementos de cada orden. Puede verificar su trabajo (o el de Sage) usando el comando sum() para sumar esta lista y ojalá obteniendo \(5040\text{.}\)

Comente el proceso de primero estudiar estas preguntas sin ayuda computacional, y luego nuevamente con Sage. ¿Para qué valores de \(n\) cree que Sage sería demasiado lento y su mente más rápida?