Jorge Martinez

Aerospace Engineer and Senior Software Developer


Astronomía e instrumentación clásica - Actividad Guiada II

Jorge Martínez Garrido

June 18, 2023

astronomy astrophysics coordinates


El presente informe recoge las soluciones a los ejercicios propuestos por la actividad guiada II de la asignatura Astronomía e instrumentación clásica.

Soluciones a los ejercicios propuestos

Esta sección recoge los resultados y soluciones a los ejercicios propuestos por la actividad.

Para resolver los ejercicios se ha utilizado el lenguaje de programacion Python. Todo el codigo generado se incluye en cada apartado del ejercicio.

from astropy.coordinates import Angle
import astropy.units as u
import numpy as np


def angle_to_hms(angle):
    angle = Angle(angle)
    hms = angle.hms
    return f"{int(hms.h)}h {int(hms.m)}min {hms.s:.0f}s"

def repr_angle(angle):
    return f"{angle.to(u.rad):.2f} = {angle.to(u.deg):.2f} = {angle_to_hms(angle)}"

def from_Ah_to_Hdelta(A, h, latitude):
    M = np.arctan(np.tan(np.pi / 2 * u.rad - h) * np.cos(A))
    
    latitude_minus_M = latitude - M
    
    H_raw = np.arctan((np.tan(A) * np.sin(M)) / np.cos(latitude_minus_M))
    if A < 180 * u.deg:
        H = H_raw + (360 * u.deg if H_raw < 0 * u.deg else 0 * u.deg)
    else:
        H = H_raw - (360 * u.deg if H_raw > 180 * u.deg else 0 * u.deg)

    delta = np.arctan(np.tan(latitude_minus_M) * np.cos(H))
    
    return H, delta


def from_Hdelta_to_absolute(H, delta, theta):
    return theta - H, delta

Ejercicio 1 - Solución

Calcular las coordenadas ecuatoriales absolutas de un astro que a las 12h 09m 09s de tiempo sidéreo tiene unas coordenadas horizontales de a = 153◦ 31′ 02′′ y h = 67◦ 50′ 56′′. Dato: φ = −40◦ 50′ 30′′.

Conocidas la siguientes relaciones, es posible calcular el valor de las coordenadas anteriores en coordenadas ecuatoriales absolutas:

$$ \tan{(M)} = \tan{(90 - h)} \cdot \cos{(A)} $$

$$ \tan{(H)} = \frac{\tan{(A)} \cdot \sin{(M)}}{\cos{(\varphi - M)}} $$

$$ \tan{(\delta)} = \tan{(\varphi - M)} \cdot \cos{(H)} $$

# Initial data
A = (153 + 31/60 + 2/3600) * u.deg
h = (67 + 50/60 + 56/3600) * u.deg
latitude = (-40 + 50/60 + 30/3600) * u.deg
theta = (12 + 9/60 + 9/3600) * 15 * u.deg

# Solve from local to absolute
H, delta = from_Ah_to_Hdelta(A, h, latitude)
alpha, delta = from_Hdelta_to_absolute(H, delta, theta)

print(f"Ascensión recta = {repr_angle(alpha)}")
print(f"Declinación = {repr_angle(delta)}")
Ascensión recta = 3.00 rad = 172.05 deg = 11h 28min 13s
Declinación = -0.33 rad = -18.85 deg = -1h -15min -25s

Ejercicio 2 - Solución

Determinar los acimutes y horas sidéreas para poder ver la salida y puesta de la Luna en la ciudad de Valencia el día en que sus coordenadas absolutas son α = 3h28m50s y δ = 7◦26′2′′. Dato: φ = 39◦28′30′′.

Aunque sabemos que la Luna no es un astro circumpolar, podemos realizar una comprobación para cercionarnos de los valores para los datos proporcionados. Recordamos que existe orto y ocaso si se cumple que:

$$ |\delta| < 90 - |\varphi| $$

alpha = (3 + 28/60 + 50/3600) * 15 * u.deg
delta = (7 + 26/60 + 2/3600) * u.deg
latitude = (39 + 28/60 + 30/3600) * u.deg

Comprobamos si existe orto y ocaso:

is_valid_data = np.abs(delta) < 90 * u.deg - np.abs(latitude)
print(f"Existe orto y ocaso: {is_valid_data}")
Existe orto y ocaso: True

Calculamos los valores de A y H para el orto y el ocaso de la Luna. Aplicamos las siguientes relaciones:

$$ \cos{(A)} = -\frac{\sin{(\delta)}}{\cos{(\varphi)}} $$

Dado que $\delta$ y $\varphi$ son positivas, las posibles soluciones de la ecuación anterior residen en el segundo y tercer cuadrante del círculo trigonométrico:

A_1 = np.arccos(-np.sin(delta) / np.cos(latitude))
A_2 = 360 *u.deg - A_1

print(f"Acimut orto = {repr_angle(A_1)}")
print(f"Acimut ocaso = {repr_angle(A_2)}")
Acimut orto = 1.74 rad = 99.65 deg = 6h 38min 36s
Acimut ocaso = 4.54 rad = 260.35 deg = 17h 21min 24s

Para los valores de H, podemos aplicar la relación:

$$ \cos{(H)} = -\tan{(\varphi)}\tan{(\delta)} $$

H_1 = np.arccos(-np.tan(latitude) * np.tan(delta))
H_2 = 360 * u.deg - H_1

print(f"Hora sidérea orto = {repr_angle(H_1)}")
print(f"Hora sidérea ocaso = {repr_angle(H_2)}")
Hora sidérea orto = 1.68 rad = 96.17 deg = 6h 24min 41s
Hora sidérea ocaso = 4.60 rad = 263.83 deg = 17h 35min 19s