Ephemeridenberechnung

#1
Ich bin auf der Suche nach Sourcecode zur Ephemeridenberechnung und google nun schon stundenlang ohne etwas brauchbares zu finden.
Ich brauche eigentlich nur RA, Dec, Alt u. Az. von Sonne, Mond und Planeten sowie Auf- und Untergangszeiten.
Mit Online-Portalen oder gar fertigen Programmen kann ich nichts anfangen.
An Programmiersprachen verstehe ich Basic, JavaScript und Python.
Das Buch von Meeus hätte ich auch aber die Umsetzung in eine Programmiersprache ist für mich sehr zäh.
Wer hat Tipps für mich?
 
#4
Danke Markus und Peter.
Leider stehe ich mit C/C++ ein wenig auf Kriegsfuß. PyEphem hab ich mir schon angesehen aber da sind alle Berechnungen in C implementiert. :-(
 
#11
Hallo!

Ich mache Ephemeridenberechnungen nun schon seit 1984 in verschiedenen Programmiersprachen, zuletzt im schon älteren Visual Basic 6. Das macht eigentlich nur Spaß, wenn man die einzelnen Unterprogramme auch selber schreibt. Da braucht man z.B. eine Subroutine für das Julianische Datum, die Zeitgleichung, die Präzession, die Lösung der Kepler-Gleichung und vieles mehr.

Ein guter Einstieg ist das Buch "Grundlagen der Ephemeridenrechnung" von Oliver Montenbruck, der das Thema klassisch mit Bahnelementen beschreibt. Hat man die ersten Schritte getan, finde ich "Astronomical Algorithms" von Jean Meeus sehr gut. Er beschreibt u.a. numerische Methoden, z.B. eine komplett abgedruckte vereinfachte VSOP87-Theorie, die sogar in GUIDE verwendet wird. Im Buch "Astronomie mit dem Personalcomputer" (O.Montenbruck/T.Pfleger) finden sich sehr viele Beispiele mit Algorithmen und Sourcecode (C++).

salü, volker.
 
#12
Danke Volker für die Tipps. Von Montenbruck & Pfleger studiere ich auch die älteren Pascal Codes, C++ ist mir noch etwas zu heftig.
Dass du noch mit VB6 programmierst finde ich sehr interessant.
 
#13
Dass du noch mit VB6 programmierst finde ich sehr interessant.
Das liegt wohl daran, dass man für diese Programme sehr viel Zeit braucht. Anfang der 1980er begann ich mit Basic auf einem C64, dann mit Omicron Basic auf einem Atari ST. Danach fand ich Visual Basic für den PC sehr gut, die Version 6 war damals ganz neu auf dem Markt. Mittlerweile habe ich Mühe, diese Programme unter Windows 10 noch am Laufen zu halten. Das geht leider nur noch als Programmcode in der VB6-Programmierumgebung. Ich bleibe jedoch dabei, weil meine ganzen Routinen sich bausteinartig in dieser Sprache aufbauen. Will ich was neues machen, muss ich nicht immer wieder umdenken. Die wichtigsten Routinen wie z.B. die Lösung der Keplergleichung oder Koordinatentransformationen stammen sogar noch fast "wortgetreu" aus den 1980ern. Ist schon ziemlich retro...

PS: In Montenbrucks "Grundlagen der Ephemeridenrechnung" ist z.B. die Mondbahn mit den wichtigsten Störungstermen aufgeführt, ebenso die Newcombsche Sonnentheorie. Die Terme lassen sich ziemlich leicht in jeden Programmdialekt übersetzen...

salü, volker.
 
Zuletzt bearbeitet:
#14
Hallo Peter,
ich habe ein Buch namens Celestrial Basic, wo das drin steht. Die Programme sind gut dokumentiert.
Allerdings in Basic. Zu einem Buch, ich weiss jetzt aber gerade nicht welches habe ich auch Pascal-Routinen, wahrscheinlich auf 5,25 Zoll Disketten, wenn die heute jemand noch kennt.
Astronomical calculators

Gruss
Peter
 
#15
...ein Buch möchte ich auch noch empfehlen, obwohl es heute wohl nur noch schwer zu bekommen sein wird: "Astronomical Formulae For Calculators", ein frühes Werk vom Altmeister Jean Meeus. Im Gegensatz zu späteren Werken mit der VSOP87-Theorie berechnet Meeus für die Planeten zunächst mittlere Größen, die dann mit vielen Störungstermen zu einer exakten Bahn (Genauigkeit etwa 1") ergänzt werden. Diese Terme kann man leicht in jede Programmiersprache übersetzen. Diese Vorgehensweise finde ich sehr interessant, zumal das Buch zu einem Zeitpunkt erschien, an dem es (fast) keine deutschsprachige Literatur zu diesem Thema gab. Die "Calculators" im alten Titel von Meeus waren die zu jener Zeit beliebten kleinen Rechner wie z.B. der Sharp PC-1401. Die waren damals noch richtig teuer, es war wohl der Traum von vielen. Der Commodore VC 20 kam erst etwas später auf den Markt.

Oliver Montenbrucks "Grundlagen der Ephemeridenrechnung" erschien ursprünglich als (blauer) Band 10 des Verlags "Sterne und Weltraum" im Jahr 1984. Für Merkur bis Mars gibt er zeitabhängige Bahnelemente an, die ohne Störungsterme bis heute eine erstaunliche Genauigkeit erreichen. Für Jupiter, Saturn, Uranus, Neptun und Pluto (Pluto war damals noch ein Planet! ;-)) geht er einen völlig anderen Weg: Er gibt für bestimmte Zeitpunkte im Abstand von 200 Tagen Bahnelemente an, die störungsgerechnet sind, sogenannte oskulierende Bahnelemente. Sie stellen die Planetenbahn zu diesem Zeitpunkt sehr exakt dar. Im Original von 1984 beziehen sich diese oskulierenden Bahnelemente sogar noch auf das ältere Äquinoktium 1950.0; die neueren Auflagen wie z.B. die sechste beziehen sich dagegen auf das heute gebräuchliche (Standard-)Äquinoktium 2000.0.

salü, volker.
 
#16
In der DDR kursierten unter uns Sternfreunden ein paar Filmrollen mit diesem Buch, ich weiß jetzt nicht welche Auflage. Aber es war an Benutzer programmierbarer Taschenrechner gerichtet. Ich habe mir damals Abzüge auf sog. Dokumentenpapier gemacht. Aus Nostalgie habe ich es nie weggeworfen. Ich kann also falls es nottut, mal ein paar Seiten daraus kopieren.
 
#17
@Peter
Danke für den Tipp zu "Celestrial Basic" - das Buch habe ich sogar. Hab damit die ersten Programme am Sinclair Spectrum geschrieben. :) Die Programme sind zwar recht kurz und schnell geschrieben aber leider sind die Ergebnisse recht ungenau.

@volker
Danke auch für deinen Tipp.

@alle
Beim Springer-Verlag gibt es noch die Pascal-Sourcen von Montenbruck & Pfleger zum Download. Die hab ich mir nun geholt und versuche sie zu übersetzen. Mal sehen ob ich daraus vielleicht sogar eine Library machen kann.

Danke euch allen für die Unterstützung.
 
#19
Mit Online-Portalen oder gar fertigen Programmen kann ich nichts anfangen.
Ich kann das gut verstehen. Obwohl ich natürlich auch einige gekaufte Astro-Programme benutze, finde ich es nicht sehr befriedigend. Es geht dabei wohl auch weniger um die Genauigkeit. Es ist wohl so wie ein Virus, das einen für´s ganze Leben infiziert. Bis man sogar eigene Zeichensätze, griechische Buchstaben und die alten Symbole des Tierkreises selbst auf mm-Papier entwirft... ;-)
Vielleicht ähnlich wie bei einem Spiegelschleifer, der sich damit total identifiziert. Für ihn ist ein neu gekaufter, fertiger Spiegel wohl nicht sehr interessant.

salü, volker.
 
#20
Hallo Peter,

ich habe vor Jahren mal versucht astronomische Berechnungen mit Flash zu programmieren. Der Vorteil war damals, dass man gleich ein ansehnliches "Interface" mitschreiben kann, das in seiner grafischen Gestaltung relativ frei war. Flash ist aber mittlerweile ziemlich tot.

Jetzt habe ich vor einigen Monaten mal begonnen meine Festplatten zu durchsuchen und das ganze in (man höre und staune) JavaScript umzumodeln, was ja recht einfach zu programmieren ist. Als grafische Alternative gibt es ja jetzt HTML5 mit seiner "canvas", wenngleich das für dieses Thema meines Erachtens noch relativ mühsam ist.

Es gibt eine kleine JS Ressource von Keith Burnett (bitte selber googeln, ich finde es grade nicht). Ich habe das als Ausgangspunkt genommen und mal die verschiedensten Ressourcen von Meeus, Montenbruck usw.usf draufgepackt. Die "üblichen Verdächtigen halt ;)
Ist alles nix Neues, aber wenn man das selber tippen will - und das macht durchaus Sinn und auch Spaß - ist es eine gute Übung.

Habs mal auf den Server gegeben:
Ephemeriden mit JS

Die Seite läuft nur mit Bootstrap (HTML+CSS) sowie den nötigen .js Dateien für die Rechnungen.
Ist alles noch sehr unfertig und zusammengewürfelt, aber der Tag hat leider nur 24 Stunden...
Schau einfach mal in den Quellcode und dort dann in die einzelnen .js Dateien.

An alle Leute hier, die mit "warum alles selber machen wenn's das schon gibt" argumentieren.
Ganz einfach: Manchen Leuten macht das einfach Spaß. Besser noch, Freude! Wenn man selber was zusammengefrickelt hat, und das dann auch noch funktioniert, ist es ein Erfolgserlebnis ;)
As simple as that.

Freilich gibt es genug Ressourcen, lästig ist halt das Implementieren elendslanger Tabellen für diverse Berechnungen (Numerische Integration von Koordinaten usw.). Diese Tabellen mit den Zahlenwerten findet man zwar, aber selten so, wie man sie selbst benötigt (je nach Sprache). Also Copy+Paste ist das nicht.

In meiner obigen Webseite habe ich auch mal die "Canvas" von HTML5 ausprobiert, bei der Mondphase. Funktioniert soweit ganz gut. Wie gesagt ziemlich unfertig alles. An's Refactoring des JS möchte ich gar nicht denken (schauder...:eek:).

Horizontale Koordinaten und Auf-/Untergang sind dann als nächstes dran, aber da gibt es momentan ein Zeitproblem.

CS,
harald


--
 
#21
Wenn man die Rechenergebnisse für weitergehende (und nicht durch Standardprogramme abgedeckte) Anwendungen benötigt, dann ist es am besten, man schreibt es selbst. Natürlich kann man sich auch darum bemühen, ein fertiges Programm irgendwie anzuzapfen, aber das ist meist nur eine Übergangslösung. Irgendwas ändert sich, der Dienst wird eingestellt, die eigenen Anforderungen ändern sich: Man rennt immer hinterher.

Ich habe Peter den Montenbruck empfohlen, eigentlich in Kombination mit einer aktuellen Auflage des Meeus-Buchs. Der Meeus ist mMn. didaktisch besser. Die Montenbruck-C++-Programme sind sehr gut. Bei der Umsetzung werden keine tief-speziellen C++-Konstrukte eingesetzt. Ein Umsetzung in die C-Ableger C# und Java ist ziemlich einfach. Wenn ich versuche, in diesen Programmen etwas zu verstehen, dann gehe ich meist mit dem Schritt-Tester durch (Visual Studio). Ich sehe dann erst wirklich, *wie* gut das programmiert ist: Man verliert sich nicht in Einzelheiten, es ist alles so strukturiert, wie es für das Gesamtverständnis am besten ist. Dazu muss man eine Balance finden zwischen dem alten Fortran-Style (Routinen sind sehr lang und kaum gegliedert) und der modernen, von der Objektwelt geprägten Programmierweise, jede fünf Zeilen in eine eigene Methode zu stopfen. Das ist gut gelungen.

Ich plädiere übrigens für C++ als Sprache der Wahl frü solche Anwendungen. Mit ganz wenig Mühe kann man das alte C-Erbe hinter sich lassen, und man unterliegt nicht dem Objekt-Diktat der modernen Sprachen. Wenn etwas algorithmisch ist, braucht man dem keinen Objekt-Haube überzustülpen. Der Nachteil ist vielleicht, dass es keine im Standard verankerte Grafik gibt. Aber auch dafür gibt es einfache Lösungen. Wen das interessiert, der möge mich anschreiben.

Etwas lang geworden, sorry.
 

Diese Seite empfehlen

Oben