手动计算昼夜平分线和至高点时,火星15分钟差异

时间:2019-01-16 00:16:00

标签: python datetime pyephem

以下代码尝试手动计算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)

2 个答案:

答案 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