gpt4 book ai didi

python - PyEphem:我可以根据方位角计算太阳的高度吗

转载 作者:行者123 更新时间:2023-11-28 17:48:08 29 4
gpt4 key购买 nike

我正在使用 PyEphem 计算不同时间太阳在天空中的位置。

我有一个观察点(恰好在巨石阵),可以使用 PyEphem 计算一天中任何时间的日出、日落以及太阳的高度角和方位角(相对于 N 的度数)。太棒了,没问题。

但是,我真正需要的是能够从已知方位角计算太阳的高度角。所以我会设置相同的观察点(long/lat/elev/date(只是 yy/mm/dd,不是时间))和太阳的方位角。根据这个输入,计算太阳的高度和它在那个方位角的时间。

我曾希望我能够设置 Sun.date 和 Sun.az 并从这些值向后工作,但可惜。关于如何使用 PyEphem 解决这个问题(如果它甚至是可行的)有什么想法吗?

我看到唯一可用的其他选项是通过迭代一系列时间来“偷偷摸摸”方位角,直到我进入我想要的方位角的误差范围内,但这太恶心了。

提前致谢,戴夫

最佳答案

天文学软件通过 JPL 预测地球和太阳的位置来预测太阳的位置,JPL 将其表示为一系列涵盖特定日期范围的多项式。问“太阳什么时候会在方位角 z?”正在询问三个不同的多项式,每个多项式都以不同的速率变化(太阳的多项式,地月质心围绕太阳旋转的多项式,以及地球围绕质心旋转的多项式)会恰好带来两者之间的差异两个位置精确到某个角度。

而且,事实证明,该问题属于“严重”数学问题的类别——或者,正如专业人士所说,“非封闭形式解决问题”。但我喜欢你的“粗暴”一词,因为它很好地表达了我们大多数人在发现世界上的大部分问题都必须通过反复试验而不是仅仅给我们答案时的感受。

幸运的是,从这个意义上说,有足够多的科学样本是“粗略的”,因为有标准的方法可以问“这个大而复杂的函数什么时候会精确地达到值 z?”如果您能够安装并试用 SciPy,这个日益流行的 Python 科学库,您会发现它有一整套例程,这些例程偷偷摸摸地寻找解决方案,每个例程都使用不同的策略。另一个回答者已经确定了一种这样的策略——每次试验将搜索空间减半——但这通常是最慢的(尽管在某些极端情况下是最安全的)方法;这里还有一些其他的:

http://docs.scipy.org/doc/scipy/reference/optimize.html

创建一个小函数,返回“多远”太阳的方位角是一个时间 t 从你想要的方位角,当方位角完全正确时,该函数最终将返回零,例如:

def f(t):
...
return desired_az - sun.az

然后从该 SciPy 页面尝试其中一个“求根标量函数”。 bisect() 函数将像其他回答者建议的那样,继续将搜索空间减半以缩小范围。但我的猜测是,您会发现牛顿法远没有那么“粗糙”而且速度更快 — 试试 newton()brentq(),看看会发生什么!

关于python - PyEphem:我可以根据方位角计算太阳的高度吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15056269/

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