根据史料天象求记录时间

有了恒星位置的计算方法,就可以反求恒星在某位置时的时间。

star模块即恒星位置计算,参见https://blog.csdn.net/weixin_42763614/article/details/83388789

反求时间即利用插值法逆求。

from star import *

def interpolation(star, angle, t2): # 插值计算,t为儒略世纪数
	if angle == 0: angle = 360
	t1 = t2 - 5
	t3 = t2 + 5
	n0 = 0 # 初值
	appPlace(star, t1)
	ra1 = star.ra % 360 * 3600 # 改为角秒计算以获得较精确结果
	appPlace(star, t2)
	ra2 = star.ra % 360 * 3600
	appPlace(star, t3)
	ra3 = star.ra % 360 * 3600
	a = ra2 - ra1
	b = ra3 - ra2
	c = ra1 + ra3 - 2*ra2
	while True:
		n = -2 * (ra2 - angle*3600) / (a + b + c * n0)
		if abs(n - n0) < 0.000001: break
		n0 = n
		i += 1
	return t2date(t2+n*(t2-t1))

以下举例史料中典型的天象时间问题,即《尧典》四仲中星和《汉书·律历志》二十八宿位置 。

《尧典》四仲中星时间

for star in szzx:
	# 插值估值
	t2 = -35 # 约公元前1500年
	i = szzx.index(star) + 1
	date = iteration(star, 90*i%360, t2)
	JD = ephem.julian_date(date)
	t = (JD - 2451545) / 36525
	appPlace(star, t)
	d = ephem.Date(date)
	year = d.tuple()  # 获得年份,由于目视误差,具体时刻不具有参考价值
	print(star.name, year[0], appPlace(star, t))

插值计算的精度不高,寻找好的差值表范围可以提高精度,但也可以使用迭代法重复计算,获得较高精度。

计算结果:

星宿一    -2155年    (赤经:90.00042309673259)
心宿二    -2931年    (赤经:179.90138264459966)
虚宿一    -1859年    (赤经:270.0102335767864)
昴宿一    -2173年    (赤经:359.99930754645504)

该值对比《中国古代天体测量学及天文仪器》的结果(见19页),发现书中以心宿二赤经为180度时在公元前2125年,与计算值相差甚大,根据其所提供的赤经表(与本程序计算结果误差在0.1°以内),宜在[前2500,前3000]年间,应为排印错误。

这是以固定太阳时角90°计算的《尧典》四仲中星时间,未考虑不同日期的黄昏时间不同,误差可达上前年,上古黄昏时间不定,此计算值为《尧典》天象记录的上限。

《汉书》二十八宿时间

 《律历志》给出的二十四节气的入宿度,只有冬至点是实测得到的,其他是根据简单内插法求算的。因此计算《汉志》所载的二十八宿位置测定的时间,也只需计算冬至点在牛初度时的时间。

此时即是求牛宿距星在赤经为270度的时间。估值在殷周到公元元年(约《世经》成书时间),仅需使用iteration()函数。

print(iteration(niu, 270,-25))

求得结果约在公元前451年左右,此时牛宿距星的赤经为270.00度。则冬至在牛宿初度,即为牛宿0-1度间,应在公元前521年至公元前451年之间。考虑到测量误差,可能更晚。

另可利用ephem模块求算冬至与天正朔在同一天的时间(参见:https://blog.csdn.net/weixin_42763614/article/details/83189459),即公元前427年年前朔旦冬至。二者时间相近,此即殷历己酉蔀蔀首,或即四分历创制时的真实时间和天象记录。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值