2013-02-24 127 views
3

我使用PyEphem来计算太阳在不同时间的位置。PyEphem:我可以从方位角计算太阳的高度吗

我有一个观察点(恰好在巨石阵),可以使用PyEphem在一天的任何时刻计算太阳的日出,日落,以及高度角和方位角(从N度)。辉煌,没问题。

但是,我真正需要的是能够从已知方位角计算太阳的高度角。所以我会设置相同的观察点(长/纬度/高度/日期(只是年/月/日,而不是时间))和太阳的方位角。从这个输入中,计算太阳的高度和它在该方位角上的时间。

我希望我能够设置Sun.date和Sun.az,并从这些值向后工作,但是可惜。有关PyEphem如何解决这个问题的任何想法(如果它甚至是平易近人的)?

我看到的唯一其他选择是通过迭代一系列时间来“潜入”方位角,直到我进入方位角我希望的误差范围内,但这只是粗略的。

在此先感谢,戴夫

回答

0

不知道PyEphem做我不知道如何容易或困难的内部计算的细节将是反转的计算,给你想要的结果。然而,关于“偷偷摸摸”选项,您可以选择两个开始时间(例如日出和中午),其中方位角已知为任意一侧(一个大于一个小于)所需值。然后,只需使用简单的“间隔减半”方法即可快速找到近似解决方案。

+0

如果我最终偷偷摸摸,我一定会考虑到“减半间隔”。谢谢! – davehunt00 2013-02-24 21:29:34

2

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

事实证明,这个问题属于“严重”的数学问题 - 或者像专业人士所说的那样,是“非封闭形式的解决方案问题”。但是我喜欢你的单词“gross”,因为它当我们发现大部分世界必须通过反复试验来解决时,我们大多数人都会感受到,而不仅仅是给我们一个答案。

幸运的是,科学的一个巨大的足够样本是有安装和尝试询问“什么时候这个大复杂功能完全达到价值ž?”如果你有能力的标准方法“毛”在这个意义上SciPy是日益流行的Python科学图书馆,您会发现它拥有一整套隐藏在解决方案上的例程,每个例程都使用不同的策略。另一个答复者已经确定了一种这样的策略 - 每次审判将搜索空间减半 - 但这通常是最慢的(尽管在某些极端情况下是最安全的)方法;这里有一些人:

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

创建一个小的函数,返回“如何离谱”太阳的方位是你想要的方位,在函数最终返回零当方位正好是一个时间t对,如:

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

然后尝试从该SciPy页面中找到一个“根发现标量函数”。 bisect()功能就像其他回答者所建议的一样,将搜索空间缩小一半以缩小范围。但我的猜测是,你会发现牛顿的方法远没有“毛病”和更快 - 尝试newton()brentq(),看看会发生什么!

+0

谢谢!我将检查这些信息并报告我采取的方向。我很欣赏你采取回应的时间。 d – davehunt00 2013-02-25 02:39:27