Hora sideral (programa en basic)



HORA SIDERAL

Si solo dispusieramos de unas tablas de horas siderales, podriamos calcular la hora sideral mediante una interpolación lineal entre 2 valores de dos dias consecutivos dados por esas tablas. Ahora lo haremos de forma directa a partir de una ecuación polinomica que nos da un resultado más exacto que el calculado en la forma anterior y que ademas tiene la ventaja que puede ser introducido en calculos informáticos sin necesidad de recurrir a tablas.
Conocida la fecha en forma de Dia Juliano (DJ en la formula) calcularemos la hora sideral en la forma siguiente:
A) primero calcularemos la ecuación de los equinocios (resultado en segundos):

EcEq = [-1.05 *sen (344 -0.052954*DJ) -0.08 *sen(123 + 1.9713*DJ)]


B) El valor dado por la fórmula anterior lo emplearemos en la fórmula siguiente que nos da el valor de la hora sideral para cualquier dia a las 0 Horas de Greenwich.





Hs = 6.745117 + 0.065709824 * (DJ - 2450450) + EcEq
..................................................................


C) Estas ecuaciones son muy engorrosas sin el uso de ordenador, por lo que daremos un programa escrito en Basic para su calculo. (Debe copiarse a continuacion del programa el calculo del Dia Juliano, pues funciona con los datos (Datas) y variables ya incluidos antes)



Para poder realizar el calculo lo descomponemos en sus componentes ya que las formulas trigonometricas deben estar dentro de unos rangos aceptables:

cc# = 344 - 0.052954*dj#

Llevamos el valor de cc a a un valor comprendido entre 0 y 360 para poder calcular su seno:
DO
IF cc#<0>
IF cc#>=0 AND cc#<360>
LOOP
Y hacemos lo mismo con qq:
qq# = 123 + 1.9713*dj#
DO
IF qq#>=360 THEN qq# = qq# -360
IF qq#>=0 AND qq#<360 style="color: rgb(204, 0, 0);" size="2">Y ya tenemos la ecuacion de los equinocios:

EcEq = c# - q#

PRINT " Ecuacion de los equinocios (EcEq) = ";EcEq

Con este valor ya podemos calcular la hora sideral directamente con la segunda formula dada antes:

tsvl = 6.745117 + 0.065709824*(dj# - 2450450) + EcEq/3600
hs = tsvl

Ponemos la hora sideral dentro de un rango entre 0 y 24 horas:
DO
IF hs<0 hs ="hs">24 then hs=hs-24
IF hs>=0 and hs<24 style="color: rgb(204, 0, 0);" size="2">Por ultimo ponemos la hora sideral en formato de horas:minutos:segundos

h=INT(hs)
mi = (hs-INT(hs))*60
m=INT(mi)
se=(mi - m)*60
s = INT(se)
PRINT "hora sideral (hs) = ";h;" : ";m;" : ";s
end