Wikipedia gibt mir die Gleichung
M = E - e*sinE
Ich habe M und muss E finden.
Wie es geht?
Sie können eine Wurzellösungsmethode verwenden, um die exzentrische Anomalie zu berechnen
Wie Sie bereits sagten, lautet die Kepler-Gleichung für exzentrische / mittlere Anomalie und Exzentrizität:
und es gibt keine geschlossene Lösung für E als Funktion von M, aber Sie können E immer noch iterativ berechnen.
Sie können dies als Wurzellösungsproblem einrichten, indem Sie M von beiden Seiten der Gleichung subtrahieren, um eine Funktion zu erstellen, deren Wurzel Sie finden möchten (oder wenn sie als Funktion von E gleich 0 ist):
Die Lösung des Wurzellösers berechnet dann einen Wert von E, sodass diese Gleichung gleich 0 ist, und gibt Ihnen somit die exzentrische Anomalie an, die die Kepler-Gleichung (die Lösung) erfüllt.
Für einen Newton-Wurzellöser müssen Sie die Ableitung dieser Funktion (in Bezug auf E) berechnen, die lautet:
Mit diesen beiden Gleichungen, Werten für mittlere Anomalie (M), Exzentrizität (e) und einer anfänglichen Schätzung für exzentrische Anomalie (E) (dies kann 0 sein), berechnet der Newton-Wurzellöser die Lösung.
Wie in anderen Kommentaren angegeben, funktioniert dies nur für geschlossene Umlaufbahnen (kreisförmig und elliptisch), da parabolische und hyperbolische Umlaufbahnen per Definition keine Periode haben. Die hyperbolische exzentrische Anomalie wird für parabolische / hyperbolische Bahnen verwendet: Was ist die hyperbolische exzentrische Anomalie F?
Hier ist ein gutes Diagramm, das die mittlere Anomalie erklärt ( https://en.wikipedia.org/wiki/Mean_anomaly ). Zusammenfassend ist die mittlere Anomalie die "wahre Anomalie" einer Umlaufbahn mit derselben Periode wie die Umlaufbahn, die Sie modellieren, außer dass sie kreisförmig ist und daher eine konstante ("mittlere") Winkelgeschwindigkeit aufweist.
Hier ist das Python-Skript, das zum Erstellen dieses Diagramms verwendet wird. Den Newton-Root-Solver finden Sie hier: https://github.com/alfonsogonzalez/AWP/blob/main/src/python_tools/numerical_tools.py
'''
Create visualizations for Kepler's equation
of Mean / Eccentric anomalies and eccentricity
'''
from numerical_tools import newton_root_single_args
from numerical_tools import d2r, r2d
import numpy as np
import matplotlib.pyplot as plt
plt.style.use( 'dark_background' )
def keplers_eq( E, args ):
return E - args[ 'e' ] * np.sin( E ) - args[ 'M' ]
def dkep_dE( E, args ):
return 1.0 - args[ 'e' ] * np.cos( E )
if __name__ == '__main__':
args0 = { 'M': 100 * d2r, 'e': 0.0 }
args1 = { 'M': 100 * d2r, 'e': 0.5 }
args2 = { 'M': 100 * d2r, 'e': 0.9 }
args3 = { 'M': 200 * d2r, 'e': 0.1 }
args4 = { 'M': 200 * d2r, 'e': 0.9 }
Es = np.arange( 0, 2 * np.pi, 0.01 )
Es_deg = Es * r2d
args = [ args0, args1, args2, args3, args4 ]
colors = [ 'r', 'g', 'b', 'c', 'm' ]
labels = [ '0 | $M=100,e=0$', '1 | $M=100,e=0.5$', '2 | $M=100,e=0.9$' ]
labels += [ '3 | $M=200,e=0.1$', '4 | $M=200,e=0.9$' ]
plt.figure( figsize = ( 12, 8 ) )
for n in range( len( args ) ):
fs = keplers_eq( Es, args[ n ] )
root = newton_root_single_args( keplers_eq, dkep_dE, 0.0, args[ n ] )
plt.plot( Es_deg, fs, colors[ n ], label = labels[ n ] )
plt.plot( root[ 0 ] * r2d, 0, colors[ n ] + 'o' )
plt.ylabel( 'f( E )' )
plt.xlabel( 'E $(degrees)$' )
plt.grid( linestyle = 'dotted' )
plt.legend()
plt.show()
Wie der Wikipedia-Artikel besagt, gibt es keine geschlossene Form, um auszudrücken bezüglich .
Sie müssten es approximieren, zum Beispiel mit einer Reihenentwicklung:
Siehe Morrison 1882 für Einzelheiten zum Erstellen Ihrer eigenen Annäherung.
notovny
PM 2Ring
Alfonso González
Alfonso González
notovny
Alfonso González
PM 2Ring
PM 2Ring
Alfonso González
Robotex
Alfonso González
Robotex
Robotex