gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 19:19:18 25 4
gpt4 key购买 nike

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

到目前为止,我找到了 B.C. 的极限。 9998-03-20 到 A.D. 9999-12-31 在 GitHub 上这篇信息丰富的帖子中 https://github.com/brandon-rhodes/pyephem/issues/61和一个总体迹象表明,当在当前的任何一个站点上移动超过 +/- 20,000 年时,结果变得不稳定。

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

通常,使用 Berger 和其他人的算法,地球轨道的变化是根据末次冰期(距今 126,000 年)的规模进行评估的。在该范围内评估 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'])

给予:

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

当我将日期设置为 date= ephem.date((-25000,1,1)) 时,我仍然会得到一个合理的(?)年长值。

如果 PyEphem 确实在我感兴趣的时间段(BP 10,000 年)内给出了准确的结果,那将符合我的目的。然而,我想澄清这一点,并愿意接受扩大这个范围的建议,即使它只是为了验证。我一直在寻找 SkyField 作为替代方案,但它似乎没有提供更大的范围。

如果能清楚地描述 PyEphem 的有效性范围和任何建议,我们将不胜感激。

最佳答案

你得到的结果是合理的,但我不能说出它们的具体准确性。地球的自转速度与现在相似只是短暂的。就在几百年前,日子还很短,而在未来它们会越来越长(随着误差的累积,我们有了闰秒),历史上每一年的累积差异使得我们现在的公历越来越接近公历每一千年你都会向后跳到季节。见:

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

我还没有坐下来计算累积差异是否真的解释了您在上面看到的差异,或者是否还有其他影响在起作用,但如果发现我们当前的公历天数与我们的长度,当推回到公元前 59,000 年时,在季节的其他地方完全不同于今天。

关于python - PyEphem:冬至和春分的日期及其在较长时间尺度上的有效性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29105260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com