Astronomische Berechnungen für Amateure/ Kalender/ Berechnungen

Aus Wikibooks

Vorbemerkungen[Bearbeiten]

Sie können für die Umsetzung der nachfolgend beschriebenen Algorithmen mit Papier und Bleistift, mit einem Taschenrechner, mit einem Tabellenkalkulationsprogramm wie OOo/StarOffice Calc oder MS Excel, mit Software-Entwicklungswerkzeugen (Programmierumgebung für C, Pascal, Basic, Java, ...) oder mit exotischen Werkzeugen arbeiten. Was Sie bevorzugen, hängt schließlich auch davon ab, was Sie mit den Ergebnissen machen wollen: Um für die kommenden Jahre einen eigenen Kalender mit allen Festdaten berechnen zu können, genügt ein Taschenrechner oder eine Tabellenkalkulation. Wenn Sie aber für eigene, anspruchsvolle Beobachtungen Berechnungen anstellen und die berechneten Daten zusammen mit den beobachteten in einer Datenbank erfassen wollen, dann lohnt sich vielleicht der Aufwand, maßgeschneiderte Software selbst zu entwickeln. In der Schreibweise werden wir uns in der Regel an die Bezeichnungen einer Tabellenkalkulation anlehnen. Beachten Sie im Kapitel „Numerische Mathematik“ die Hinweise zur Genauigkeit und zum Runden.

Es gibt in diesem Kapitel zwei zentrale Algorithmen, alles Andere lässt sich praktisch ausnahmslos darauf zurückführen: Die Algorithmen zur Umrechnung von Kalenderdaten in Julianische Daten und zurück auf der einen Seite, die Berechnung des Osterdatums mittels der Osterformel auf der anderen Seite.


Sprung zurück nach oben.


Osterdatum[Bearbeiten]

Es sei vorausgeschickt, dass die Tabellenkalkulationsprogramme heute eine Funktion implementiert haben, die es direkt gestattet, das Osterdatum für ein bestimmtes Jahr im gregorianischen Kalender zu berechnen. In OOo Calc heisst diese Funktion =OSTERSONNTAG(JJJJ), wobei JJJJ die vierziffrige Jahrzahl desjenigen Jahres ist, für das Ostern berechnet werden soll. Korrekterweise liefert sie für JJJJ < 1583 – also für Daten im julianischen Kalender – die Fehlermeldung #WERT!, ebenso für Jahrzahlen ≥ 10 000.

Wer das Osterdatum selber berechnen will oder muss, greift auf eine sog. Osterformel zurück. Gauss war der erste und sicherlich der bekannteste, nicht aber der einzige, der eine Osterformel entwickelt hat. Wir geben hier eine andere Formel wieder. Ihr Autor ist etwas geheimnisvoll: J. Meeus zitiert ihn als Spencer Jones[1]. Andere nennen Samuel Butcher, einen irischen Bischof der anglikanischen Kirche als Autor. Wieder andere sagen, dass der Autor anonym sei. Tatsache scheint zu sein, dass der Algorithmus in Butcher's Ecclesiastical Calendar von 1876 erscheint, ebenso im Buch General Astronomy von Jones aus dem Jahre 1922. Der eigentliche Autor scheint aber ein anonymer Korrespondent der Zeitschrift Nature zu sein, wo der Algorithmus 1876 erstmals abgedruckt wird. Wie dem auch sei – der Algorithmus ist von beeindruckender Eleganz und berechnet im gregorianischen Kalender das korrekte Osterdatum, ohne eine Ausnahmeregelung zu bemühen.

Wenn JJJJ die Jahrzahl ist (JJJJ ist eine ganze Zahl, JJJJ > 1582, also im gregorianischen Kalender), dann gilt (als Anwendung in den beiden hintersten Spalten gleich die Rechnungen für JJJJ = 1981):

  Dividiere               durch   Quotient  Rest           Q      Rest

  ---------------------------------------------------------------------

  JJJJ                       19       —       a             —        5

  JJJJ                      100       b       c            19       81

  b                           4       d       e             4        3

  b + 8                      25       f       —             1        —

  bf + 1                   3       g       —             6        —

  19a + bd  - g + 15      30       —       h             —       29

  c                           4       i       k            20        1

  32 + 2e + 2ihk        7       —       m             —        6

  a + 11h + 22m             451       n       —             1        —

  h + m – 7n + 114           31       p       q             4       18


  Es ist p der Monat (3: März; 4: April) und q + 1 der Tag des  Osterfestes; 
  folglich: Ostern fand 1981 am 19. April statt.


Das Osterdatum 1981 haben wir schon im Kapitel „Festkalender“ als Übung berechnet. Dort war es eines der Ausnahmedaten. Der hier vorgestellte Algorithmus berechnet das Datum richtig, es braucht keine Ausnahmeregelung. a + 1 liefert im übrigen die Goldene Zahl des Jahres JJJJ.

Wenn Sie den Algorithmus selber programmieren, müssen Sie sicherstellen, dass die Bedingungen JJJJ > 1582 und JJJJ eine ganze Zahl eingehalten werden – andernfalls entstehen unsinnige Resultate.


Sprung zurück nach oben.


Julianisches Datum[Bearbeiten]

Das Julianische Datum entfaltet seine Mächtigkeit erst mit dem folgenden Algorithmus, mit dem man ein Kalenderdatum in ein Julianisches Datum und ein Julianisches Datum in ein Kalenderdatum verwandeln kann.

Wir betrachten zunächst den Algorithmus, wie ein Kalenderdatum der Form JJJJ.MM.DD.dd – wo DD.dd den Tag mit allfälligen Tagesbruchteilen bezeichnet – in das entsprechende Julianische Datum JD verwandelt werden kann:

1) Falls MM = 1 oder 2 ist, ersetze man JJJJ durch JJJJ – 1 
   und MM durch MM + 12; ist MM > 2, so lasse man MM 
   und JJJJ unverändert; m. a. W.: handelt es sich um ein Datum 
   im Januar oder Februar, so setze man es als Datum im 13. bzw. 
   14. Monat des Vorjahres.

2) Im gregorianischen Kalender berechne man

      

   Im julianischen Kalender (dh. JJJJ.MM.DD vor 1582.10.15) 
   setze man B  =  0.

3) Das gesuchte Julianische Datum JD ist dann

      
 
                 


B ist die Korrektur zwischen julianischem und gregorianischem Kalender (auch als Sonnengleichung bezeichnet). Für die Jahre zwischen 1900 und 2099 ist B = –13.


Beispiel:

Berechnen Sie das Julianische Datum des 30. März 2008, 2 h MEZ ( = 1 h UT), dem Zeitpunkt der Umstellung auf Sommerzeit. Es ist JJJJ = 2008, MM = 3, DD.dd = 30.041667 (1 h UT entspricht 1/24 eines Tages). Damit ist A = 20, B = –13 und JD = 2 454 555.541667.

Berechnen Sie das Julianische Datum des 20. Februar 9 v. Chr. Es ist JJJJ = –8, MM = 2 und DD.dd = 20. Weil MM = 2, ist JJJJ = –9 und MM = 14 zu setzen. Es handelt sich um ein Datum im julianischen Kalender, folglich ist B = 0. Daraus folgt JD = 1 718 185.5.

Es folgt der umgekehrte Algorithmus, bei dem aus dem Julianischen Datum das Kalenderdatum berechnet wird. Gegeben ist also das Julianische Datum JD, dann gilt:

 1) Addieren Sie 0.5 zum JD, also JD1 = JD + 0.5
 
 2) N = Ganzzahl(JD1) und F = JD1 – N ; N ist der 
    ganzzahlige Teil des JD1, F der Bruchteil nach dem Dezimalpunkt
 
 3) Wenn N < 2 299 161, dann ist A = N; sonst berechne man
 
        
 
        
 
 4) Man berechne die Grössen B, C, D und E gemäss den Vorschriften:
 
        
 
        
 
        
 
        
 
 5) Man findet dann den Tag DD.dd, den Monat MM und das Jahr JJJJ 
    mit folgenden Rechenvorschriften:
 
        
 
        
 
        


Beispiel:

Welchem Kalenderdatum entspricht JD = 2 452 463.6875? Es ist JD1 = 2 452 464.1875, N = 2 452 464, F = 0.1875; alpha = 16, A = 2 452 477, B = 2 454 001, C = 6718, D = 2 453 749, E = 8. Dann folgt: DD.dd = 8.1875, MM = 7, JJJJ = 2002, also der 8. Juli 2002 um 04½ h UT frühmorgens.

Überprüfen Sie, ob Ihre Implementation für JD = 2 299 159.5 das Datum 4. Okt. 1582 und für JD = 2 299 160.5 das Datum 15. Okt. 1582 liefert, also den Kalendersprung der gregorianischen Kalenderreform korrekt wiedergibt. Der Algorithmus erfasst den Sprung korrekt!


Mit diesen beiden Algorithmen ist man in der Lage, auch sämtliche „Abstandsfragen“ zu lösen: der Abstand in Tagen zwischen zwei gegebenen Daten entspricht der Differenz ihrer Julianischen Daten. Ebenso löst man die Frage mit den Julianischen Daten, wenn es darum geht, das Datum zu bestimmen, das eine Anzahl Tage vor oder nach einem gegebenen Kalenderdatum liegt. Ein Spezialfall ist schliesslich der „Tag des Jahres“, „Tag im Jahr“, oder kurz „Jahrtag“: die Tage eines Jahres werden mit Beginn am 1. Januar bis 365 bzw. 366 durchgezählt. Wenn das erste Datum der 0. Januar des aktuellen Jahres = 31. Dezember des Vorjahres ist, so ist die gesuchte Zahl die Differenz zwischen den beiden Julianischen Daten.


Beispiele:

  • Wie viele Tage liegen zwischen dem 1. September 1939 (A) und dem 8. Mai 1945 (B)? Es ist JD(A)= 2 429 507.5, JD(B) = 2 431 583.5 und JD(B) – JD(A) = 2076 Tage. Also so lange dauerte der 2. Weltkrieg!
  • An welchem Tag (B) kann eine Person, die am 13. September 1952 (A) geboren wurde, 10 000 Tage feiern? Es ist JD(A) = 2 434 268.5, JD(B) = JD(A) + 10 000 = 2 444 268.5, was dem Kalenderdatum 30. Januar 1980 entspricht, also im Alter von knapp 27½ Jahren.
  • Welcher Tag des Jahres ist der 8. Juli a) in einem Schaltjahr; b) in einem Gemeinjahr? a) Nehmen wir als typisches Schaltjahr 2008, dann ist der Unterschied zwischen 0.1.2008 = 31.12.2007 und 8.7.2008 zu ermitteln. JD(A) = 2 454 465.5, JD(B) = 2 454 655.5, JD(B) – JD(A) = 190, bis zum Jahresende verbleiben 366 Tage – 190 Tage = 176 Tage. b) Nehmen wir als typisches Gemeinjahr 2009, dann ist JD(8.7.2009) – JD(31.12.2008) = 2 455 020.5 – 2 454 831.5 = 189, und bis zum Jahresende verbleiben 365 Tage – 189 Tage = 176 Tage.


Sprung zurück nach oben.


Wochentage[Bearbeiten]

Da die Folge der Wochentage ebensowenig wie die Zählung der Julianischen Tage bei der Kalenderreform unterbrochen wurde, eignen sich die Julianischen Daten ausgezeichnet, um daraus den Wochentag eines bestimmten Datums zu ermitteln: bei der Division durch 7 liefern die Julianischen Daten gleicher Wochentage den gleichen Rest, da sie sich um ein ganzzahliges Vielfaches von 7 unterscheiden. Man muss jetzt nur noch wissen, dass der Starttag der julianischen Zählung, der 1. Januar 4713 v. Chr., ein Montag war. Das führt zu folgendem Algorithmus für die Berechnung des Wochentags:

 1) Man bestimme das Julianische Datum JD für 0 h UT des Tages, 
    dessen Wochentag man berechnen will

 2) Man addiere 1.5 zum Julianischen Datum JD, wodurch eine ganze Zahl 
    entsteht: JD1 = JD + 1.5 (JD um 0 h UT endet immer auf .5)

 3) Man dividiere JD1 durch 7 und bestimme den Divisionsrest

 4) Der Divisionsrest bestimmt den Wochentag: bei 1 ist es ein Montag, 
    bei 2 ein Dienstag, bei 3 ein Mittwoch, bei 4 ein Donnerstag, 
    bei 5 ein Freitag, bei 6 ein Samstag und bei 0 (7) ein Sonntag


Beispiel:

Welchem Wochentag entspricht das Datum 20. Januar 1983? Es ist JD = 2 445 354.5; JD1 = JD + 1.5 = 2 445 356; Rest(2 445 356;7) = 4, also war es ein Donnerstag.

Sprung zurück nach oben.


Festkalender[Bearbeiten]

Bei den fixen Festtagen geht es darum, den Wochentag zu bestimmen. Dazu verwendet man das eben vorgestellte Verfahren. Für die Berechnung der beweglichen Festtage startet man mit der Bestimmung des Osterdatums mittels der Osterformel. Ist dieses Datum bekannt, können alle weiteren beweglichen Festtage berechnet werden, denn sie liegen eine feste Anzahl Tage vor oder nach Ostern.

Bei den halbfixen Festtagen sind folgende Überlegungen nötig, die an zwei Beispielen erläutert werden: Muttertag und Adventssonntage. Zur Erinnerung: Muttertag ist der zweite Sonntag im Mai, der 4. (und letzte) Advent ist der Sonntag unmittelbar vor Weihnacht.

  1) Man bestimme den Wochentag WT des 1. Mai; ist WT = 0, 
     also der 1. Mai selber ein Sonntag, so setze man WT = 7
 
  2) 7 – WT gibt die Anzahl Tage, die vom 1. Mai an bis zum ersten 
     Sonntag im Mai verstreichen müssen; dieser hat also das Tagesdatum 
     D = 1 + (7 – WT) = 8 – WT. Eine Woche später, 
     also am Tag D + 7 = 15 – WT ist Muttertag


Für die Adventssonntage sind die folgenden Überlegungen relevant.

  1) Man bestimme den Wochentag WT von Weihnacht (25.12.); 
     ist WT = 0, also Weihnacht selber ein Sonntag, 
     dann setze man WT = 7

  2) WT gibt an, wieviele Tage vor Weihnacht der 4. Advent 
     stattfindet; sein Tagesdatum ist 25 – WT.

  3) Der 3., 2. und 1. Advent liegen 7, 14 und 21 Tage vor dem 4. Advent

  4) Der Totensonntag liegt eine Woche vor dem 1. Advent


Sprung zurück nach oben.


Kalenderwoche[Bearbeiten]

Zur Berechnung der Kalenderwoche entsprechend ISO 8601 gehen Sie wie folgt vor:

 1) Man bestimme den Wochentag WT1 des 1. Januars des Jahres; 
    ist WT1 = 0, also Neujahr ein Sonntag, dann setze man WT1 = 7

 2) Ist WT1 = 4 oder - sofern es sich bei diesem Jahr um ein Schaltjahr 
    handelt - auch WT1 = 3, dann hat dieses Jahr 53 Kalenderwochen 
    (WMax = 53), andernfalls nur 52 (WMax = 52).

 3) Ist 1 ≤ WT1 ≤ 4, Neujahr also ein Mo, Di, Mi oder Do, dann ist 
    der Montag der ersten Kalenderwoche des Jahres (WT1 – 1) Tage vor 
    dem 1.1. und ist entweder Neujahr selber (WT = 1) oder ein Datum 
    im Dezember des vorangehenden Jahres; sein Julianisches Datum ist JD1

 4) Ist WT1 > 4, Neujahr also ein Fr, Sa oder So, dann gehören die 
    ersten (8 – WT1) Tage des Januar noch zur letzten Kalenderwoche 
    des vorangehenden Jahres, und der Montag der ersten Kalenderwoche ist 
    (8 – WT1) Tage nach dem 1.1.; sein Julianisches Datum ist JD1

 5) Ist WT1 > 4 und das Datum vor dem Montag der ersten Kalenderwoche, 
    dann ist KW = 52 oder KW = 53; KW = 53 ist nur möglich, 
    wenn WT1 = 5, oder wenn WT1 = 6 und das Vorjahr war ein 
    Schaltjahr (es handelt sich bei dieser Ausnahmeregelung im 
    Maximum um die ersten drei Tage im Jahr)

 6) Für alle anderen Fälle ausser den in 5) erwähnten geht man 
    wie folgt vor: wenn JD das Julianische Datum der gesuchten Angabe 
    ist, dann ist 
    'mod' bezeichnet darin den Rest einer ganzzahligen Teilung.  


Beispiele:

  • In welche Kalenderwoche fiel der 24. Mai 1986? Es ist WT1 = Wochentag(1.1.1986) = 3 (also ein Mittwoch), wir haben Fall 3): der Montag der ersten Kalenderwoche liegt WT1 – 1 = 2 Tage vor dem 1.1.1986, ist also der 30.12.1985 und JD1 = 2 446 429.5; es ist JD = 2 446 574.5, somit KW = 21 – der 24.5.1986 war übrigens ein Samstag, also der zweitletzte Tag der KW 21.
  • In welche Kalenderwoche fällt der 2. Januar 2010? Es ist WT1 = 5, der Montag der ersten Kalenderwoche ist der [1 + (8 – 5)]. Januar, also der 4. Januar 2010, wir haben Fall 5): es ist KW = 53, da WT1 = 5 ist (tatsächlich gehört 2009 zu jenen Jahren, die 53 Kalenderwochen haben).
  • In welche Kalenderwoche fällt der 30. Dezember 2014? Es ist WT1 = 3, und da es sich bei 2014 nicht um ein Schaltjahr handelt ist WMax = 52, der Montag der ersten Kalenderwoche liegt WT1 – 1 = 2 Tage vor dem 1.1.2014, ist also der 30.12.2013, wir haben Fall 6): es ergibt sich JD - JD1 = 365, daraus errechnet sich die Ganzzahl des Bruchs zu 52. Der Rest einer ganzzahligen Teilung von 52 durch (WMax = ) 52 ist 0, damit haben wir die KW = 1.


Sprung zurück nach oben.



Nachweis:

  1. Astronomische Algorithmen; Jean Meeus; 1992, Verlag Johann Ambrosius Barth, Leipzig/Berlin/Heidelberg; ISBN 3-335-00318-7