今天介绍的主要是赤经赤纬相关内容,里面用到的csv文件和data文件课程官网没提供链接,各位只能去官网提供的平台练习,或者要是自己有类似的数据文件也可以拿来练习。第一节用到的fit文件已经从官网上提供的链接上下载下来了,将附在第一节的评论里。
本节最后寻找对应体的代码比较长,我自己写的和答案给的不一样,我把它们都放了出来供大家参考参考。笔记可能写的不全面,要是看不懂推荐大家去coursera上看完整的课程,也欢迎在评论区提问。
匹配不同波段的同一个星
样本:
AT20G Bright Source Sample (BSS) catalogue
SuperCOsmOS all-sky galaxy catalogue
地坪坐标:与观测的时间或地点有关
赤道坐标:赤道坐标相对于天球是固定的,因此其位置与观测的时间或地点无关。
春分点是天赤道与黄道的交点,春分点为经度开始的地方
赤经(right ascension RA):一圈24小时,用HMS(hours-minutes-seconds)标记,1小时等于15度,1小时又可分为60分钟,1分钟可分为60秒
赤纬(declination dec ):从天赤道到该点的角度,向北(负值表示向南)。用DMS(degree-minutes-seconds)标记,一圈360度,每度有60角分,每角分有60角秒
岁差:春分点所对应的位置会发生微小变化
将赤经HMS转变为十进制度数
def hms2dec(h,m,s):
if h<0:
hmsd=-15*(-h+m/60+s/3600)
else:
hmsd=15*(h+m/60+s/3600)
return hmsd
将赤纬DMS转变为度数
def dms2dec(d,m,s):
if d<0:
dmsd=-1*(-d+m/60+s/3600)
else:
dmsd=d+m/60+s/3600
return dmsd
# You can use this to test your function.
# Any code inside this `if` statement will be ignored by the automarker.
if __name__ == '__main__':
# The first example from the question
print(hms2dec(23, 12, 6))
# The second example from the question
print(dms2dec(22, 57, 18))
# The third example from the question
print(dms2dec(-66, 5, 5.1))
由赤经赤纬计算两颗星的角距离:
(α1,δ1)分别是赤经和赤纬,单位为度
大多数语言和库(包括Python和NumPy)中的三角函数以弧度为单位,但是我们正在使用的是角度。
角度弧度转换:
a_rad = np.radians(a_deg)
a_deg = np.degrees(a_rad)
完整程序,已知两个星的角度坐标(ra1, dec1, ra2, dec2)
import numpy as np
def angular_dist(RA1, dec1, RA2, dec2):
# Convert to radians将角度变为弧度
r1 = np.radians(RA1)
d1 = np.radians(dec1)
r2 = np.radians(RA2)
d2 = np.radians(dec2)
a = np.sin(np.abs(d1 - d2)/2)**2
b = np.cos(d1)*np.cos(d2)*np.sin(np.abs(r1 - r2)/2)**2
angle = 2*np.arcsin(np.sqrt(a + b))
# Convert back to degrees
return np.degrees(angle)