Lembrado por esta posta, e continuando com a série das datas, apresento-vos hoje o cálculo do dia da Páscoa. Este cálculo é muito importante nas civilizações de origem 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 6939,602 dias e os 235 meses lunares correspondentes são 6939,688 dias; isto é, existe um desfasamento de 0,086 dias, ou 2 horas, 3 minutos e 50 segundos (e 4 décimas, já agora). Este ciclo indica-nos que cada ano têm um número correspondente a este ciclo, chamado o 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.

Seja ano = ano a calcular;

Seja NumDourado = (ano % 19) + 1;
Seja Século = (ano / 100) + 1;  // na realidade, este cálculo de século
                                // está errado, visto que o "ano de século"
                                // pertence ao século precedente, e não ao
                                // seguinte - mas é assim que é preciso
                                // para este cálculo da data da Páscoa
Seja EqSolar = ( (3 x Século) / 4) - 12;
Seja EqLunar = ( ( 8 x Século + 5) / 25) - 5;

Seja Epacta = 11 x NumDourado + EqLunar - EqSolar + 20;
Epacta = Epacta - 30 x (Epacta / 30);   // porquê, quando podia ter sido
                                        // feito com um resto da divisão?
                                        // porque, para anos muito grandes,
                                        // existe a possibilidade da Epacta
                                        // ser negativa, pelo que a
                                        // multiplicação por um número
                                        // negativo se impõe nessas condições

Se ( (Epacta = 25 E NumDourado > 11) OU (Epacta = 24) )
    Epacta = Epacta + 1;

Seja LuaCheia = 44 - Epacta;    // porquê 44? Porque é o suficiente para chegar
                                // a Março. São 30 dias para um ciclo lunar
                                // completo, mais 14 para chegar à lua cheia

Se (LuaCheia < 21) // o 21 representa o 21 de Março da data Pascal
    LuaCheia = LuaCheia + 30;

Seja CorrecçãoDomingo = ( ( 5 x Ano) / 4) - EqSolar - 10;
// mais uma vez, a diferença entre calendários a fazer das suas...

DiaPáscoa = LuaCheia + 7 - ( (CorrecçãoDomingo + LuaCheia) % 7);
// isto é, na semana subsequente à lua cheia (+7), menos o resto da própria lua
// cheia - porque o Domingo assume-se como o dia 7 da semana, dando resto 0,
// depois dos devidos acertos. No entanto, ainda é possível que este dia seja
// superior a 31, o que quer dizer que a Páscoa passou para Abril
Se (DiaPáscoa > 31)
    DiaPáscoa = DiaPáscoa - 31;
    MêsPáscoa = Abril
Senão
    MêsPáscoa = Março


That’s it. Parece mais complicado do que, na realidade, é.

Partilhar no Sapo Links Partilhar no del.icio.us Partilhar no Digg Partilhar no Twitter Partilhar no StumbleUpon Partilhar no MySpace Partilhar no Facebook

Comentários Deixar um comentário

 Categorias
 Arquivo
 Projectos em Destaque
 Últimas Postas no Blog
 Últimos Comentários do Blog