perl – libnova奇怪的行为为北纬89.5度

perl – libnova奇怪的行为为北纬89.5度,第1张

概述我写了这个程序: #!/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_ 我写了这个程序:

#!/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所示
是这个区间的月落(JD 2456623 = 2013-11-26 12:00:00):

另一个奇怪之处:如果我注释掉“$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()返回一个固定的
结构,但显然不是?检查运输的行为
时间改变结构?

编辑:好的,我运行程序两次而没有改变它并得到:

DAY: 2456623STATUS: 1RISE: 5.5664193588601e-309SET: 2.99352717623831e-264DAY: 2456624STATUS: -1RISE: 1.9634470382202e-153SET: 2.26294632209635e+137DAY: 2456623STATUS: 1RISE: 5.5664193588601e-309SET: 3.04770606791278e-262DAY: 2456624STATUS: -1RISE: 1.9634470382202e-153SET: 2.26294632209635e+137

换句话说,2456623设置无缘无故变化.

解决方法 我已经联系了libnova的作者,他们已经证实这是一个错误并正在努力纠正它.

如果它们在正北方时位于地平线之上,则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

总结

以上是内存溢出为你收集整理的perl – libnova奇怪的行为为北纬89.5度全部内容,希望文章能够帮你解决perl – libnova奇怪的行为为北纬89.5度所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1269370.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存