PyEphem:至日和春分的日期及其在较长时间尺度上的有效性

Ren*_*ens 5 python pyephem skyfield

我的问题是 PyEphem 为至日和分点的日期以及太阳几何提供准确结果的时间跨度是多少。

到目前为止,我在 GitHub https://github.com/brandon-rhodes/pyephem/issues/61上这篇非常翔实的帖子中发现了 BC 9998-03-20 到 AD 9999-12-31 的限制 以及结果的总体指示在当前任一地点移动超过 +/- 20,000 年时变得不稳定。

我想澄清这一点,因为我试图在更长的时间内获得太阳的位置 - 通常可以追溯到 10,000 年 BP - 以便计算来自太阳在给定的高度和方位角的入射太阳辐射地点。PyEphem 似乎提供了一个很好的替代方案,例如 Berger, 1978 (J. Atmosph. Sc., 35: 2362-2367)。对我来说,PyEphem 相对于这些算法的一个基本优势是它也可以跟踪时间,而地球轨道通常固定在上述算法中的某个特定时刻(例如,3 月 21 日的春分)。

通常,地球轨道的变化与 Berger 和其他人的算法是在最后一次冰川的规模上(高达 126,000 年 BP)进行评估的。在该范围内评估 PyEphem 时,当日期远早于今天时,我遇到了一些关于至日日期的奇怪行为:

import ephem
date= ephem.date((-59000,1,1))

orbitPoints= ['vernal_equinox_start','summer_solstice',\
  'autumnal_equinox','winter_solstice','vernal_equinox_end']

dates= {}
dates['vernal_equinox_start']= ephem.next_vernal_equinox(date)
dates['summer_solstice']= ephem.next_summer_solstice(dates['vernal_equinox_start'])
dates['autumnal_equinox']= ephem.next_autumnal_equinox(dates['vernal_equinox_start'])
dates['winter_solstice']= ephem.next_winter_solstice(dates['vernal_equinox_start'])
dates['vernal_equinox_end']= ephem.next_vernal_equinox(dates['winter_solstice'])

for orbitPoint in orbitPoints:
  date= dates[orbitPoint]
  distance= body_distance(sun, date)
  hlon, hlat= body_hpos(sun, date)
  print '%-20s %30s %8.4f %12s %12s' %\
    (orbitPoint, date, distance, hlon, hlat)

print 'days between between equinoxes: %.1f, year length (vernal equinox): %.1f' %\
  (dates['autumnal_equinox']-dates['vernal_equinox_start'],\
   dates['vernal_equinox_end']-dates['vernal_equinox_start'])
Run Code Online (Sandbox Code Playgroud)

给出:

vernal_equinox_start          -59001/12/20 01:33:21   1.6255  180:01:53.6    0:00:01.7
summer_solstice                -59000/2/19 04:16:18   1.3380  180:03:56.7    0:00:09.6
autumnal_equinox                -59000/7/1 09:20:58   0.3704    0:00:42.2    0:00:09.6
winter_solstice                -59000/10/9 07:35:39   1.1335  179:56:59.4   -0:00:12.4
vernal_equinox_end            -58999/10/10 07:40:47   1.1348  180:00:52.7    0:00:16.2
days between between equinoxes: 193.3, year length (vernal equinox): 659.3
Run Code Online (Sandbox Code Playgroud)

当我将日期设置为date= ephem.date((-25000,1,1)).

如果 PyEphem 确实在我感兴趣的时期(10,000 年 BP)内给出了准确的结果,那将符合我的目的。但是,我想澄清这一点,并且愿意接受扩展此范围的建议,即使只是为了验证。我正在将 SkyField 视为替代方案,但它似乎没有提供扩展范围。

对 PyEphem 有效性范围的清晰描述和任何建议将不胜感激。

Bra*_*des 2

你得到的结果是合理的,尽管我不能说出它们的具体准确性。只是简单地说,地球\xe2\x80\x99s的自转速度与当今的自转速度相似。就在几百年前,日子还更短,而在未来,它们将会变得越来越长(随着误差的累积,我们有了闰秒),历史上每年累积的差异使我们当前的公历变得越来越糟糕。每一千年你都会倒退到季节。看:

\n\n

https://eclipse.gsfc.nasa.gov/SEcat5/deltat.html

\n\n

我还没有坐下来计算累积的差异是否真的可以解释您在上面看到的差异,或者是否还有其他影响在起作用,但如果我发现我们当前的公历天数与我们的天数完全相同,我肯定不会感到惊讶,当预测到公元前 59,000 年时,它在季节中的位置完全不同于今天。

\n