2013-11-08 2 views
5

Я написал эту программу:libnova странное поведение для 89,5 градуса северной широты

#!/usr/bin/perl 

use Astro::Nova qw(get_solar_equ_coords get_lunar_equ_coords get_hrz_from_equ 
        get_solar_rst_horizon get_timet_from_julian 
        get_julian_from_timet get_lunar_rst get_lunar_phase); 

$observer = Astro::Nova::LnLatPosn->new("lng"=>0,"lat"=>89.5); 

for $i (2456623..2456624) { 
    print "DAY: $i\n"; 
    ($status,$rst) = get_lunar_rst($i, $observer); 
    print "STATUS: $status\n"; 

    $rst->get_transit(); 

    $rise = $rst->get_rise(); 
    print "RISE: $rise\n"; 
    $set = $rst->get_set(); 
    print "SET: $set\n\n"; 
} 

и получил следующие результаты:

DAY: 2456623 
STATUS: 1 
RISE: 5.5664193588601e-309 
SET: 1.55254159695923e-267 

DAY: 2456624 
STATUS: -1 
RISE: 1.9634470382202e-153 
SET: 2.26294632209635e+137 

Другими словами, луна идет от циркумполярная (всегда) ниже горизонт, который никогда не поднимался и не поднимался.

Я понимаю, что 89,5 градусов - это своего рода угловой случай, но почему не должен этот код работать?

Как примечание http://aa.usno.navy.mil/data/docs/RS_OneYear.php показывает, что является Moonset в этом интервале (JD 2456623 = 2013-11-26 12:00:00):

enter image description here

Еще странность: если я закомментируйте "$ rst-> get_transit();" линия, я получить эти результаты:

DAY: 2456623 
STATUS: 1 
RISE: 5.5664193588601e-309 
SET: 1.14372958360957e-268 

DAY: 2456624 
STATUS: -1 
RISE: 6.80740365931403e+199 
SET: 4.81766816905579e+151 

Подъем/набор по-прежнему странно (это хорошо, так как статус -1), но они разные. Я всегда предполагал, что get_lunar_rst() вернул фиксированную структуру , но, видимо, нет? Сам акт проверки транзита время изменяет структуру?

EDIT: Хорошо, я запустил программу в два раза, не меняя его на всех и получил:

DAY: 2456623 
STATUS: 1 
RISE: 5.5664193588601e-309 
SET: 2.99352717623831e-264 

DAY: 2456624 
STATUS: -1 
RISE: 1.9634470382202e-153 
SET: 2.26294632209635e+137 

DAY: 2456623 
STATUS: 1 
RISE: 5.5664193588601e-309 
SET: 3.04770606791278e-262 

DAY: 2456624 
STATUS: -1 
RISE: 1.9634470382202e-153 
SET: 2.26294632209635e+137 

Другими словами, 2456623 заданные изменения без причины.

+1

Посмотри на исходном коде и попытаться выяснить, почему 89.5 не ведет себя так, как вы ожидаете. Спросите автора модуля. Отправьте отчет об ошибке. – toolic

ответ

1

Я связался с авторами либнова, которые подтвердили, что это ошибка, и работают над ее исправлением.

libnova неправильно полагает, что тела являются циркумполярными, если они находятся над горизонтом, когда на севере. Это не соответствует действительности: https://astronomy.stackexchange.com/q/963

Я написал исправление, которое не предполагает, но все еще может быть неточным, если склонение присутствующих в организме не является унимодально: https://astronomy.stackexchange.com/questions/962/is-lunar-elevation-at-a-given-location-for-a-given-day-unimodal

 Смежные вопросы

  • Нет связанных вопросов^_^