Calcular a data da Páscoa
Calcular a data do Domingo de Páscoa é de uma complexidade atroz, e nem vamos falar de toda a mitologia por trás da matemática envolvida.
Publicado Monday, May 24, 2010 at 12:23 AM
Este cálculo é muito importante nas civilizações de tradição católica, visto que três feriados (em Portugal – noutros países até podem ser mais) dependem do dia do Domingo de Páscoa: o Carnaval é 47 dias antes; a Sexta-feira Santa é dois dias antes; e o Corpo de Deus é 60 dias depois.
Antes de passarmos ao cálculo do dia, é preciso introduzir alguns conceitos.
Ciclo metónico
O ciclo metónico é um múltiplo comum entre anos solares e meses lunares, correspondente a 19 anos. Foi observado pela primeira vez pelo astrónomo grego Meton. Na realidade, o ciclo não é exactamente o mesmo: 19 anos solares são 6.939,602 dias e os 235 meses lunares correspondentes são 6.939,688 dias; isto é, existe um desfasamento de 0,086 dias, ou 2 horas, 3 minutos e 50 segundos (e 4 décimas, já agora).
Cada ano tem um número correspondente a este ciclo, chamado Número Dourado. É calculado efectuando o resto da divisão entre o ano actual e o número 19, e somando 1 ao resultado dessa operação (antigamente, não gostavam nem um bocadinho do zero – daí este mais um). Este ano, por exemplo, o Número Dourado é o 15.
Diferença entre os anos julianos e gregorianos
A diferença entre o calendário juliano (até finais do século XVI, dependendo dos países – alguns vieram quase até ao séc. XX) e gregoriano, ao nível da quantidade de dias, é apenas nos anos de século não bissextos, isto é, nos anos que são divisíveis por 100, mas não por 400. O calendário juliano tinha um ano bissexto de 4 em 4 anos, certinho. O gregoriano também, mas exclui os anos de século, excepto se forem divisíveis por 400. Este cálculo é também chamado Equação Solar.
Diferença entre o calendário juliano e o ciclo metónico
Este cálculo é também chamado Equação Lunar, e calcula o número de dias de desvio do mês lunar a partir do calendário juliano. Este número aumenta 8 vezes a cada 2500 anos.
Epacta
Dia do mês lunar no dia 1 de Janeiro do ano a calcular. O mês lunar decorre entre duas luas novas. Em 2010, a Epacta foi 14, isto é, estava quase lua cheia no dia 1 de Janeiro. O cálculo da Epacta é todo um tratado: assume-se que a lua avança 11 dias de ano para ano dentro do ciclo metónico, e que tem de se levar em linha de conta com a Equação Solar (a subtrair) e com a Equação Lunar (a somar).
Dois ajustes são necessários: em primeiro lugar, uma constante, 20, para acertar o dia lunar; em segundo, duas condições de acerto, se a Epacta for 25 e o Número Dourado for maior do que 11, é preciso acrescentar 1 à Epacta, procedendo-se de igual modo se a Epacta for 24. Como não podia deixar de ser, estas condições destinam-se a acertar a lua com possíveis condições de bissextalidade, no caso, dos anos precedentes.
Então, como calcular a data da Páscoa?
O pseudo-código seguinte baseia-se em todos os conceitos anteriores, e é o mesmo algoritmo, com
algumas correcções, apresentado por Donald E. Knuth em The Art of Computer Programming, Vol. 1
[Addison-Wesley, 1969]. Todas as divisões devem ser consideradas como truncagens, isto é, o resto
é descartado. O símbolo %
representa o resto da divisão.
1Seja ano = ano a calcular;23Seja NumDourado = (ano % 19) + 1;4Seja Século = (ano / 100) + 1; // na realidade, este cálculo de século5 // está errado, visto que o "ano de século"6 // pertence ao século precedente, e não ao7 // seguinte - mas é assim que é preciso8 // para este cálculo da data da Páscoa9Seja EqSolar = ( (3 x Século) / 4) - 12;10Seja EqLunar = ( ( 8 x Século + 5) / 25) - 5;1112Seja Epacta = 11 x NumDourado + EqLunar - EqSolar + 20;13Epacta = Epacta - 30 x (Epacta / 30); // porquê, quando podia ter sido14 // feito com um resto da divisão?15 // porque, para anos muito grandes,16 // existe a possibilidade da Epacta17 // ser negativa, pelo que a18 // multiplicação por um número19 // negativo se impõe nessas condições2021Se ( (Epacta = 25 E NumDourado > 11) OU (Epacta = 24) )22 Epacta = Epacta + 1;2324Seja LuaCheia = 44 - Epacta; // porquê 44? Porque é o suficiente para chegar25 // a Março. São 30 dias para um ciclo lunar26 // completo, mais 14 para chegar à lua cheia2728Se (LuaCheia < 21) // o 21 representa o 21 de Março da data Pascal29 LuaCheia = LuaCheia + 30;3031Seja CorrecçãoDomingo = ( ( 5 x Ano) / 4) - EqSolar - 10;32// mais uma vez, a diferença entre calendários a fazer das suas...3334DiaPáscoa = LuaCheia + 7 - ( (CorrecçãoDomingo + LuaCheia) % 7);35// isto é, na semana subsequente à lua cheia (+7), menos o resto da própria lua36// cheia - porque o Domingo assume-se como o dia 7 da semana, dando resto 0,37// depois dos devidos acertos. No entanto, ainda é possível que este dia seja38// superior a 31, o que quer dizer que a Páscoa passou para Abril39Se (DiaPáscoa > 31)40 DiaPáscoa = DiaPáscoa - 31;41 MêsPáscoa = Abril42Senão43 MêsPáscoa = Março
That's it. Parece mais complicado do que, na realidade, é.