0
我试图找出使用Skyfield的上升/下降月球节点的经度,但无法在文档中找到任何参考。可能吗? 也做任何JPL文件已经提供这个数据?使用Skyfield的月球节点的经度
我试图找出使用Skyfield的上升/下降月球节点的经度,但无法在文档中找到任何参考。可能吗? 也做任何JPL文件已经提供这个数据?使用Skyfield的月球节点的经度
至少很容易找到它们相对于J2000黄道 - 这对2000年以后的日期来说可能是好的,因为我认为只有黄道经度的定义随着岁月的变化而变化,而不是纬度(这是节点关心的)?
在任何情况下,你都会先这样做。假设您想要升序节点。它必须在接下来的30天内发生,因为这比月球的全轨道多,所以让我们来看看关于这月亮的纬度经过由负转正的日子:
from skyfield.api import load
ts = load.timescale()
eph = load('de421.bsp')
earth = eph['earth']
moon = eph['moon']
t = ts.utc(2018, 1, range(14, 14 + 30))
lat, lon, distance = earth.at(t).observe(moon).ecliptic_latlon()
angle = lat.radians
for i in range(len(angle)):
if angle[i] < 0 and angle[i+1] > 0:
break
print(t[i].utc_jpl(), angle[i])
print(t[i+1].utc_jpl(), angle[i+1])
结果是发现升交点必须在1月31日的某个时候发生:
A.D. 2018-Jan-31 00:00:00.0000 UT -0.0188679292421
A.D. 2018-Feb-01 00:00:00.0000 UT 0.00522392011676
要找到确切的时间,安装SciPy的库,并要求其求解器找到在该值达到零的确切时间。你只需要创建一个小功能,需要一个号码,并返回一个数字,由数字转换成Skyfield时间,然后角度回一个普通的号码:
from scipy.optimize import brentq
def f(jd):
t = ts.tt(jd=jd)
angle, lon, distance = earth.at(t).observe(moon).ecliptic_latlon()
return angle.radians
node_t = brentq(f, t[i].tt, t[i+1].tt)
print(ts.tt(jd=node_t).utc_jpl())
结果应该是的确切时刻节点:
A.D. 2018-Jan-31 18:47:54.5856 UT
您能否举一个在特定JPL文件中提供的递增节点示例,以及用于访问它的Skyfield代码?这可能有助于人们回答这个问题有更好的开始。谢谢! –
@BrandonRhodes感谢回复。不过,我还没有示例代码或JPL文件。事实上,这正是我正在通过这个问题寻求的。也就是说,我在月球节点skyfield的[nutationlib.py](https://github.com/skyfielders/python-skyfield/blob/master/skyfield/nutationlib.py)上找到了提及。 – Prabhash
当你说“像他们对所有其他行星一样”时,你是否有一个JPL文件的例子,为另一个星球提供了这个文件?如果不是,那么你可能想编辑问题来澄清这个短语,因为它听起来像你找到了一个JPL文件,里面有升降节点。 –