stringtranslate.com

La congruencia de Zeller

La congruencia de Zeller es un algoritmo ideado por Christian Zeller en el siglo XIX para calcular el día de la semana para cualquier fecha del calendario juliano o gregoriano . Se puede considerar que se basa en la conversión entre el día juliano y la fecha del calendario.

Fórmula

Para el calendario gregoriano, la congruencia de Zeller es

para el calendario juliano es

dónde

En este algoritmo enero y febrero se cuentan como los meses 13 y 14 del año anterior. Por ejemplo, si es el 2 de febrero de 2010, el algoritmo cuenta la fecha como el segundo día del decimocuarto mes de 2009 (14/02/2009 en formato DD/MM/AAAA).

Para una fecha de semana ISO Día de la semana d (1 = lunes a 7 = domingo), utilice

Análisis

Estas fórmulas se basan en la observación de que el día de la semana avanza de manera predecible según cada subparte de esa fecha. Cada término dentro de la fórmula se utiliza para calcular la compensación necesaria para obtener el día correcto de la semana.

Por lo tanto, para el calendario gregoriano, las distintas partes de esta fórmula pueden entenderse de la siguiente manera:

La razón por la que la fórmula difiere para el calendario juliano es que este calendario no tiene una regla separada para los siglos bisiestos y está compensado del calendario gregoriano por un número fijo de días cada siglo.

Dado que el calendario gregoriano fue adoptado en diferentes momentos en diferentes regiones del mundo, la ubicación de un evento es importante para determinar el día correcto de la semana para una fecha que ocurrió durante este período de transición. Esto solo se requiere hasta 1929, ya que este fue el último año en que el calendario juliano todavía estaba en uso en cualquier país del mundo y, por lo tanto, no se requiere para 1930 o después.

Las fórmulas se pueden utilizar de forma proléptica, pero el "año 0" es en realidad el año 1 a. C. (ver numeración de años astronómicos ). De hecho, el calendario juliano es proléptico hasta el 1 de marzo del 4 d.C. debido a la mala gestión en Roma (pero no en Egipto) en el período desde que el calendario entró en vigor el 1 de enero del 45 a.C. (que no era un año bisiesto). Además, el operador de módulo podría truncar números enteros en la dirección incorrecta (techo en lugar de suelo). Para dar cabida a esto, se puede añadir un múltiplo suficiente de 400 años gregorianos o 700 julianos.

Ejemplos

Para el 1 de enero de 2000, la fecha se trataría como el mes 13 de 1999, por lo que los valores serían:

Entonces la fórmula se evalúa como .

(El 36 proviene de , truncado a un número entero).

Sin embargo, para el 1 de marzo de 2000, la fecha se trata como el tercer mes de 2000, por lo que los valores se convierten en

entonces la fórmula se evalúa como .

Implementaciones en software.

Modificación básica

Las fórmulas se basan en la definición matemática de división de módulo , lo que significa que −2 mod 7 es igual a positivo 5. Desafortunadamente, en la forma truncada, la mayoría de los lenguajes de computadora implementan la función del resto, −2 mod 7 devuelve un resultado de −2. Entonces, para implementar la congruencia de Zeller en una computadora, las fórmulas deben modificarse ligeramente para asegurar un numerador positivo. La forma más sencilla de hacer esto es reemplazar − 2 J con + 5 J y J con + 6 J .

Para el calendario gregoriano, la congruencia de Zeller se vuelve

Para el calendario juliano, la congruencia de Zeller se vuelve


Se puede ver fácilmente que, en un año determinado, el último día de febrero y el 1 de marzo son buenas fechas de prueba.

Como nota al margen, si tenemos un número de tres dígitos abc, donde a, b y c son los dígitos, cada uno de ellos no es positivo si abc no es positivo; tenemos (abc) mod 7 = 9*a + 3*b + c. Repita la fórmula hasta un solo dígito. Si el resultado es 7, 8 o 9, resta 7. Si, en cambio, el resultado es negativo, suma 7. Si el resultado sigue siendo negativo, suma 7 una vez más. Utilizando este enfoque, podemos evitar las preocupaciones sobre las diferencias específicas del idioma en las evaluaciones del mod 7. Esto también puede mejorar una técnica de cálculo mental.

Simplificación común

Zeller usó aritmética decimal y encontró conveniente usar J y K para representar el año. Pero cuando se usa una computadora, es más sencillo manejar el año Y y el mes m modificados , que son Y - 1 y m + 12 durante enero y febrero:

Para el calendario gregoriano, la congruencia de Zeller se vuelve

En este caso no hay posibilidad de desbordamiento debido al único término negativo porque .

Para el calendario juliano, la congruencia de Zeller se vuelve

El algoritmo anterior se menciona para el caso gregoriano en RFC  3339, Apéndice B, aunque en forma abreviada que devuelve 0 para el domingo.

Otras variaciones

Al menos otros tres algoritmos comparten la estructura general de la congruencia de Zeller en su tipo de "simplificación común", utilizando también un m ∈ [3, 14] ∩ Z y el constructo "año modificado".

Se puede demostrar que ambas expresiones progresan de una manera que está desviada en uno en comparación con el componente de duración del mes original en el rango requerido de m , lo que da como resultado un valor inicial de 0 para el domingo.

Ver también

Referencias

  1. ^ La regla de cada cinco meses solo se aplica a los doce meses de un año que comienza el 1 de marzo y finaliza el último día del febrero siguiente.
  2. ^ ab Stockton, J R. "Material relacionado con la congruencia de Zeller". "Merlyn", archivado en NCTU Taiwán .
  3. ^ Tøndering, Claus. "Preguntas relacionadas con la semana". www.tondering.dk .

Bibliografía

Cada uno de estos cuatro artículos con imágenes similares trata, en primer lugar, del día de la semana y, en segundo lugar, de la fecha del Domingo de Pascua, para los calendarios juliano y gregoriano. Las páginas enlazan con traducciones al inglés.

enlaces externos