La Librería RMoon: Prediciendo eclipses
- fjroar
- 24 mar 2024
- 5 Min. de lectura
Cansado un poco de toda esta vorágine donde a todo se le llama Inteligencia Artificial con el apelativo guay de generativa, ... vuelvo a mis orígenes para lo cual estoy comenzando a trabajar una librería para uso astronómico gracias a los conocimientos que he podido ir adquiriendo como socio de la Agrupación Astronómica de Madrid y en especial al área del grupo de la Luna:
Así que, aprovechando que mañana 25 – Abril – 2024 es Lunes Santo y curiosamente, para la primera Luna llena tras el equinoccio de primavera, tenemos simultáneamente un eclipse prenumbral (que no podrá verse muy bien en España y además habría que madrugar …), aprovecho para presentaros algunas evoluciones que espero ir mejorando sobre la librería que estoy construyendo con R con funciones para el análisis y predicción de los principales eventos lunares.
Recuerdo que su instalación para quien tenga Rstudio y Windows resulta muy sencilla y basta tan sólo teclear:
library(devtools)
install_github("FJROAR/RMoon", force = T)
En concreto la función que he introducido es la denominada: MoonEclipses() y que lo que hace es que dada una fecha, determina cuál es la siguiente Luna Llena y si habrá o no eclipse de Luna, así pues si se teclea:
options(digits=11)
options(scipen=999)
library(Rmoon)
MoonEclipses("2024-03-24")
Os dará una serie de salidas que detallo más adelante, aunque están explicadas en la ayuda de la función.
No obstante, antes de empezar si alguno se instaló la librería con anterioridad, recomiendo que la actualice (y que lo haga de vez en cuando ya que la voy mejorando y corrigiendo errores que me voy encontrando), por lo que debería dar los siguientes pasos:
(1) remove.packages("RMoon")
(2) Volver a aplicar a ejecutar:
library(devtools)
install_github(“FJROAR/RMoon”, force = T)
Pues bien, aunque hay muchas cuestiones a tratar en esto de los Eclipses, me voy a centrar en una parte de la función MoonEclipses() basada por supuesto en los algortimos del astrónomo Jean Meeus. En concreto, para saber si una determinada fecha en el futuro será o no eclipse, hay que medir si la próxima Luna llena esté suficientemente cercana a uno de sus nodos y para esto, dentro del algoritmo destaco la siguiente fórmula que adapté a R y que explico aquí a los pocos que hayáis llegado a leer hasta este punto y que no os hayáis cansado, ya que como veis no hablo de Machine Learning ni de flipadas por el estilo que sé que os gusta más:
Eclipse <- abs(F2 %% 360)
Eclipse <- min(abs(Eclipse - 0), abs(Eclipse - 180), abs(Eclipse - 360))
isEclipse[i] <- ifelse(Eclipse < 13.9, "Yes", "No")
isEclipse[i] <- ifelse((Eclipse >= 13.9 & Eclipse <= 21), "Indetermined", isEclipse[i])
Como puede observarse hay una franja de imprecisión, donde arroja el mensaje Indetermined, lo que obliga ver algunos de los parámetros que ofrece la función para saber si efectivamente ese día habrá o no eclipse de Luna.
Así pues si se ejecuta (tras instalar y llamar a la librería) MoonEclipses("2024-03-24") se obtiene lo siguiente:
Cuyo significado paso a describir:
[[1]] Día juliano en el que tendrá lugar el eclipse
[[2]] Fecha y hora
[[3]] ¿Será eclipse? Yes, No, Indetermined
[[4]] Nodo más cercano
[[5]] Gamma o distancia mínima desde el centro de la luna al eje de la sombra terrestre en unidades del radio ecuatorial terrestre
[[6]] Rho o radio de la penumbra si ésta tuviera lugar
[[7]] Sigma o radio de la umbra si ésta tuviera lugar
[[8]] Magnitud de la umbra (si fuese negativo, significa que no habría eclipse en la umbra)
[[9]] Magnitud de la penumbra
[[10]] Semi-duración de la umbra parcial en minutos si tuviese lugar
[[11]] Semi-duración de la umbra en minutos en minutos si tuviese lugar
[[12]] Semi-duración de la penumbra en minutos si tuviese lugar
Pero ¿Qué ocurriría si se ejecutase MoonEclipses("2024-03-26")? En este caso, la salida sería bastante diferente, ya que se indicaría cuando sería la próxima Luna Llena de Abril pero la salida [[3]] aparece como Indeterminated tal y como se puede observar:
En este caso obsérverse que no habrá eclipse porque de hecho, no hay semi-duraciones [[10]], [[11]] y [[12]] y las magnitudes de las umbras y pre-umbras son negativas [[8]] – [[9]], sin embargo, para tener una idea de la complejidad del problema, cabe considerar el eclipse de Junio de 1973 (que propone Jean Meeus en su libro), que podemos analizar con esta sencilla función con tan sólo escribir MoonEclipses("1973-06-01") obteniéndose:
Con lo que aquí sí se puede considerar eclipse, de hecho, sería sólo de tipo penumbral y por tanto tiene magnitud positiva y semiduración de la penumbra como se observa en [[9]] y [[12]].
Finalmente y para no extenderme demasiado algunas anotaciones resumen sombre esta entrega de la librería RMoon:
Actualmente no se puede habla de eclipses sin hacer referencia a la web de Mr. Eclipse que se pueden encontrar en: https://www.mreclipse.com/Special/LEnext.html Se puede comprobar que muchos de los términos que extrae este programa se corresponde con los resultados que allí se publica con un alto grado de similitud, así pues para mañana, Mr Eclipse arroja los siguientes resultados (con apenas algunos segundos de desviación de la hora prevista:
Las funciones construidas están vectorizadas, de modo que a diferencia de otras implementaciones, si se introduce un vector, RMoon devolverá o un vector o una lista de vectores.
Salvo que se tome material muy especializado, se frecuente ver en muchas web e incluso en aparatos de seguimiento actuales, ciertos errores que sin embargo, a nivel de los algoritmos de esta librería, quedan bastante corregidos.
Si se ha notado más arriba, se exige a R el uso de una elevada precisión numérica, es quizás este uno de los aspectos más apasionantes que me han inducido a hacer este trabajo y es que no solamente es interesante por los resultados, si no por el cuidado y el “mimo” que hay que poner en la programación para no caer en problemas de propagación de errores.
Por si alguien quiere observar el eclipse desde España serán las 8.14h y por tanto habrá demasiada luz diurna, dicho eclipse empieza como 2 horas antes aproximadamente por lo que hay que madrugar como indiqué al principio, así que entre eso y la de nubes que se nos viene encima, como que no lo veo claro.
Y ya por acabar, claramente hay algoritmos más precisos y mejores que incluso el propio Meeus reconoce sin embargo, las funciones aquí utilizadas resultan bastante asequibles y sencillas (para lo que hay) y el grado de aproximación es bastante elevado. Por el momento, parece funcionar bien en el rango de 1951 a 2050 que indica el Meeus y personalmente creo que se puede ir bastante atrás en el tiempo pero si se baja de 1600, se necesitaría mejorar el algoritmo considerado, por tanto cabe otorgarle una validez desde 1900 hasta el 2100.
Comentarios