以下代码尝试手动计算2019年的第一个春分。 它返回
('d1 =',2019/3/20 21:43:48) ('d2 =',2019/3/20 21:43:49) 2019/3/20 21:58:31
,即与实际春分点相差15分钟。这正常吗? 我忘记了什么吗?该问题也与胶乳同时出现,如果我使用了集成牛顿法,也会出现问题。可能与计算时代有关吗?
谢谢
丹尼斯
import ephem
sun = ephem.Sun()
# computing Spring equinox:
d1 = ephem.Date('2019/03/15')
d2 = ephem.Date('2019/03/25')
a=ephem.degrees('180.0')
for i in range(20):
#middle date
d3=(d1+d2)/2
sun.compute(d3)
if sun.hlon>a:
d2=d3
else:
d1=d3
print("d1=",ephem.Date(d1))
print("d2=",ephem.Date(d2))
d1 = ephem.next_equinox('2019')
print(d1)
答案 0 :(得分:1)
看起来差异是因为PyEphem的基础天文学库始终测量相对于J2000坐标的日心经度,到您要问的日期,它与用于定义春分点的日期坐标明显不同。
尝试将其作为您的计算步骤:
sun.compute(d3, epoch=d3)
,然后查找sun.ra
何时为零度;结果应该是春分点。我将看到有关更新PyEphem快速参考的内容,以注意到日心中心坐标似乎并没有注意epoch=
参数。
答案 1 :(得分:0)
非常感谢,Brandon,这非常有帮助,我终于得到了正确的价值!实际上,看来春分点是由等于0h,6h,12h,18h的右上扬定义的,而不是日心经度为0、90、180、270所定义的。您运行下面的代码。但这引出了另一个问题。维基百科页面https://en.wikipedia.org/wiki/Equinox指出,春分由经度为0或180定义。那么谁是正确的?
import ephem
sun = ephem.Sun()
d1 = ephem.Date('2019/03/15')
d2 = ephem.Date('2019/03/25')
a=ephem.degrees('0.0') # or 90, or 180, or 270
def spring_equinox(date):
sun.compute(date)
return ephem.degrees(sun.ra - a).znorm
d = ephem.newton(spring_equinox, d1, d2)
print(ephem.Date(d))
print sun.ra
print sun.hlon