Buch (auch Englisch) astronomische Berechnungen

Status
Es sind keine weiteren Antworten möglich.

Christian_P

Aktives Mitglied
Hallo Miteinander,

hat jemand vielleicht einen Tipp, welches Buch zum Thema >>Astronomische Berechnungen<< allgemein (Ephemeridenrechnung, Sternzeit, Planetenposition, Himmelsmechanik, ...) besonders zu empfehlen ist. Mich interessieren besonders die exakten mathematischen Herleitungen der Formeln. Schön wäre eine neuere, aktuelle Auflage. Wer hat Erfahrungen mit solchen Büchern?



Beste Grüße,
Christian
 
Hi Christian,

das sollte es sein:
"Astronomie mit dem Personal Computer", Montenbruck / Pfleger, Springer Verlag.

Clear Skies
Sven

 
Hallo,

ich habe folgende Bücher zugelegt:

1. "Einführung in Astronomie und Astrophysik" von Arnold Hanselmeier

2. "Grundlagen der Ephemaridenrechnung" von Oliver Montenbruck

3. " Astrometrie, die Lehre von der Ortsbestimmung im Himmelsraume" Unikum Verlag

Ich hoffe es hilft ihnen.

Gruß

Wolfgang
 
Hi,

da sollte die "Bibel" nicht fehlen:

Jean Meeus , Astronomical Algorithms, Willmann-Bell Inc.

Eine Implementierung der meisten Algorithmen findet sich in
http://libnova.sourceforge.net/
setzt aber schon Kenntnisse in C/C++ voraus.

Es gibt aber Bindings für weitere Programmiersprachen Python, Go, Java....

CS
 
Zuletzt von einem Moderator bearbeitet:
Hallo lieber Sven, Wolfgang und Gerrit,

vielen Dank für Eure Tipps! Das Buch von Meeus, klar, darf wohl nicht unerwähnt bleiben. Auch das Buch Astrometrie, die Lehre von der Ortsbestimmung im Himmelsraume werde ich mir näher anschauen, allein schon aus geschichtlichem Interesse. Ich habe mir nun das Buch Astronomie mit dem Personal Computer bestellt und werde mir dies mal anschauen. Als Programmiersprache mag ich C++ besonders gern und auch in MATLAB oder scilab kann ich bestimmt einiges berechnen. Ich bin gespannt.


Beste Grüße,
Christian
 
Hallo Christian,

meine Vorposter haben ja schon die wesentlichemn Werke genannt.

"Grundlagen der Ephemaridenrechnung" von Oliver Montenbruck ist ein guter Einstieg für die Basics. Das "Astronomie mit dem Personal Computer" ist dann schon fortgelaufen...ähmm schrittener ;)

Zu Meeus ist zu sagen, dass hier "nur" die Berechnungen gezeigt werden, aber keinerlei Herleitungen, und das gilt auch für den Montenbruck.
Es kommt halt auch immer drauf an, welche Genauigkeitsansprüche man hat. Die libnova Ressourcen sind jedenfalls schon mal sehr gut.

Wenn du auch Beispiele suchst, kann ich das "Arbeitsbuch Astrophysik" von D. Herrmann (ISBN 978-3-8423-8288-6) empfehlen. Allerdings ist das "nur" eine Sammlung von 230 astronomischen Aufgaben. Es befinden sich darin vor allem "analytische" Beispiele/Rechnungen aus zahlreichen astronomischen Teilgebieten und weniger die tabellearische (numerische) Herangehensweise eines Meeus.

Und dann gibts da noch den Guthmann mit "Einführung in die Himmelsmechanik und Ephemeridenrechnung" (ISBN 3-8274-0574-2). Verwendet viel Vektoralgebra, eher theoretisch und nicht direkt so für den Programmierer.

Viel Spaß beim Rechnen!

cs,
harald

--

 
Hallo Christian,

Google findet auch einiges, zum Beispiel

hier

viel Spass ..

Gruß

Sven
 
Hallo Gerrit,

suuuper Link! Danke! :)



Hallo Harald,

danke für deine zusätzlichen Tipps!
Einführung in die Himmelsmechanik und Ephemeridenrechnung ist leider sehr teuer und wohl nicht mehr neu zu bekommen (?) .




Hallo Sven,

dein Link ist auch toll, danke!




Ich habe ja nun Astronomie mit dem Personal Computer da und ich finde es nicht so gut, weil mehr oder weniger ein fester Programmcode vorgegeben ist, den man nachmachen kann, wenn denn die CD noch dabei gewesen wären (das Buch war neu). Die Theorie wird vom Programmcode überdeckt und kommt mir da leider viel zu kurz. Die Darstellung ist unübersichtlich. Dafür sind fast 70 Euronen dann doch zu viel.






Gruß
Christian
 
Hallo Christian,

Springer hat entschieden, den Inhalt der CD online zum Download bereitzustellen. Leider haben sie wohl versäumt, darauf klar ersichtlich hinzuweisen. Ich finde das suboptimal, wurde aber nicht gefragt. Warum auch, 25 Jahre nach Erscheinen der 1. Auflage ;-)

So kommst Du an die Inhalte der CD:
Besuche http://extras.springer.com/Search
Dort die ISBN-Nummer unseres Buchs eingeben: 978-3-540-67221-0
Mit "GO" erscheint dann ein Link zum Runterladen der Inhalte der CD.

Ich finde es schade, dass Dir der Aufbau des Buches nicht zusagt. Das Konzept des Buches umfasst folgendes:
* Darstellung der theoretischen Grundlagen und geeigneter Rechenwege
* Implementierung der elementaren Routinen in einer Bibliothek
* Demonstration des Gebrauchs dieser Routinen in sinnvollen und nützlichen Hauptprogrammen.

"Fest vorgegeben" ist somit gar nichts. Das Buch wäre jedoch nie ein Erfolg gewesen, wenn wir auf Hauptprogramme verzichtet hätten. Dann hätten Leser gefragt, wie man die Routinen der Bibliothek verwendet um dies und jenes zu berechnen.

Die Erklärungen zur Theorie im Buchtext und der Aufbau der Hauptprogramme mit ihren Kommentaren ergänzen sich. Wenn man sich beides mal in Ruhe anschaut, wird hoffentlich klar, wie es funktioniert. Wir haben darauf verzichtet, jede Codezeile im einzelnen im Buchtext zu erklären. Ebenso verzichten wir darauf, C++ zu erklären. Das Buch wendet sich an Leser und Programmierer, die C++ ausreichend gut kennen (man muss dafür kein Experte sein), eine solide und mit ihren Grundlagen dokumentierte Bibliothek suchen und eigene Anwendungen realisieren wollen. Vor allem letzteres: für praktisch alle Fragestellungen, die die Hauptprogramme im Buch behandeln, gibt es inzwischen fix und fertige Lösungen. Uns kam es darauf an, Hintergrundwissen und die richtigen Werkzeuge zu liefern. Wenn uns das für Deinen Anspruch nicht gelungen ist, dann tut es mir wirklich leid.

Andererseits kann ich nicht erkennen, wo das Buch von Meeus wirklich mehr liefern würde: der theoretische Hintergrund fehlt praktisch komplett und Sourcecode gibt es nur separat zum Buch. Die Implementierung von J.P. Naughter ist öffentlich verfügbar und mit dem Buch zusammen ist sie auch dokumentiert. Allerdings sehe ich viele Details der Implementierung, die mir gar nicht gefallen. Nicht nur stilistisch, auch algorithmisch. Man wertet z.B. keine Polynome durch Berechnung der Potenzen aus, sondern verwendet dazu das Hormerschema. Ich hätte da noch mehr zu meckern, aber darum geht es hier nicht. Man kann sich bei Naughter bedanken, dass er seine Codes zur Verfügung stellt.

Viele Grüße
Tom
 
Hallo Tom,

erst mal herzlichen Dank, dass du dich als Mitautor des Buches hier meldest. :) Ich muss mir dass Buch einfach noch mal genauer anschauen, um mir da völlig klar zu werden, wie ich es nun finde. Mit vorgegeben meinte ich, dass ja die Programmstruktur vorgegeben ist, was ja auch irgendwo gut ist, um überhaupt einen Anhaltspunkt zu haben. Mir gefällt es aber besser, eigene Ideen zu verwirklichen. Dazu reichen mir im Grunde die mathematischen Zusammenhänge und Algorithmen eventuell mit einem Rechenbeispiel dazu. Wenn ich eines der vorgegebenen Programm einfach ausprobiere, macht mir das nicht so viel Spaß. :)


Hi Wolfgang,

naja zum Programmentwicklung und Entwurf ist das Buch ja gerade nichts, eben aus den eben genannten Gründen. :) Am meisten würde mich die Himmelsmechanik allgemein, also Celestial Mechanics interessieren.





Ich hab ja schon ein wenig Programmiert und zwar wollte ich die Sternzeit für einen Ort zu einer gewissen Zeit berechnen.

Code:
Zeit zeit("Berlin");
zeit.ausgeben();
cout << endl;
	
cout << "GST: " << setprecision(12) << zeit.getGST() << endl;
cout << "LST: " << setprecision(12) << zeit.getLST() << endl;
Also ein Objekt vom Typ Zeit wird angelegt, kennt seinen Ort, das Datum und die Urzeit (hier die aktuelle Systemzeit), was durch eine Klasse Ort und Datum realisiert wird, auf die die Klasse Zeit zugreifen kann. Aus einer *.dat-Datei wird die geografische Länge und Zeitzone abgefragt. Datum-Wechsel werden beim Umrechnen in GMT (UT) berücksichtigt etc. Was man letztendlich nur noch sieht, ist ein Objekt vom Typ Zeit, dass die Sternzeit "kennt". :)

Scheint auch zu stimmen, habe es mit Daten aus http://aa.usno.navy.mil/data/docs/siderealtime.php verglichen.



Gruß
Christian
 

Anhänge

  • sternzeit.png
    sternzeit.png
    9,8 KB · Aufrufe: 919
Hallo Christian,

wie würden Leser reagieren, wenn sie in unserem Buch "nur" die astronomischen Grundlagen und die Formeln sowie die Bibliotheksroutinen vorfinden würden? Ich vermute, dass viele dann sich fragen würden, wie man das alles in den Zusammenhang setzt und aus den Bausteinen etwas aufbaut.

Also haben wir ein paar Hauptprogramme angeboten. Zum Teil sind die auch so gewählt, dass sie einige der Bibliotheksroutinen motivieren. Wenn man die Pegasus-Methode "freistehend" präsentiert und schreibt, dass man damit Nullstellen finden kann, dann haben sicherlich einige Leser gleich die potentiellen Anwendungsfälle dafür im Sinn. Aber andere fragen sich dann wahrscheinlich, warum wir das bringen und was man damit anfangen soll.

Neben dem Aspekt "wozu ist diese oder jene Routine in der Bibliothek gut" wollten wir auch vermitteln, wie man die Bausteine zusammensetzt. Wobei klar ist, dass man das stilistisch oder technisch auch anders machen kann. Ich habe zum Beispiel in Eye&Telescope etliche der Routinen verwendet, aber manchmal zusammen mit Cache-Logik in Klassen verpackt, um unnötige wiederholte Berechnungen zu vermeiden. Im Buch hätte ich sowas nie sehen wollen, denn die Logik zur Optimierung ist nicht immer ganz trivial und lenkt vermutlich speziell diejenigen Leser ab, die noch nicht ganz so fit mit OO und C++ sind.

Ich denke, Du hast mit der Bibliothek viele Möglichkeiten, Dir selber entweder Anwendungen damit zu schreiben oder auch "höherwertige" Klassen, die Dir eine mehr objektorientierte Sicht bieten können. Wobei wir damals der gleichen Meinung waren wie wir es heute sind: numerischer oder astronomischer Code wird dadurch nicht besser, dass man mit der "alles sind Objekte und Klassen"-Brille draufguckt. Es gibt einige Datenstrukturen wie Vektoren und Matrizen, wo sich Klassen anbieten. Doch viele Konzepte in der Ephemeridenrechnung profitieren nicht unbedingt davon, dass man sie als Klassen implementiert und entsprechende Objekte erzeugen muss. Es ist immer von Vorteil wenn nutzender Code sich nicht aufwändig um den Zustand von Objekten kümmern muss. Wenn Du ein Berechnungsobjekt z.B. für Auf- und Untergangszeiten baust und dieses z.B. den Ort kennt, dann muss man erst den Ort (oder natürlich das Himmelsobjekt, oder ob Sommerzeit gilt, ...) korrekt setzen bevor man nach den Zeiten fragen kann. Beim nächsten Aufruf muss man wissen, ob der interne Zustand (und damit die Voraussetzungen, um ein richtiges Ergebnis zu bekommen) immer noch aktuell ist. Je nachdem, wie man dann die Klasse einsetzt, ist sie nicht unbedingt "einfach" zu verwenden. Es kann einfacher sein, freie und zustandslose Funktionen zu verwenden. Da ist von vornherein klar, was man reingeben muss. Zustandsbehaftete Objekte erfordern, dass man eine Reihenfolge von Methodenaufrufen oder ein Protokoll einhält, damit das Ergebnis stimmt. Statt einem "komplizierten" Aufruf hat man mehrere, die zwar einfacher aussehen, aber wenn die Reihenfolge nicht stimmt oder ein Setter vergessen wird, ist Fehlersuche angesagt. Also wird es nicht einfacher, sondern noch komplizierter! Daher gut überlegen, wofür und wann man die elementaren Rechenroutinen in Klassen verpackt ;-)

Viele Grüße
Tom
 
Es gibt dann noch das 4bändige Werk von Manfred Schneider, sollte in Universitätsbibliotheken zu finden sein.

vG
Harald
 
Hi Tom,

ich gebe dir völlig recht, dass man es mit der Objektorientierung nicht übertreiben sollte. Wenn es sich aber geradezu anbietet kann man es schon verwenden. Ich habe noch keine größeren Anwendungen geschrieben und muss mir das erst überlegen. Ich könnte die Bibliothek tatsächlich auf einer "höheren Ebene" einsetzen, also danke für die Anregung.

Den Code komplett aus dem Buch raus zulassen macht für dieses Buch natürlich wenig Sinn. :)





@Harald: Hallo Harald; danke sehr für den Tipp! :huhu:


Gruß
Christian


PS: Ich hab mir den Code nun runtergeladen... :smiley61:
 
Hi Zusammen,

ich würde in einem Buch, welches sich um den numerischen Umgang mit einem Formelwerk dreht auch eher wenig Objektorientierung einsetzen, weil dadurch letztendlich der Rechenweg "durch den Code verteilt" wird. Der Rechenweg an sich lässt sich durch strukturierte Programmierung oftmals besser verfolgen, als sich durch die Implementierungen diverser Base-Klassen zu hangeln, um einen vollständigen Rechenweg zusammen zu bekommen.
Daher beisst sich meiner Meinung nach der Anspruch, eine effiziente Library zu bieten mit dem Anspruch, Lehrbuch Code bezüglich der Algorithmen zu liefern. Da würde ich auf Kosten von Code- und Berechnungseffizienz mehr Wert auf einen deutlich im Code sichtbaren Rechenweg legen. Wie man einen solchen Rechenweg dann in konkrete Programmierung (und vor allem in eine Entwicklungsumgebung, die der Buchautor gar nicht kennen kann) umsetzt, klärt das Programmierhandbuch.
Ich möchte an dieser Stelle auch einmal darauf verweisen, dass die Berechnungen heute für die Diversität an mobilen Applikationen, aber auch für interessante Embedded-Anwendungen gefragt sind.

Clear Skies
Sven
 
Hallo Christian,

ich habe zwar der Vollständigkeit halber die "Grundlagen" von Guthmann hier reingepostet, würde dir aber eher empfehlen, andere Grundlagen herzunehmen, Thomas hat eh schon erläutert, wie sein Buch gedacht ist/war ;)
Der Guthmann ist eher theoretisch und nicht für das praktische Programmieren gedacht.

@Sven:
Zitat von Sven_Wienstein:
Hi Zusammen,

ich würde in einem Buch, welches sich um den numerischen Umgang mit einem Formelwerk dreht auch eher wenig Objektorientierung einsetzen, weil dadurch letztendlich der Rechenweg "durch den Code verteilt" wird. Der Rechenweg an sich lässt sich durch strukturierte Programmierung oftmals besser verfolgen, als sich durch die Implementierungen diverser Base-Klassen zu hangeln, um einen vollständigen Rechenweg zusammen zu bekommen.

Für ein Buch hast du wahrscheinlich Recht. Ich finde aber eine strukturierte Auslagerung in Klassen keineswegs unübersichtlich. Die Klassen machen halt immer genau das, was sie sollen, man bekommt von dort seine Antworten und rechnet damit weiter. Wenn ich für jedes Problem den Code von vorn bis hinten "durchschreiben" müsste wär das mir persönlich zu aufwändig. Sicherlich, der Rechenweg ist leichter nachzuvollziehen, und für Lernzwecke vielleicht der bessere Weg. Aber sobald ein Projekt größer wird ist das dann auch bald relativ umständlich. Just my 2€ ;)

cs,
harald

--
 
Hallo Harald,

wie gesagt, ich meine das für ein Lehrbuch, nicht für eine ordentliche Code-Umsetzung an sich. Wobei sich hier aus der Entwicklungsumgebung ergibt, wie konsequent objektorientiert man sein darf. Wobei es natürlich immer hilft, die Methoden auch wirklich nach dem zu benennen, was sie exakt tun. Das macht dann auch objektorientierten Code "lehrbuchfähig".

Clear Skies
Sven
 
Hallo Freunde der Programmierung,
ich möchte nochmal erwähnen, dass die Frage "wieviel Objektorientierung" sich nicht nur an didaktischen Aspekten orientieren sollte. Zustandsbehaftung ist eine Bürde für Code, der eine Bibliothek oder ein Framework verwendet. Es gibt umfangreiche Überlegungen dazu, wie Architekturen so etwas vermeiden können ("Shared Nothing", idempotente Methoden, Stateless Beans). Letztlich geht es beim Design immer um das Selbe: vermeiden von Abhängigkeiten. Auch die Verwendung eines zustandsbehafteten Objekts bringt eine Abhängigkeit hinein, die zu Problemen führen kann.

Von den Eigenschaften der Entwicklungsumgebung habe ich mich bisher nie leiten lassen. So habe ich z.B. Refactorings auch ohne Unterstützung der IDE gemacht.

Meine Vorgehensweise zum OO-Design orientiert sich vor allem an den Büchern von Greg Larman "Applying UML and Patterns" und von Arthur Riel "Object Oriented Design Heuristics". Wer sich nicht gleich die Bücher kaufen will: mal in der Wikipedia nach GRASP ("General Responsibility Assignment Software Patterns") gucken. Das ist die Essenz des Buchs von Larman.

Viele Grüße
Tom
 
Hallo Tom,

ab der Stelle wird's philosophisch und das sollte man dann lassen. Ich meine, dass der Leitgedanke sein sollte, dass der Rechenweg nachvollziehbar ist. Bei der Umsetzer muss jeder Programmierer nach eigenem Können und Wollen entscheiden. Oder zumindest meine ich, dass man dem Leser diese Freiheit gewähren sollte.

Clear Skies
Sven
 
Hallo Leute,
Ich bin kein Programmierer, das mal vorweg. Schreib nur kleine Tools im Bereich E-Learning (im weitesten Sinn ;) ) vor allem im Themengebiet Astronomie, wie zB sowas:
Oppositionsschleifen der äußeren Planeten

Mit so weitgreifenden Strukturen und Denkansätzen setze ich mich (bis dato noch) nicht auseinander, weil ich ja keine Software konstruiere (die auch verkauft wird). Sicherlich wird das dann notwendig.

Die ursprüngliche Frage war ja die Berechnung der Sternzeit, und soweit ich das sehen kann, ist das schon mal gelungen. Es gibt für den "Beginner", der sich durch die Anfänge der astronomischen Berechnungsmethoden quält, genügend kleine Fallstricke, die er zu überwinden hat, sei es mathematischer Natur oder in seiner gewählten IDE :mauer:
Ich schustere meine Sachen meistens erstmal so zusammen, dass sie funktionieren, danach kümmere ich mich dann um Verbesserungen im Code, Lesbarkeit, Kommentierung, Performance, usw.

cs,
harald

--
 
Hallo Harald,

die Frage ist ja nicht, wie "groß" die Software werden soll, sondern einfach nur, welche Zahlen man braucht. Wenn man Zahlen braucht, deren Berechnung aufwendig ist, dann mag deren visualisierung den Eindruck eines kleinen Programms erzeugen - es steckt aber dennoch ein großer Berechnungsaufwand dahinter. Für die Berechnung der Sternzeit muss man nuneinmal die Bahnposition der Erde kennen. Man hat sozusagen Glück, dass durch UTC ein steter Abgleich zwischen Soll und Ist erfolgt, so dass man die Sternzeit wirklich per Formel aus UTC ableiten kann. Für Jupiters Sternzeit=Bahnposition gibt es diesen Abgleich aber nicht - da muss man dann halt die Frage nach der gewünschten Genauigkeit stellen.

Die Schleife "Code hinwerfen, bugfixen, schauen ob das Programm brauchbar ist, nachlegen" ist zwar nicht ungewöhnlich, ich würde aber sagen, dass man das nicht unbedingt als Entwicklungsschema propagieren sollte...
Der Nietnagel, eine der Figuren des Hansi Kraus, hat mal was brauchbares gesagt: "Man muss nachdenken, was man tut."

Clear Skies
Sven
 
Hallo Sven,

wenn man anfängt, Astroprogramme zu schreiben, dann steht i.d.R. der Rechenweg im Vordergrund und ein Einsteiger schlägt sich mit den Nettigkeiten der Programmiersprache und den Macken (oder noch nicht verstandenen Konzepten) der Entwicklungsumgebung herum. So ist halt nun der Einstieg, das war bei mir auch nicht anders.

Wenn man dann dranbleibt, wird der Anteil der eigentlich mit Astronomie befassten Codeteile immer geringer. Alles mit grafischer Oberfläche katapuliert einen sofort (auch wenn man das nicht so bestellt hat) in eine viel komplexere Programmierwelt. Wenn man dann irgendwelche grafischen Darstellungen erzeugen will, ist das wieder eine neue Baustelle. Oder mit Hardware sprechen. Oder Online-Funktionen realisieren (Daten runterladen oder so etwas).

Entweder bleiben Astroprogramme kleine Dinger, die jemand meistens deshalb schreibt, um die Thematik sich selbst zu erschließen. Es ist ja schön, wenn man eine Sache versteht und so auch die Neugier befriedigt. Das alleine kann Grund genug sein, sich mit Astro-Programmierung zu beschäftigen. Oder der einzige, denn heutzutage gibt es für praktisch alles schon fertige Programme. Wofür muss man denn noch was Neues entwickeln, weil es nichts gibt?

Aber es ist gar nicht so selten, dass aus einem experimentellen oder neugiergetriebenen kleinen Projekt dann mehr wird. Und dann ist es enorm hilfreich, wenn man Orientierung finden kann, wie man da weiter vorgeht. Sonst verheddert man sich irgendwann und es entsteht eher Frust als das gewünschte Ergebnis. Was hätte ich mir in den späten Neunzigern (als ich mit E&T angefangen hatte) mehr gewünscht als jemanden, der mir Orientierung und Tipps hätte geben können.

GRASP ist z.B. ein "Kondensationskeim", der mir damals enorm geholfen hätte. Kam aber erst Jahre später. Weil ich das Buch toll finde, habe ich es rezensiert. Meine älteren Rezensionen zeigen, bei welchen Büchern ich damals versuchte, Orientierung zu finden.

Viellicht hilft es auch hier jemandem. Dann hat sich der kleine Beitrag schon gelohnt. Wenn der Anspruch geringer ist, braucht man sich nicht darum kümmern. Zu Themen wie Bildverarbeitung, Teleskopbau oder anderen Spezialitäten werden hier oft Tipps oder Ratschläge gegeben, die auch nicht für jeden Besucher relevant sind. Dafür gibt es doch Foren! Wer als Einsteiger versucht, in Softwareentwickler-Foren Orientierung zu finden, dem droht eher die völlige Verwirrung als die schnelle Einsicht ;-)

Viele Grüße
Tom
 
Hallo Leute,

mal ein kleines Update: Ich habe mir ein Buch bestellt und es auch vorliegen, was mich auf den ersten Blick wirklich begeistert und was auch noch nicht vorgeschlagen wurde :). Methods of Orbit Determination for the Micro Computer. Die Bücher von Willmann-Bell sind von der Qualität immer sehr schön. Soweit ich es überblicken kann, verbindet dieses Buch die Theorie mit der Anwendung in sehr übersichtlicher harmonischer Weise. Die Notation ist mathematisch sauber und modern (wahrscheinlich Latex). Ich habe mir den Part über die Bewegungsgleichungen durchgelesen und fand ihn schon mal sehr schön. Neben durchgerechneten numerischen Beispielen ist der Code immer auch noch in einer Art Pseudocode erläutert, also wann welche Gleichung bzw. Gesetzt wo verwendet wird. Dass die Programm in BASIC sind ist nicht schlimm, denn dann besteht ein Anreiz sie in C++ oder anderweitigen Umgebungen (Matlab etc.) umzusetzen. Mit dem "Pseudocode" wird das umso leichter. Als ganz großes Manko des Buchs "Astronomie mit dem PC" hatte ich ja genannt, dass der C++Code teils mit zur Erklärung herangezogen wird. Wenn ich nun dieses Buch sehe, wird klar, wie es besser geht. Das Buch von Dan Boulet bietet genau die richtige Mischung aus Theorie und Praxis, die ich mir gewünscht habe. Alles wird sauber und Schrittweise erklärt, es besteht dennoch ein recht hohes mathematisches Niveau. Ein weiterer Vorteil ist seine Spezialisierung auf Bahnbestimmungen, wobei man aber dennoch Grundlegendes über Zeit und Koordinatensysteme mit erlernen muss. Toll!



Ich finde Haralds herangehsweise keineswegs schlecht, denn praktisch wird man wohl als Hobbyprogrammierer so an kleinere Projekte herangehen müssen. Als professioneller Programierer stellt sich dieses Vorgehensproblem nicht, weil man an Großprojekten Teilprojekte übernehmen wird, die dann eingebunden werden. Es gibt sogar ein Vorgehensmodel was Haralds Vorgehen wiederspiegelt, nämlich die Inkrementelle Entwicklung.


Wenn ich objektorientiert Programmiere bedeute das keinesfalls, dass der Code zur eigentlichen Berechnung verteilt wird. So können beispielsweise Funktionen von einem Objekt aufgerufen werden, die sich in einer anderen Bibliothek befinden, die nur zur Berechnung dient also die Funktionen etc. bereitstellt. Die Objektorientierung dient dann eher der Übersichtlichkeit für den Programmierer und lässt eine abstraktere Sicht zu. Auch ist es doch gerade ein besonderer Vorteil der objektorientierten Programmierung, den Status eines Objekts besonders abzusichern. So können beispielsweise die Setter-Methoden einer Klasse darauf achten, dass die Attribute der Klasse immer in einem gültigen Zustand sind.



Gruß
Christian
 
Hallo Christian,


ich weis jetzt nicht wie viel Erfahrung du mit astronomischen Berechungen hast, aber willst du wirklich mit der Bahnbestimmung beginnen? :gutefrage:
Das ist wirklich nicht mehr einfach zu implementieren, bei der klassischen Methode nach Gauss stößt du irgendwann auf die Langeragesche Schlüsselgleichung 8. Grades, die neben der Erdbahnlösung auch zwei weiter positive Lösungen für die Entfernung zur Sonne liefert. Es gibt hier Fälle, wo mit drei Beobachtungen nicht entschieden werden kann, welche Lösung nun die Richtige ist...

Infos über ein modifiziertes Verfahren, dass sich besser implementieren lässt, findest du hier:

http://www.koller.info/science/docs/bahn.pdf

Ich würde mich aber zuerst mit der Ephenmeridenrechung beschäftigen, das deutlich einfacher... :super:

CS
Wolfgang
 
Hallo Christian,

Sorry, hab ich das Buch von Boulet nicht angegeben? ;)
Ich hab das Buch auch, allerdings war es ganz weit linkls hinten in meinem Regal verschwunden. Habe es nie wirklich benötigt, weil ich mit BASIC nie so richtig warm wurde :teufelgrr:

Aber du hast Recht, die Beschreibungen sind sehr gut, weil die Schritte erklärt werden. Diese "Pseudo-Code Anleitungen" könnte man natürlich auch mit anderen Sprachen abarbeiten.
Was das mathematische Niveau betrifft würde ich es noch nicht als "sehr" hoch bezeichnen, wenngleich eine gewisse Vorbildung sicherlich gut ist. Das Buch zeigt auch sehr schön, welchen zusätzlichen Probleme bei solchen Berechnungen "plötzlich" auftauchen und in eigene Routinen ausgelagert werden sollen/müssen. Da hat man plötzlich solche profanen Sachen wie Gauß-Elimination, Nullstellenprobleme oder lineare Regression dastehen. Naja, jedenfalls viel Spass!

cs,
harald

--
 
Hallo Leute,

vielen Dank für Eure weiteren Rückmeldungen und Tipps. Vorneweg: Ich möchte Toms Buch keinesfalls schlecht machen, vielleicht ist es im Moment einfach zu viel Stoff. Da ist es für mich besser, mich auf eine Sache zu konzentrieren.


Hallo Wolfgang,

ja, das Thema scheint nicht so leicht. Ich werde mich da erst mal auf die Bahnberechnung ohne Störungsterm konzentrieren, was auch der erste Schritt in dem Buch ist. Da habe ich schon entdeckt, dass das Problem ein Anfangswertproblem ist, auf das man numerische Lösungsmethoden loslassen kann.



Hallo Harald,

ich betrachte das Niveau also recht hoch, weil ich es allgemein nicht so einfach finde, sich das nötige mathematische Wissen anzueignen. Da geht es gleich von Null auf 100, indem man gleich auf ein Anfangswertproblem stößt, das man nur noch numerische lösen kann. Die Notation ist allgemein vektoriell, was auch nicht jedermanns Sache ist. Von daher finde ich es schon schwer, auch wenn man in der Mathematik noch viel abgefahrenere Sachen machen kann. Nicht umsonst gilt ja die Herleitung der Keplerschen Bewegungsgleichungen allein aus den Newtonschen Axiomen als eine der großen Taten des menschlichen Geistes. Das ist keinesfalls trivial. :)





Beste Grüße
Christian
 
Status
Es sind keine weiteren Antworten möglich.
Zurück
Oben