Aritmética modular

Domingo, 11 de septiembre de 2011

De pequeños, en la escuela, se nos enseñan varios tipos de números: los naturales, enteros, racionales, reales, complejos… Tienen propiedades muy similares: todos se pueden sumar, restar, multiplicar y dividir. También todos ellos tienen una cantidad infinita de elementos. Pero existen muchas más construcciones que son de sumo de interés. Una parte muy peculiar de las ciencias exactas trabaja lo que se denomina aritmética modular. En el fondo, aunque no la hayamos estudiado, todos la conocemos. Imaginemos unas matemáticas que sólo empleasen un número limitado de números; 24, por ejemplo, desde el cero hasta el 23. Si a este último elemento, el 23, le sumamos uno, volvemos a tener un cero. Y si al cero le restamos uno, tenemos 23. Con este conjunto de números también podemos sumar, resta y multiplicar, pero repito, no son un grupo ilimitado, sino finito. Esta tipo de aritmética fue desarrollada formalmente por el genial Gauss a comienzos del siglo XIX pero, como posiblemente hayáis imaginado, son en el fondo bastante de uso bastante cotidiano.
He introducido, por familiaridad, un sistema de 24 elementos, porque tales son las horas del día. Pero podríamos hablar, por ejemplo, de siete. A los elementos de este conjunto los podemos llamar 0, 1, 2, 3, 4, 5 y 6; o bien lunes, martes, miércoles… Si al día dos le sumamos siete, volvemos a estar en el día dos. Y si le restamos tres, obtenemos el día seis. Para ser más correctos, en este dominio no se habla de igualdad, sino de congruencia. Decimos que dos días son congruentes módulo siete si son el mismo día de la semana, aunque uno sea 21 de febrero y el otro 17 de marzo. De la misma forma, dos horas son congruentes módulo 24 si el reloj nos muestra el mismo número, aunque estemos en días diferentes. Un tipo de aritmética modular muy curioso es la módulo dos. Las clases de congruencia que crea dividen a los números naturales en dos grupos: los pares y los impares. Por supuesto, posee sus reglas aritméticas propias: dos pares suman siempre par; un par y un impar suman par; el producto de dos pares es par, etc. Se trata de una aritmética de dos elementos: par e impar.
A partir del último ejemplo es fácil comprender por qué a se le denomina modular. El módulo o resto de las divisiones de los números naturales por n da lugar a las diferentes aritméticas modulares. Supongamos que queremos trabajar con un módulo 365. Por simplificar un poco la idea, lo que debemos hacer es efectuar las operaciones de forma habitual, tal y como estamos acostumbrados a hacer con los números naturales, dividir luego por 365 y quedarnos con el resto. El resultado es lo que buscábamos.
Hay una razón para que me extienda sobre esta rama de las ciencias exactas en este blog. Los calendarios trabajan con ciclos. Algunos son impuestos por fenómenos astronómicos, como el ciclo metónico o el calípico. Otros son meramente convenciones resultado de una larga evolución histórica y cultural, como la semana. En cualquier caso, las operaciones matemáticas en dicho marco se efectúan con las herramientas que nos proporciona la aritmética modular. Incluso cuando combinamos dos ciclos, en el fondo se obtiene otro más extenso. Para ser más precisos, su duración viene dada por el máximo común múltiplo de ambos módulos. Pongamos un ejemplo, para entenderlo mejor. El calendario anual, simplificando un poco, se repite cada 365*4+1 días (el día extra es por los bisiestos). Esto son 1461 días. La semana sigue un ciclo de siete. En conjunto, veremos repetirse la coincidencia de fechas y días semanas en el calendario cada 1461*7 días; esto es, cada 10227 días, que son 28 años. Los días de la semana y el año se rigen por una aritmética módulo 10227. En otra ocasión hablaremos de los calendarios perpetuos y habrá oportunidad de extenderse sobre este tema.

Share

La meridiana de San Petronio

Martes, 26 de julio de 2011

La primera referencia a una meridiana solar la encontramos en De Architectura de Vitruvio, aunque el término no tiene el sentido que más adelante se le daría, sino que se usa como elemento constructivo del analema. El tiempo haría que meridiana y analema al mediodía terminasen identificados. En esencia, la meridiana como instrumento es algo tan simple como un objeto o hendidura que se usa para estudiar la sombra (o luz) del sol que proyecta cada mediodía. Dicha figura forma un ocho alargado precisamente en la dirección de las meridianas terrestres. Su construcción, pues, puede ser muy sencilla, y un instrumento así nos proporciona información valiosa, como la determinación de la fecha. En efecto, la sombra más corta marca sobre el suelo el solsticio de verano, y la más alargada el de invierno. Entre ambas marcas, se puede ir señalando el día del año, que se repetirá -casi, habría que anotar- en los años sucesivos, a modo de calendario.

Meridiana del Hotel Victoria. Fuente: Wikipedia (Harlock81)

Meridiana del Hotel Victoria. Fuente: Wikipedia (Harlock81)

Sin embargo, sus posibilidades no se agotan en ser un mero calendario solar. En el siglo XVII el interés por dicho instrumento conoce un curioso renacimiento. Kepler acababa de publicar sus descubrimientos, y el debate sobre el heliocentrismo sacudía la astronomía. Más allá de los propios cálculos del alemán, fue precisamente uno de los científicos dudosos respecto a sus ideas quien aportaría la primera demostración de su segunda ley. Quizás Giovanni Cassini pretendía probar que el Sol giraba alrededor de la Tierra, pero lo que obtuvo fue una evidencia de lo contrario.
Me explico: desde antiguo se sabía que el Sol parecía moverse sobre el cielo más lentamente durante los meses de verano. La creencia antigua decía que tal hecho se debía meramente a una cuestión de perspectiva, ya que durante esos días el astro está más lejos de la Tierra (si te ha extrañado esta frase, debes leer el porqué de las estaciones antes de continuar). Según Kepler, no se trata sólo de eso: nuestro planeta se mueve efectivamente más rápido al acercarse al Sol. Para comprobar si tenía razón -o demostrar que estaba equivocado- había que medir durante el año las variaciones de su diámetro, las de su sombra, y llevar a cabo algunas cuentas. Y Cassini se puso manos a la obra, pero necesitaba medidas muy precisas de la meridiana, tan precisas como le fuera posible.
Había en realidad otros intereses adicionales que se sumaban al proyecto: la determinación exacta de la duración del año solar no era menos importante, ya que de ello depende el calendario, y llevaba asociada la eterna preocupación de la Iglesia por la determinación de la fecha de la Pascua. Pues bien, para efectuar estas mediciones con la mayor precisión, Cassini necesitaba una meridiana lo más grande posible. Y le parecieron suficientes unos 27 metros. A esa altura, en la Basílica de San Petronio, en Bolonia, practicó un agujero de dos centímetros y medio, que proyectaría una sombra sobre el suelo capaz de extenderse en verano hasta casi 67 metros. Todavía hoy sigue siendo la más larga del mundo.
En realidad, tal proyecto en la basílica lo inició 75 años antes Ignacio Danti, quien después formase parte de la comisión de la que nació el calendario gregoriano. Sin embargo, tuvo que ser demolido por una ampliación. Cuando Cassini estudió su reconstrucción, no se conformó con la altura original del gnomon (la abertura), sino que quiso elevarlo un tercio más. Puede parecer sencillo, pero en realidad se trataba de una osadía: el templo no mira exactamente al sur, y la meridiana caía pues en diagonal. Para hacer dicha ampliación el astrónomo tuvo que hallar una posición crítica en la fachada de modo que la luz discurriese de forma muy ajustada entre las columnas.

Meridiana de San Petronio

Meridiana de San Petronio

Aunque Cassini evidenció con sus cálculos la validez de la segunda ley de Kepler, su condición de italiano no le permitía adoptar a la ligera la postura geocéntrica. Por esta razón terminaría concluyendo que “il Sole o, il che è la stessa cosa, la Terra, può essere trattato come un pianeta, come affermato da Copernico” [el Sol, o equivalentemente, la Tierra, puede tratarse como un planeta, como defendía Copérnico].

Publicación de Giovanni Domenico Cassini en openlibrary.org: La meridiana del templo de San Petronio.

Share

Recomendaciones para programadores

Domingo, 17 de julio de 2011

He sabido por enlavin de una entrada de Armin Ronacher donde se describen las particularidades de programar fechas en Python. No voy a entrar a tratar los detalles: mi experiencia con este lenguaje ha sido cautivadora pero breve, y desde luego no he tenido que lidiar con su módulo para el tiempo. Tampoco es éste un blog de programación, y cuando he tocado la informática (Unix, Excel, HTML), lo he intentado hacer desbrozándola de aspectos técnicos. Sin embargo, como no somos pocos los que hemos tenido que hacer malabares escribiendo código para almacenar datos o generar informes, y las recomendaciones de Ronacher son universales, y no sólo propias del lenguaje Python, me gustaría extraer las breves conclusiones a las que llega. Tan breves que se resumen en dos únicos mandamientos:

1. Trabaja internamente con UTC.
2. En la interfaz de usuario, convierte a (y desde) tiempo local.

Estas dos ideas no resultan tan obvias para un novel como para quienes ya hemos tropezado alguna vez con esta piedra. La segunda se deriva de la primera, así que no precisa justificación. Respecto a la primera, el código principal no debe contagiarse de las innumerables y a veces ridículas particularidades que afectan a la hora local: calendario, situación geográfica, horarios de verano, variaciones históricas, etc. Lo ideal es recoger todo esto en una función (si es que no existe una librería que lo proporcione) donde sólo haya que tocar una vez si fuese necesario efectuar alteraciones. Trabajar con UTC no es sólo más simple: el Tiempo Universal Coordinado no es ambiguo; la hora local, sí. Ronacher, entre quejas por la API de Python y los errores relacionados con el tzinfo, es tan tajante que reconviene incluso de añadir información sobre la zona horaria en que se estampan los tiempos. Así, dice, todavía hay una posibilidad de que algún día hagamos las cosas mejor.

Share