2017-08-27 2 views
0

Ich versuche herauszufinden, die Länge der aufsteigenden/absteigenden Mondknoten mit Skyfield, aber keinen Bezug in der Dokumentation zu finden. Ist es möglich? Gibt es auch eine der JPL-Dateien, die diese Daten bereits bereitstellen?Längengrad der Mondknoten mit Skyfield

+0

Können Sie ein Beispiel für einen aufsteigenden Knoten geben, der in einer bestimmten JPL-Datei bereitgestellt wird, und den Skyfield-Code für den Zugriff darauf? Das könnte den Leuten helfen, besser auf die Frage zu antworten. Vielen Dank! –

+0

@BrandonRhodes danke für die Antwort zurück. Ich habe jedoch noch keinen Beispielcode oder eine JPL-Datei. Genau das suche ich durch diese Frage. Das heißt, ich habe auf den Mondknoten skyfield [nutationlib.py] (https://github.com/skyfielders/python-skyfield/blob/master/skyfield/nutationlib.py) erwähnt. – Prabhash

+0

Wenn du sagst "wie sie es für alle anderen Planeten tun", hast du ein Beispiel für eine JPL-Datei, die dies für einen anderen Planeten bereitstellt? Wenn nicht, möchten Sie vielleicht die Frage bearbeiten, um diesen Satz ein wenig zu verdeutlichen, weil es so klingt, als hätten Sie eine JPL-Datei mit aufsteigenden und absteigenden Knoten gefunden. –

Antwort

0

Es ist leicht, sie zumindest relativ zur J2000-Ekliptik zu finden - was auch für Daten weit ab dem Jahr 2000 gut ist, da ich denke, dass sich nur die Definition der Ekliptiklänge mit den vergangenen Jahren ändert, aber nicht Breite (was ist den Knoten wichtig)?

In jedem Fall würden Sie so vorangehen. Nehmen wir an, Sie möchten den aufsteigenden Knoten. Es muss innerhalb der nächsten 30 Tage geschehen, denn das ist mehr als eine volle Umlaufbahn des Mondes, also lassen Sie uns für den Tag suchen, an dem die Breite des Mondes von negativen geht auf positiv:

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]) 

Das Ergebnis ist die Entdeckung, dass der aufsteigende Knoten irgendwann am 31. Januar geschehen muss: der Wert Null erreicht

A.D. 2018-Jan-31 00:00:00.0000 UT -0.0188679292421 
A.D. 2018-Feb-01 00:00:00.0000 UT 0.00522392011676 

die genaue Zeit zu finden, die SciPy Bibliothek installieren, und fragen Sie einen seiner Löser, bei der die genaue Zeit zu finden. Sie müssen nur eine kleine Funktion erstellen, die eine Zahl nimmt und gibt eine Zahl, durch die Nummer auf eine Skyfield Zeit Umwandlung und dann den Winkel zurück auf eine einfache Zahl:

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()) 

Das Ergebnis der genaue Zeitpunkt sein sollte Der Knoten:

Verwandte Themen