用星辰查找昼夜平分点和至日时间

问题描述 投票:0回答:1

我想使用astropy包来计算昼夜平分点和至日的时间。我之前使用过pyephem软件包,它为此提供了简单的功能:例如,可以说

>>> print(ephem.next_equinox(ephem.now()))
2019/9/23 07:50:14

并获得下一个春分的时间。然而,天蝎座中没有这样的函数,所以我想我可能会尝试按照定义计算时间:春分点是太阳的黄道经度为零的时刻;夏至是太阳的黄道经度为90°等的时刻。

因此,获得太阳的黄道经度似乎是必不可少的步骤,然后我可以以某种方式解决该功能的时间:

def sunEclipticLongitude(t):
    sun = astropy.coordinates.get_body('sun', t)
    eclipticOfDate = astropy.coordinates.GeocentricTrueEcliptic(equinox=t)
    sunEcliptic = sun.transform_to(eclipticOfDate)
    return sunEcliptic.lon.deg

我的第一个想法是使用scipy.optimize的东西来解决这个功能的时间,但在这一点上,我卡住了。太阳的经度是一个角度,所以很明显有许多lon = 0的解决方案(今年的春分,明年的春分......)当太阳的经度时,我如何找到下一次(从特定的原点,例如现在)是零?如何找到零时的前一次?此外,春分点似乎是一个特别讨厌的解决方案,因为该函数在该点有一个不连续 - 它从360跳到0.如何处理?

scipy astropy
1个回答
0
投票

要回答第一个问题,优化策略仍然适用于周期性功能,但解决方案将取决于您的优化起点。只需选择一个已经非常接近的点。你知道昼夜平分点是3月21日和9月20日(或类似的东西),而至日是6月21日和12月21日。在这些日期选择一个任意的时间,你会找到正确的解决方案。

至于角度的不连续性,它实际上并不存在......只是在这个特定的惯例中,你选择将角度表示为0到360度之间的数字。但在数学上,361度的角度意味着与1度完全相同的东西,并且具有同样多的存在权。

因此,像sin(),cos()等连续的周期函数将不会在该角度值(或您选择的最小或最大角度的任何其他值)上显示任何不连续性。

© www.soinside.com 2019 - 2024. All rights reserved.