Com serà la Lluna una data determinada?

moonphasenorth

L’altre dia escrivia com determinar mentalment la data de Pasqua de qualsevol any, que demana saber quan és la Lluna Plena immediatament posterior al 21 de març. Al mateix web que s’esmentava un senzill mètode per trobar la Pasqua, s’hi presenta també la determinació de la fase de la Lluna per a una data qualsevol.

Abans de res, cal donar un codi al dia, al mes i a l’any. Per al dia, és senzillament el seu valor numèric. Per al més, també és la posició dins de l’any (1-12) excepte per a gener (3) i febrer (4).

El millor és sumar els codis de dia i mes, i sumar-hi 30, per estalviar-se quantitats negatives més endavant.

Per al codi del Segle, si és el XXI, se n’hi resta 8. Si és el segle XX, se n’hi resta 4.

El codi de l’any no és pas tant fàcil. Primer es troba la resta per 19, és a dir, mod(any,19) (on any només té 2 xifres). Llavors, si és més gran de 9, se li’n resten 19.  El signe es guarda, i s’agafa el valor absolut. Llavors es multiplica per 11, i es pren el mòdul 30. Si el signe era negatiu, es canvia de signe el resultat.

Es sumen els 4 codis de dia, de mes, de segle i d’any… s’agfa mòdul 30… i en resulta una data que és la fase de la lluna, des de lluna nova fins a plena i tornant a nova.

Algoritme amb pseudocodi:

  • codi.dia = número del dia.
  • codi.mes = ordre del mes dins de l’any, excepte per a gener (3) i febrer (4)
  • codi.segle = -4 (S XX) o -8 (S XXI).
  • Sumar-hi 30: codi.temp=codi.dia + codi.mes + codi.segle + 30
  • codi.any = mod(xy,19)
  • Si(codi.any :> 9) codi.any<-codi.any-19
  • s = signe (codi.any) (1 o -1)
  • codi.any.abs = abs(codi.any)
  • codi.any.def = s * mod(codi.any.abs *11, 30)
  • suma = (codi.temp + codi.any.def,30)
  • si (suma=0,1  o suma=29) és lluna nova
  • si (suma=14,15,16) és lluna plena
  • si (suma=7-8) és quart creixent
  • si (suma=22-23) és quart menguant
  • si una altra suma, cal referir-se de forma relativa a les fases de la lluna, en futur o en passat

Exemple: avui 27 de desembre de 2016

  • Codi del dia: 27
  • Codi del mes: 12
  • Codi del segle: -8
  • codi.temp= 31 (podem fer servir també 31+30)=61
  • codi.any=mod(16,19)=16 i després -3 per haver-hi restat 19 en ser més gran de 9
  • codi.any.abs = 3
  • s=-1
  • codi.any.def = -1 * mod (3 *11, 30) = -3
  • suma = 61 -3 = 58 o sigui 28 en ser mod(58,30)

Llavors, gairebé és lluna nova: falten 2 dies. El càlcul és això el que dóna, i quadra amb el fet que la lluna nova és a primera hora del matí del 29/12/2016. Aquest mètode no és totalment exacte, però proporciona una estimació molt bona.

Es pot comprovar a http://www.wolframalpha.com/input/?i=27+december+2016

Nota: per a l’any 2017, el codi és zero, i els càlculs són molt i molt senzills. Només cal sumar el codi del mes i el dia del més. Se’n resten 30 si el resultant és superior a aquesta quantitat, i ja està – el número que surt és l’edat de la lluna respecte de la lluna nova.