La Librería RMoon
- fjroar
- 4 jun 2023
- 5 Min. de lectura
Dejando un poco de lado el ML publico ahora este post sobre la Luna y sobre una librería de funciones que estoy creando en R sobre un tema excitante como estudio de cuestiones relacionadas con nuestro satélite, muy fácil de observar y de fotografiar (y así aprovecho para mostraros una de mis fotos hechas desde la puerta de mi casa en una conjunción Luna - Marte):

A pesar, de la “cercanía”, nuestro satélite es a día de hoy uno de los objetos más difíciles de dominar bajo el conocimiento humano y la razón se haya en que es un satélite demasiado grande para el planeta alrededor del que gira. Así pues, un problema que debería ser sencillo por mera mecánica celeste como prever la posición de la Luna en un instante del futuro de modo exacto, obliga a realizar una programación fina que hace uso de 7 – 9 cifras decimales y donde cualquier imprecisión en cualquiera de los pasos intermedios provoca una rápida propagación de errores.
La librería RMoon que estoy completando, va a tratar de recoger una serie de algoritmos descritos que proceden del libro Astronomical Algorithms 2ª Ed publicado en 1.991, cuyo autor, el astrónomo belga Jean Meeus, compila una serie de interesantes algoritmos, no sólo enfocados a la Luna sino a todo el sistema solar, según cuenta él, por la frustraciones que encontraba en los cálculos de posiciones celestes en general, que aún por los 80 (y como veremos también ahora), no eran del todo precisos. Así pues, el autor pone a disposición del público algoritmos de un modo bastante simplificado (dentro de la complejidad que tienen), y con desviaciones de unos pocos segundos de arco con respecto a la realidad. De hecho, a día de hoy, se puede ver que para un día como es hoy, 4 de Junio de 2023, a las 23h (en España) una conocida aplicación de aficionado como Stellarium, ofrece un montón de datos sobre la luna, entre ellos se destaca la distancia entre los centros de la Tierra y la Luna que resulta ser de 367.252’49 Km tal y como se observa en esta salida:

Este dato contrasta con una aplicación, ya con algoritmos más precisos como es MoonCalc que para el mismo caso ofrece como distancia, el valor de 367.641Km tal y como se puede observar en:

Una diferencia de unos 400Km, que suele ser mayor conforme se considera momentos más alejados en el tiempo.
En este sentido he tomado MoonCalc como referencia y vamos a ver el valor que se obtendría siguiendo los pasos dados por las funciones que pongo a disposición del interesado justo para hoy día 4 de Junio a las 23h, según el Algoritmo del capítulo 46 del mencionado libro.
Antes de comenzar, para quien desee instalarse esta la librería RMoon, debe previamente de disponer de la librería devtools con una versión de R actual y posteriormente teclear:
library(devtools)
install_github("FJROAR/RMoon", force = T)
Para el/la interesado/a recomiendo que cada mes o 2 meses elimine la librería con remove.packages("RMoon") y vuelva a ejecutar las instrucciones anteriores donde iré incorporando nuevas funcionalidades y corrigiendo bugs que vaya observando.
Una vez hecho eso, vamos a estimar la posición de la luna para hoy 4 de Junio de 2023 a las 23h. En primer lugar, debe tenerse en cuenta que al estar en el sistema CET+2, la primera función requiere que se pase el dato descontando dos horas. Dicho lo cual se dan los siguientes pasos:
(1) Determinación del siglo juliano (considerando hasta el minuto) mediante la
ejecución de:
options(digits=11)
options(scipen=999)
Julday <- JulianDay(2023, 6, 4, 21, 0, 0)[[3]]
Esta función genera una lista de vectores (todas las funciones aquí comentadas
permiten la entrada de lista de vectores y generarán o vectores o listas de estos para el
análisis de datos tabulares) interesando el tercero de ellos que es el ciclo juliano igual a
0’232423340178
(2) A partir de este dato, se generan 9 argumentos básicos lunares que dependen
exclusivamente de dicho valor mediante ecuaciones de hasta grado 4, dichos
elementos serán utilizados para tener en cuenta las perturbaciones de otros elementos
del sistema solar como Venus y el propio Júpiter:
- La longitud media lunar referida al equinoccio medio del día considerado: L
- Su elongación media: D
- La anomalía media solar: M
- La anomalía media Lunar: M’
- Distancia media de la luna desde su nodo ascendente: F
- 3 argumentos adicionales que A1, A2, A3, que tienen que ver con las influencias
de los citados planetas y el hecho en sí de que la tierra está achatada
- Finalmente, un coeficiente E de excentricidad orbital (que decrece con el tiempo),
que va a permitir realizar un ajuste de la intensidad de las perturbaciones
anteriormente comentadas
Nota: Si la luna fuese un objeto mucho más pequeño, muchos de los coeficientes
citados y de lo que viene a continuación no serían necesarios
Todos estos elementos se invocarían en la siguiente lista (de vectores, para que se
pueda trabajar de modo vectorizado si se desea):
Moonbasics <- MoonBasicElements(Julday)
Generándose los siguientes valores en concreto:
L = 267’329400141 D = 310’877995896 M = 352’729499819
M’ = 194’28034595 F = 235’32422479 A1 = 2’1357098289
A2 = 149’70911125 A3 = 150’63343979 E = 0’99941026276
(3) Con los anteriores resultados, la función que permite derivar una lista de vectores
interesantes: como son el vector de longitud geocéntrica de la Luna en ese momento,
junto con el de distancia de los centros Luna – Tierra, esto se lograría del siguiente
modo:
MoonLongdist <- MoonGeoLongDist(Moonbasics[[1]], Moonbasics[[2]],
Moonbasics[[3]], Moonbasics[[4]], Moonbasics[[5]],
Moonbasics[[6]], Moonbasics[[7]], Moonbasics[[9]])
La función anterior ofrece 3 vectores interesantes de los cuáles se usan los 2 siguientes:
La longitud geocéntrica en grados = 263.64157018
La distancia Tierra - Luna = 367.643’22848 Km
(4) Finalmente cabe obtener el valor de la latitud geocéntrica (o vector
correspondiente según el dato sea único o múltiple), donde influyen prácticamente los
mismos elementos que para el caso de la longitud y la distancia anteriores. Esto se
obtiene del siguiente modo:
MoonLat <- MoonGeoLongDist(Moonbasics[[1]], Moonbasics[[2]],
Moonbasics[[3]], Moonbasics[[4]], Moonbasics[[5]],
Moonbasics[[6]], Moonbasics[[7]], Moonbasics[[9]])
Llegando a que: la latitud geocéntrica en grados = -3.961940254
Cabe destacar el gran parecido a nivel de distancia que existe entre el dato dado por MoonCalc igual a 367.641Km con una diferencia de apenas 2 Km.
Por último, cabe indicar que en el caso de Stellarium, se generan unas coordenadas de Ascensión Recta – Declinación que pueden compararse con los resultados de estas funciones:
Stellarium RMoon
AR (J2000) 17h 32m 56'96s 17h 31m 27s
Declinación -27º 59m 41'2s -27º 14m 24s
Para llegar con RMoon a los anteriores datos deben añadirse las líneas:
Ecliptica <- TrueObliqutiyEcliptic(Julday)
EcliptNut <- Ecliptica + NutationLong(Julday)
Coordenadas <- Ecliptic2Equatorial(MoonLongdist[[1]],
MoonLat,
EcliptNut)
Que permiten convertir las coordenadas eclípticas anteriores en ecuatoriales, teniendo en cuenta los movimientos del eje terrestre o nutación entre otros efectos.
Finalmente espero de aquí a las próximas Jornadas de Usuarios de R, poder disponer de un elenco importante de funciones que nos permita conocer un poco más de nuestro querido e interesantísimo satélite.
Comentários