Пифем 15-минутное расхождение при ручном вычислении равноденствий и солнцестояний

Вы можете использовать битсет

bitset<8> b(string("00010000"));
int i = (int)(bs.to_ulong());
cout<<i;
1
задан Dennis 18 January 2019 в 22:01
поделиться

2 ответа

Большое спасибо, Брэндон, это очень полезно, и я наконец-то получаю правильное значение! Фактически, кажется, что равноденствия определяются тем, что прямое восхождение равно 0, 6, 12, 18, а не гелиоцентрической долготе, равной 0, 90, 180, 270. Существует небольшая разница между ra и hlon, когда Вы запускаете код ниже. Но это приводит к другому вопросу. На странице Википедии 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
0
ответ дан Dennis 18 January 2019 в 22:01
поделиться

Похоже, разница в том, что базовая астрономическая библиотека PyEphem всегда измеряет гелиоцентрическую долготу относительно координат J2000, которая к дате, о которой вы спрашиваете, заметно отличается от координат даты, которые используются для определения равноденствия .

Попробуйте выполнить это в качестве шага вычисления:

sun.compute(d3, epoch=d3)

и затем найдите, когда sun.ra равен нулю; результат должен быть равноденствием. Я посмотрю, как обновить Справочник PyEphem, чтобы заметить, что гелиоцентрические координаты, похоже, не обращают внимания на параметр epoch=.

0
ответ дан Brandon Rhodes 18 January 2019 в 22:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: