私の質問は、PyEphem が夏至と分点の日付と太陽の幾何学について正確な結果を提供する期間はどのくらいかということです。
これまでのところ、GitHub https://github.com/brandon-rhodes/pyephem/issues/61のこの非常に有益な投稿で、BC 9998-03-20 から AD 9999-12-31 までの制限 と、その結果の全体的な兆候を見つけました。現在のいずれかのサイトで +/- 20,000 年を超えると不安定になります。
特定の位置における太陽の高度と方位角から入射する太陽放射を計算するために、より長期間にわたって太陽の位置を取得しようとしているため、これを明確にしたいと思います-通常は10,000年前にさかのぼります-位置。PyEphem は、たとえば Berger、1978 (J. Atmosph. Sc.、35: 2362-2367) によって提供される機能の優れた代替手段を提供しているようです。私にとって、これらのアルゴリズムに対する PyEphem の本質的な利点は、前述のアルゴリズムでは地球の軌道が通常 1 つの特定の瞬間に固定されるのに対し、時間も追跡できることです (たとえば、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'])
与えます:
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 が実際に私の関心のある期間 (10,000 年 BP) にわたって正確な結果を提供する場合、それは私の目的に役立ちます。ただし、これを明確にしたいと思います。検証のためだけであっても、この範囲を拡張するための提案を受け付けています。代替手段として SkyField を検討していましたが、拡張範囲を提供していないようです。
PyEphem の有効範囲の明確な説明と提案をいただければ幸いです。