Kalenderberechnungen

Inhalt

• Umrechnungsformeln
• Algorithmen zum Jüdischen Kalender
• Berechnung eines Schaltrhythmus'

Umrechnung von Daten verschiedener Kalender

Die hier vorgestellten Gleichungen können als Grundlage zur Programmierung dienen, aber auch zur Umrechnung mit Taschenrechner, Papier und Bleistift. Denkbar ist zum Beispiel eine Umsetzung mit Hilfe eines programmierbaren Taschenrechners. Die Wahl des Julianischen Datums als Bezugsgröße zur Umrechnung von Daten der anderen Kalender bringt es mit sich, dass die angegebenen Formeln nur für Daten ab dem 1. Januar 4713 v. u. Z. (nach dem Julianischen Kalender), dem Startpunkt des JD, verwendet werden können. Dieser frühe Startpunkt macht das JD aber auch geeignet als Bezugsgröße für alle Umrechnungen: Die Notwendigkeit der Umrechnung genauer Daten aus der Zeit vor 4713 v. u. Z. ist kaum zu erwarten.

Die Algorithmen können natürlich nicht die wirkliche Einführung oder Abschaffung von Kalendern berücksichtigen.

JD bezeichnet im Folgenden das Julianische Datum eines Tages um 12 Uhr Weltzeit. Da der Tag in der Julianischen Zählung um 12 Uhr Weltzeit beginnt, ist es wichtig, dass nicht einfach evtl. vorhandene Tagesbruchteile eines JD weggelassen werden, weil der ganzzahlige Anteil des JD vor 12 Uhr Weltzeit um eins geringer ist.

Die verwendeten Bezeichnungen sollen zunächst kurz erläutert werden.

Symbol  Bedeutung
JDJulianisches Datum von 12 Uhr Weltzeit
ΔOffset
Ndseit einem gewählten Startpunkt verflossene Tage
N100Anzahl der verflossenen 100-Jahres-Zyklen
R100im laufenden 100-Jahres-Zyklus verflossene Tage
L100Länge eines 100-Jahres-Zyklus in Tagen
Nn / Rn / Lnanalog für n-Jahres-Zyklen
NMim laufenden (angepassten) Jahr verflossene Monate
TTag eines Datums
MMonat eines Datums
JJahr eines Datums
M'angepasster Monat eines Datums
J'angepasstes Jahr eines Datums

Definitionen

Angepasstes Jahr und angepasster Monat

Die innere Struktur eines Jahres des Julianischen oder Gregorianischen Kalenders hat den Nachteil, dass der Schalttag am Ende des zweiten Monats, also mitten im Jahr eingefügt wird. Für die Berechnungen wäre ein am Ende des Jahres liegender Schalttag günstiger. Um dies zu erreichen, werden der angepasste Monat und das angepasste Jahr eingeführt, indem die Monate Januar und Februar als 13. bzw. 14. Monat des Vorjahres gezählt werden. Dadurch ist ein Jahr definiert, dass mit dem 1. März (01. 03.) beginnt und mit dem 28. Februar (28. 14.) bzw. dem 29. Februar (29. 14.) endet.

Um eine Fallunterscheidung zu vermeiden, kann dieser Anpassungsvorgang auch in Formeln gefaßt werden:

M' = ((M + 9) mod 12) + 3
J' = J - 1 + int((M + 7) / 10)

Zum Beispiel haben die angegebenen Variablen für den 22. Januar 1905 die Werte

T = 22,
M = 1,
J = 1905,
M' = 13 und
J' = 1904.

Für die Umwandlung von angepasstem Monat und Jahr gelten die Formeln:

M = ((M' + 11) mod 12) + 1
J = J' + int(M' / 13)

Dieses angepasste Datum wird neben dem Julianischen Kalender in allen Kalendern verwendet, die die innere Struktur des Julianischen Kalenders beibehalten und sich von ihm durch modifizierte Schaltregeln unterscheiden. Das sind der Gregorianische Kalender, der Neujulianische Kalender und der Kalendervorschlag von Mädler.

Zyklus

Schaltregeln von Kalendern basieren auf Zyklen bestimmter Längen. Als kleinste Einheit für die Betrachtung von Schaltrhythmen wird ein Kalenderjahr betrachtet. Dieses kann ein Gemeinjahr oder ein Schaltjahr sein. Meist ist ein Schaltjahr einen Tag länger als ein Gemeinjahr.

Ein Zyklus ist nun eine Abfolge von Gemein- und Schaltjahren in bestimmter Anordnung. Dabei soll der Zyklus so definiert sein, dass er nicht nochmals in untereinander gleiche Zyklen aufgelöst werden kann. Zum Beispiel könnte man einen Zyklus von acht Kalenderjahren definieren, von denen die ersten drei Gemeinjahre sind, das vierte ein Schaltjahr, das fünfte bis siebente Jahr wieder Gemeinjahre und schließlich das achte Jahr wieder ein Schaltjahr ist. Leicht ist jedoch zu sehen, dass sich dieser Zyklus auch als zwei Zyklen darstellen lässt, die jeweils drei Gemeinjahre, gefolgt von einem Schaltjahr umfassen. Der größten dieser Zyklen eines Kalenders ist der Hauptzyklus.

Unterzyklen

Diese Definition von Zyklen soll nun noch ausgeweitet werden. Ein Zyklus kann nicht nur durch eine bestimmte Abfolge von Kalenderjahren definiert sein, sondern auch durch eine festgelegte Abfolge von gleichartigen Unterzyklen, die von einem abschließenden Unterzyklus gefolgt werden, der sich von den anderen Unterzyklen unterscheidet. Als Beispiel können zwei im Gregorianischen Kalender verwendete Zyklen genannt werden: Zunächst gibt es den kleinsten Zyklus, der aus drei Gemeinjahren, gefolgt von einem Schaltjahr besteht. Dieser 4-Jahres-Zyklus ist aber gleichzeitig Unterzyklus eines 100-jährigen Zyklus' aus 24 4-Jahres-Unterzyklen und einem abschließenden Unterzyklus aus vier Gemeinjahren. (Diese Anordnung ergibt sich durch die nicht durch 400 teilbaren Jahrhundertjahre, die Normaljahre bleiben.)

Mit dieser Definition wird erreicht, dass ein hinzuzufügender oder wegzulassender Schalttag stets am Ende des Zyklus' steht. Durch die oben beschriebene Definition erfüllt das angepasste Jahr, das mit dem 1. März beginnt und mit dem 28. Februar (bzw. im Falle eines Schaltjahres mit dem 29. Februar) endet, dieser Bedingung.

Verkürzte und verlängerte Zyklen

Man kann nun den Charakter eines Zyklus' definieren. Er wird durch die Länge des letzten Unterzyklus bestimmt: Ist dieser Unterzyklus länger als die anderen Unterzyklen, so ist der Gesamtzyklus ein verlängerter Zyklus. Ist er kürzer, so handelt es sich entsprechend um einen verkürzten Zyklus.

Beispiel 1: Der 4-Jahres-Zyklus des Julianischen und Gregorianischen Kalenders ist ein verlängerter Zyklus, denn die ersten drei Jahre haben jeweils 365 Tage, während das abschließende Schaltjahr 366 Tage hat und damit einen Tag länger ist.
Beispiel 2: Der 100-Jahres-Zyklus des Gregorianischen Kalenders setzt sich aus Unterzyklen von jeweils drei Normaljahren und einem Schaltjahr zusammen. Diese werden von einem abschließenden Unterzyklus gefolgt, der aus vier Gemeinjahren besteht. Somit ist dieser letzte Unterzyklus einen Tag kürzer als die vorhergehenden. Daraus folgt, dass es sich um einen verkürzten Zyklus handelt.

Herleitung der Formeln

Berechnung eines Datums aus dem JD

Der Kalender habe einen Hauptzyklus mit n Jahren. Die Formeln zur Berechnung eines Kalenderdatums aus dem JD beruhen darauf, durch Addition eines Absolutwertes Δ die Anzahl Nd der seit dem Beginn eines dieser Zyklen verflossenen Tage zu berechnen,

Nd = JD + Δ.

Dies entspricht einer Tageszählung, die mit einem Zyklus des Kalenders beginnt. Diese Anzahl wird nun durch die Länge (Ln, worin n die Länge des Zyklus' in Jahren ist) des größten dem jeweiligen Kalender zu Grunde liegenden Zyklus' geteilt, wobei nur der ganzzahlige Anteil betrachtet wird, um die Anzahl Nn der seit dem Startpunkt abgelaufenen Zyklen zu bestimmen. Es wird also

Nn = int(Nd / Ln)

berechnet. Danach wird die Anzahl der im aktuellen Zyklus verflossenen Tage berechnet, indem der Teilungsrest Rn der Division von Nd durch die Zykluslänge, also

Rn = Nd mod Ln

berechnet wird.

Mit Rn wird nun ähnlich weiter verfahren. Bei den weiteren Berechnungen muss nun aber eine Besonderheit der verlängerten Zyklen beachtet werden. Ist der Zyklus ein verlängerter Zyklus aus x Unterzyklen mit m Jahren, so würde bei der Berechnung der Anzahl der bereits abgelaufenen Unterzyklen die Division

int(Rn / Lm)

für den letzten Tag des Zyklus genau x ergeben, d. h. der Schalttag am Ende des Zyklus würde als erster Tag eines (x+1)-ten Unterzyklus interpretiert. Um dies zu umgehen kann man das Minimum von x und dem Ergebnis der Division int(Rn / Lm) bilden oder int(Rn / Lm) - int(Rn / Ln) bestimmen. Es ist also

Nm = min(x, int(Rn / Lm)) = int(Rn / Lm) - int(Rn / Ln).

Auch die Bestimmung der Anzahl der im aktuellen Zyklus verflossenen Tage (Rm) kann im Falle eines verlängerten Zyklus' nicht über den Teilungsrest erfolgen, da dieser für den letzten Tag des Zyklus null wäre. Stattdessen zieht man einfach die bis zum Beginn des aktuellen Unterzyklus im gesamten Zyklus abgelaufenen Tage von Rn ab, ermittelt also

Rm = Rn - Nm · Lm.

Auf diese Art und Weise kann nun weiter verfahren werden, bis man N1 und R1 erhalten hat. Für die Ermittlung des Datums im jeweiligen Kalender muss dessen innere Struktur betrachtet werden

Berechnung eines JD aus dem Datum eines Tages in einem bestimmten Kalender

Für diese Berechnungen wird die bisherige Vorgehensweise einfach "umgekehrt". Man ermittelt die Nummer des Tages im laufenden Jahr, und ermittelt durch Division der um einen zweckmäßigen Absolutwert erhöhten Jahreszahl durch die verschiedenen Zykluslängen (in Jahren) die Anzahl der abgelaufenen Zyklen und Unterzyklen. Diese Anzahlen werden dann mit ihren Längen (ausgedrückt in Tagen) multipliziert und ein Absolutwert wieder abgezogen, der die Erhöhung der Jahreszahl berücksichtigt.

Berechnung des Gregorianischen Datums eines Julianischen Datums

Der Gregorianische Kalender basiert auf einem verlängerten 400-Jahres-Zyklus. Dieser besteht aus vier verkürzten 100-Jahres-Zyklen (plus einem Tag). Jeder 100-Jahres-Zyklus setzt sich aus 25 verlängerten 4-Jahres-Zyklen (minus einem Tag) zusammen. Die Längen der Zyklen sind also

L4 = 3 · 365 + 366 = 1461 Tage,
L100 = 25 · 1461 − 1 = 36524 Tage und
L400 = 4 · 36524 + 1 = 146097 Tage.

Zur Bestimmung von Δ muss der Startpunkt der Zählung für Nd festgelegt werden. Er sollte vor dem Beginn des JD liegen, damit die Berechnungen im gesamten Gültigkeitsbereich des JD anwendbar sind. Das JD beginnt mit dem Jahr 4713 v. u. Z. des Julianischen Kalenders, nach durchlaufender Jahreszählung also mit dem Jahre -4712. Man berechnet die Anzahl der 400-Jahres-Zyklen, die man von 1600 zurückgehen muss, um vor -4712 zu gelangen:

(1600 − (-4712))/400 = 15,78,

d. h. der Startpunkt liegt

16 · 400 Jahre = 16 · 146097 = 2337552 Tage

vor dem 1. März 1600. Dem 1. März 1600 entspricht das JD 2305508.

Der Absolutwert Δ ist somit

Δ = 2337552 − 2305508 = 32044.

R1 ist die Nummer des Tages im laufenden, nach der eingangs beschriebenen Vereinbarung angepassten Jahre. Aus dieser Nummer wird die Nummer des Monats (NM) berechnet, in dem sich der Tag befindet sowie schließlich der Tag selber. Zur Berechnung von NM wurde R1 durch die mittlere Monatslänge geteilt und durch einiges Probieren eine empirische Formel aufgestellt.

Das Ergebnis dieser Überlegungen sind die folgenden Formeln:

Nd = JD + 32044
N400 = int(Nd / 146097)
R400 = Nd mod 146097
N100 = min(3 ; int(R400 / 36524))
R100 = R400 - 36524 · N100
N4 = int(R100 / 1461)
R4 = R100 mod 1461
N1 = min(3 ; int(R4 / 365))
R1 = R4 - 365 · N1
NM = int((111 · R1 + 41) / 3395)
T = R1 - 30 · NM - int((7 · (NM + 1)) / 12) + 1
M' = NM + 3
J' = 400 · N400 + 100 · N100 + 4 · N4 + N1 - 4800
M = ((M' + 11) mod 12) + 1
J = J' + int(M' / 13)

Die Formeln zur Berechnung von N100 und N1 können durch

N100 = int(R400 / 36524) - int(R400 / 146096)
N1 = int(R4 / 365) - int(R4 / 1460)

ersetzt werden (siehe oben).

Beispiel:

Welches Datum des Gregorianischen Kalenders entspricht dem JD 2354057?

JD = 2354057
Nd = JD + 32044 = 2386101
N400 = int(Nd / 146097) = 16
R400 = Nd mod 146097 = 48549
N100 = min(3 ; int(R400 / 36524)) = 1
R100 = R400 - 36524N100 = 12025
N4 = int(R100 / 1461) = 8
R4 = R100 mod 1461 = 337
N1 = min(3 ; int(R4 / 365)) = 0
R1 = R4 - 365N1 = 337
NM = int((111R1 + 41) / 3395) = 11
T = R1 - 30NM - int((7(NM + 1)) / 12) + 1 = 1
M' = NM + 3 = 14
J' = 400N400 + 100N100 + 4N4 + N1 - 4800 = 1732
M = ((14 + 11) mod 12) + 1 = 2
J = 1732 + int(14 / 13) = 1733

Das gesuchte gregorianische Datum ist der 1. Februar 1733.

Berechnung des JD eines Gregorianischen Datums

Aus der um 4800 erhöhten Jahreszahl wird die jeweilige Anzahl der vollständig abgelaufenen Jahre, 4-Jahres-, 100-Jahres- und 400-Jahres-Zyklen berechnet und diese Anzahlen werden mit den Längen der jeweiligen Zyklen multipliziert. Schließlich wird aus Tages- und Monatsangabe die Nummer des Tages im laufenden Jahr ermittelt. Durch die Verwendung des angepassten Datums und die Umrechnung des Datums im laufenden Jahr in abgelaufene Tage im Jahr hat diese Zählung den Startpunkt 2. Dezember 4803 v. u. Z. Der Absolutwert ist dementsprechend höher als der, der in den Formeln für die Umwandlung eines JD in das entsprechende Datum des Gregorianischen Kalenders verwendet wird. Die Formeln zur Umrechnung lauten:

N100 = int((J' + 4800) / 100)
R100 = (J' + 4800) mod 100
JD = 146097 · int(N100 / 4) + 36524 · (N100 mod 4) + 1461 · int(R100 / 4) + 365 · (R100 mod 4) + int((7 · (M' - 2)) / 12) + 30 · M' + T − 32135

Berechnung des Datums im Julianischen Kalender eines JD

Die Vorgehensweise ist analog der des Gregorianischen Kalenders. Allerdings kennt der Julianische Kalender lediglich den vierjährigen Schaltjahreszyklus, weshalb die Formeln etwas einfacher ausfallen als die entsprechenden des Gregorianischen Kalenders.

Nd = JD + 32082
N4 = int(Nd / 1461)
R4 = Nd mod 1461
N1 = min(3 ; int(R4 / 365))
R1 = R4 - 365 · N1
NM = int((111 · R1 + 41) / 3395)
T = R1 - 30 · NM - int((7 · (NM + 1)) / 12) + 1
M' = NM + 3
J' = 4 · N4 + N1 - 4800
M = ((M' + 11) mod 12) + 1
J = J' + int(M' / 13)

Berechnung des JD eines Datums im Julianischen Kalender

Die Formel leitet sich analog zum Gregorianischen Kalender ab.

JD = 1461 · int((J' + 4800) / 4) + 365 · ((J' + 4800) mod 4) + int((7 · (M' - 2)) / 12) + 30 · M' + T - 32173

Berechnung eines Datums im Französischen Revolutionskalender aus dem JD

Der Revolutionskalender, der in Frankreich von 1792 bis zum 31. Dezember 1805 galt, kann ähnlich wie der Julianische Kalender behandelt werden, da während der kurzen Geltungsdauer jedes vierte Jahr ein Schaltjahr war. Die Berechnung von Monat und Tag aus der Nummer des Tages im laufenden Jahr ist besonders einfach, da die Monate gleiche Längen aufweisen und der Schalttag in Schaltjahren als letzter Tag des Jahres angehängt wird.

Schaltjahre waren die Jahre 3, 7 und 11 der Republik, daher wird der erste Vierjahreszyklus am 22. September 1791 begonnen, der dem (theoretischen) 1. Vendémiaire 0 entspricht. Durch diese Definition sind genau die oben genannten Jahre Schaltjahre. Offenbar gilt

Δ = - 2375475,

was dem negativen JD des 21. September 1791 entspricht.

Zur Berechnung wird zunächst die Differenz zwischen JD des gesuchten Tages und JD des 22. September 1791 gebildet (Nd). Dann wird die Anzahl der verstrichenen Vierjahreszyklen (N4) sowie der verstrichenen Jahre im laufenden Vierjahreszyklus (N1) errechnet.

Zur Bestimmung des Datums im Französischen Revolutionskalender aus einem gegebenen JD ergeben sich damit die folgenden Formeln. Dabei ist J hier die Nummer des Jahres der Republik, M die Nummer des Monats, wobei der Monat Vendémiaire die Nummer 1 trägt, der Brumaire die Nummer 2 usw. bis zum Fructidor mit der Nummer 12. Die Ergänzungstage werden als kurzer 13. Monat gezählt.

Nd = JD - 2375475
N4 = int(Nd / 1461)
R4 = Nd mod 1461
N1 = min(3 ; int(R4 / 365))
R1 = R4 - 365 · N1
T = (R1 mod 30) + 1
M = int(R1 / 30) + 1
J = 4N4 + N1

Die Formeln können nur für Daten genutzt werden, die zwischen dem 22. September 1792 und dem 22. September 1806 liegen.

Berechnung des JD aus einem gegebenen Datum des Französischen Revolutionskalenders

Die Herleitung der Formel zu dieser Berechnung kann analog zur Berechnung des JD eines gregorianischen Datums (s. o.) erfolgen. Wie im vorigen Abschnitt ist J die Nummer des Jahres der Republik, M die Nummer des Monats; T bezeichnet den Tag.

JD = 1461 · int(J / 4) + 365 · (J mod 4) + 30 · M + T + 2375444

Auch diese Gleichung kann nur für Daten zwischen dem 22. September 1792 und dem 22. September 1806 verwendet werden.

Berechnung eines Datums im von J. H. Mädler vorgeschlagenen Kalender

Dieser Kalender basiert auf verkürzten 128-Jahres-Zyklen, die aus verlängerten 4-Jahres-Unterzyklen bestehen. Ein 128-jähriger Zyklus hat 46751 Tage, ein vierjähriger Unterzyklus wie im Julianischen Kalender 1461 Tage. Ein 128-Jahres-Zyklus sollte mit dem Jahre 1901 beginnen, nach unserer angepassten Monatszählung somit am 1. März 1900.

Der Wert für Δ wird wie folgt berechnet:

1900 − (-4712) = 6612,
int(6612 / 128) + 1 = 52
52 · 46751 = 2431052, was 52 · 128 = 6656 Jahres dieses Kalenders entspricht.

Das JD des 1. März 1900 ist 2415080, man erhält also

Δ = 2431052 − 2415080 = 15972. (Der Startpunkt wäre somit der 1. März 4757 v. u. Z. nach diesem Kalender.)

Die entsprechenden Formeln lauten

Nd = JD + 15972
N128 = int(Nd / 46751)
R128 = Nd mod 46751
N4 = int(R128 / 1461)
R4 = R128 mod 1461
N1 = min(3 ; int(R4 / 365))
R1 = R4 - 365 · N1
NM = int((111 · R1 + 41) / 3395)
T = R1 - 30 · NM - int((7 · (NM + 1)) / 12) + 1
M' = NM + 3
J' = 128 · N128 + 4 · N4 + N1 - 4756
M = ((M' + 11) mod 12) + 1
J = J' + int(M' / 13)

Berechnung des Datums im Neujulianischen Kalender eines JD

Der Neujulianische Kalender basiert auf einem verlängerten 900-jährigen Zyklus. In ihm ist jedes vierte Jahr ein Schaltjahr, ausgenommen die Jahrhundertjahre, die bei der Division durch 900 nicht den Rest 200 oder 600 lassen. Beginnt man einen 900-Jahres-Zyklus nun mit einem durch 900 teilbaren Jahrhundertjahr, etwa 1800, so erhält man innerhalb dieses 900-Jahres-Zyklus drei Unterzyklen mit den Längen von 200, 400 und 300 Jahren. Die ersten beiden dieser Unterzyklen enden mit einem Schaltjahr, der abschließende 300-Jahres-Zyklus endet mit einem Gemeinjahr. Um die herzuleitenden Formeln nicht zu kompliziert werden zu lassen macht man sich klar, dass durch eine geeignete Verschiebung des Beginns der 900-Jahreszyklen eine einfachere Struktur erreicht werden kann. Verschiebt man den Beginn der 900-Jahres-Zyklen um 300 Jahre nach vorn (oder um 600 Jahre nach hinten), erhält man zwei verlängerte Unterzyklen von 500 bzw. 400 Jahren Länge. Die beiden Unterzyklen setzen sich ähnlich wie beim Gregorianischen Kalender aus verkürzten 100-Jahres-Zyklen zusammen. Der 500-Jahres-Zyklus hat damit 5 · 36524 + 1 = 182621 Tage, während der sich anschließende 400-Jahres-Zyklus 146097 Tage hat.

Da die 500- bzw. 400-Jahreszyklen verlängerte Zyklen sind, ergibt sich bei der Bestimmung der in den jeweiligen Zyklen verflossenen Tage eine Besonderheit. Die unterschiedliche Anzahl der 100-Jahres-Unterzyklen muss in der Gleichung für N100 berücksichtigt werden, siehe dort. Trotzdem wird aus Gründen der Übersichtlichkeit für beide Unterzyklen der Index "500" verwendet.

Wir lassen einen 900-Jahreszyklus mit dem 1. März 2400 beginnen. Der Wert für Δ kann dann wie folgt berechnet werden:

2400 − (-4712) = 7112,
int(7112 / 900) + 1 = 8
8 · 328718 = 2629744, was 8 · 900 = 7200 Jahren dieses Kalenders entspricht.

Das JD des 1. März 2400 ist 2597702, man erhält also

Δ = 2629744 − 2597702 = 32042. (Dieser Startpunkt entspräche dem 1. März 4801 v. u. Z. nach diesem Kalender.)

Das Ergebnis dieser überlegungen sind die folgenden Formeln:

Nd = JD + 32042
N900 = int(Nd / 328718)
R900 = Nd mod 328718
N500 = int(R900 / 182621)
R500 = R900 mod 182621
N100 = min(4 − N500 ; int(R500 / 36524))
R100 = R500 - 36524 · N100
N4 = int(R100 / 1461)
R4 = R100 mod 1461
N1 = min(3 ; int(R4 / 365))
R1 = R4 - 365 · N1
NM = int((111 · R1 + 41) / 3395)
T = R1 - 30 · NM - int((7 · (NM + 1)) / 12) + 1
M' = NM + 3
J' = 900 · N900 + 500 · N500 + 100 · N100 + 4 · N4 + N1 - 4800
M = ((M' + 11) mod 12) + 1
J = J' + int(M' / 13)

Umrechnung zwischen Julianischem Datum und OF-Kalender

Die Berechnung eines OF-Datums aus dem JD sowie die Berechnung des JD aus einem gegebenen OF-Datum sollen hier kurz gezeigt werden. Die Herleitung der Formeln ist nicht schwierig, da Urlaubi und Stresse konstante Längen haben.

Im Folgenden bezeichnen F die Nummer des Fauls, U die Nummer des Urlaubi und S die Streßzahl eines OF-Datums. Bei der Streßzahl ist zu beachten, dass es für die Berechnung einen Streß 0 gibt, der dem Streß 1 vor OF entspricht. Für den 11. Schlaf 26 vor OF ist also F = 11, U = 6 und S = -25. JD ist das dem OF-Datum entsprechende Julianische Datum.

Mit den Gleichungen

F = (JD mod 26) + 1,
U = int((JD mod 234) / 26) + 1 und
S = int(JD / 234) - 10458

kann das OF-Datum eines gegebenen JD ermittelt werden.

Umgekehrt kann mit der Gleichung

JD = F + 26U + 234S + 2447145

leicht das JD des gegebenen OF-Datums berechnet werden.

 

   Seitenanfang

 

Algorithmen zum Jüdischen Kalender

Zunächst soll bemerkt werden, dass zum Verständnis der folgenden Algorithmen Kenntnisse des Jüdischen Kalenders unabdingbar sind. Mehr zu diesem Kalender, einschl. einer kurzen Betrachtung zu den Eintrittswahrscheinlichkeiten der verschiedenen Ausnahmen ist im Abschnitt Jüdischer Kalender zu finden. Grundlegend für die Umrechnung von Daten den Jüdischen Kalenders ist die Bestimmung des Jahresanfangs. Ist ein Algorithmus zur Bestimmung des JD des 1. Tischri eines bestimmten Jahres bekannt, so kann damit auch der Charakter dieses Jahres bestimmt werden. Dazu muss lediglich das JD des Neujahrstages des auf das betreffende Jahr folgenden Jahres berechnet werden; die Differenz liefert die Jahreslänge und damit den Charakter. Aus diesem und der Nummer des Tages im laufenden Jahr kann schließlich das entsprechende Datum ermittelt werden. Die nachfolgenden Betrachtungen beschränken sich auf die Ermittlung des Jahresanfanges, während auf eine Darstellung der weiteren Schritte verzichtet wird.

Für die Verarbeitung der Zeitangaben in Tagen, Stunden und Teilen bietet sich die Verwendung eines eindimensionalen Feldes mit drei Elementen an. Notwendige Operationen sind die Multiplikation eines solchen Feldes mit einer natürlichen Zahl (d. h. die elementweise Multiplikation), die Bildung der Summe und der Differenz zweier solcher Felder (ebenfalls elementweise) sowie Vergleichsoperationen zwischen zwei Feldern. Zu beachten sind bei der Umsetzung der Rechenoperationen die korrekte Verarbeitung der überträge, d. h. dass beispielsweise ein Ergebnis 3 H 1091 P als 4 H 11 P zu interpretieren ist. Bei den Vergleichsoperatoren ist zu beachten, dass z. B. 0 d 7 H 967 P kleiner als 0 d 8 H 1 P sein muss, da der erste Zeitpunkt vor dem zweiten liegt. In den Gleichungen werden die Feldvariablen mit fetten Buchstaben bezeichnet (etwa T), wodurch auch leicht zu erkennen ist, ob es sich bei den Operatoren um die skalaren oder Feldoperatoren handelt. Die Aufstellung entsprechender Algorithmen sei dem Leser überlassen.

Der gezeigte Algorithmus wurde bewusst nicht optimiert, um das Verständnis zu erleichtern. Beispielsweise ist die Bestimmung des Charakters eines Jahres eleganter möglich, wie im Buch Calendrical Calculations gezeigt.

Die prinzipielle Vorgehensweise bei der Berechnung ist einfach beschrieben. Man ermittelt die vom Startpunkt des Jüdischen Kalenders bis zum Beginn des laufenden 19-Jahres-Zyklus verflossene Zeit sowie die innerhalb des aktuellen 19-Jahres-Zyklus bis zum Molad-Tischri des betreffenden Jahres verflossene Zeit. Die Summe ergibt den Molad-Tischri des Jahres. Schließlich kann unter Beachtung der Dehijot der Neujahrstag ermittelt werden.

Zunächst eine Funktion zur Ermittlung der bis zum Beginn des laufenden 19-Jahres-Zyklus verflossenen Zeit.

function elapsed_time1(JJ)
{
TZ = (6939;16;595) /* 19 Jahre = 235 Monate = 6939 d 16 h 595 p */
NZ = int(JJ / 19)
elapsed_time1 = NZ · TZ
}

Die bis zum Beginn eines Jahres im laufenden 19-Jahres-Zyklus verflossene Zeit wird mit der folgenden Funktion bestimmt.

function elapsed_time2(JJ)
{
TM = (29;12;793) /* 1 Molad = 29 d 12 h 793 p */
NM = int((JJ mod 19) · 12,36 + 0,77)
elapsed_time2 = NM · TM
}

Der in den vorangegangenen Berechnungen stillschweigend angenommene Startpunkt 0 d 0 H 0 P ist nicht der korrekte Beginn der Jüdischen Zeitrechnung, die mit dem Molad-Tischri des Jüdischen Jahres 1 startet. Als Nullpunkt soll hier aber nicht der Molad-Tischri des Jahres 1 verwendet werden, sondern der Molad-Tischri eines (fiktiven) Jahres 0, das ein Schaltjahr gewesen wäre. Um das Auftreten von negativen Zahlen im Gültigkeitsbereich der Berechnungen zu vermeiden, wird dieser Startpunkt um willkürlich gewählte 500 Tage verschoben. Der neue "Startpunkt" kann also durch 2d 5 H 204 P - 13 · (29 d 12 H 793 P) + 500 d berechnet werden; man erhält 118 d 7 H 695 P. Die Korrektur von 500 Tagen wird nach der Berechnung wieder abgezogen.

function molad(JJ)
{
TM = (29;12;793)
T0 = (118;7;695)
K = (-500;0;0)
T1 = elapsed_time1(JJ)
T2 = elapsed_time2(JJ)
molad = T0 + T1 + T2 + K
}

Wir benötigen noch Funktionen zur Feststellung, ob es sich bei JJ um ein Normal- oder Schaltjahr handelt. Die einfachste Möglichkeit ist das überprüfen des Teilungsrestes aus der Division der Jahreszahl JJ durch 19.

function leap_year(JJ)
{
R = JJ mod 19
leap_year = ((R = 0) or (R = 3) or
(R = 6) or (R = 8) or
(R = 11) or (R = 14) or
(R = 17))
}

Es gibt aber auch elegantere Möglichkeiten.

Jetzt kann der Neujahrstag bestimmt werden, indem auf die möglichen Ausnahmen getestet wird.

function jewish_new_year(JJ)
{
M = molad(JJ)
/* den Tag (ohne Stunden und Chalakim) als skalare Variable berechnen */
N = M[d]
/* den Wochentag berechnen */
W1 = N mod 7
/* Abtrennung der Stunden und Chalakim von der Tageszahl (=> "Uhrzeit")*/
MHP = M
/* jetzt erfolgt die Betrachtung der Ausnahmen */
/* Jach */
if (MHP >= (0;18;0))
{
N = N + 1
}
/* Adu, wegen möglicher schon erfolgter Verschiebung durch "Jach" */
/* muss erneut der Wochentag berechnet werden */
W2 = N mod 7
if ((W2 = 1) or (W2 = 4) or (W2 = 6))
{
N = N + 1
}
/* Gatrad */
if ((not(leap_year(JJ))) and (W1 = 3) and (MHP >= (0;9;204)) and (MHP <= (0;18;0)))
{
N = N + 2
}
/* Betutakpat */
if ((leap_year(JJ - 1)) and (W1 = 2) and (MHP >= (0;15;589)) and (MHP <= (0;18;0)))
{
N = N + 1
}
jewish_new_year = N
}
 

   Seitenanfang

 

Berechnung eines Schaltrhythmus'

Allgemeines

Die Länge eines tropischen Jahres (aber auch z. B. des siderischen Jahres oder des synodischen Monats) umfasst keine ganze Anzahl von Tagen. Aus praktischen Gründen scheidet die Verwendung von Tagesbruchteilen im Kalender aus. Daher müssen Normal- und Schaltjahre mit unterschiedlichen Längen eingeführt werden. In den folgenden Betrachtungen wird davon ausgegangen, dass ein Schaltjahr einen Tag mehr als ein Normaljahr hat. Die überlegungen können aber auch z. B. auf Schaltjahre mit einem zusätzlichen Schaltmonat übertragen werden, wie unten gezeigt werden wird.

Durch eine geeignete Abfolge von Normal- und Schaltjahren kann eine durchschnittliche Länge des Kalenderjahres erreicht werden, die der tatsächlichen Länge des Jahres nahekommt.

Jahreslänge

Die Abfolge von Schalt- und Normaljahren wird meist so eingerichtet, dass sie sich nach Ablauf einer bestimmten Anzahl von Jahren, dem Schaltzyklus, wiederholt. Im Julianischen Kalender hat dieser beispielsweise vier Jahre. Von diesen vier Jahren sind drei Normaljahre mit einer Länge lNJ von jeweils 365 Tagen. Ein Jahr des Zyklus ist ein Schaltjahr, dessen Länge lSJ 366 Tage beträgt. Zur Bestimmung der durchschnittlichen Länge lKJ eines Kalenderjahres wird die Länge eines solchen Schaltzyklus in Tagen (lZ,d) und einmal in Jahren (nJ) ausgedrückt und der Quotient aus beiden gebildet. Es gilt also

lKJ = lZ,d / nJ

Für den Julianischen Kalender gilt

lNJ = 365,
lSJ = 366,
lZ,d = 3 · 365 + 366 = 1461 und nJ = 4.

Damit erhält man

lKJ = 1461/4 = 365 + 1/4 ( = 365,25).

Im Durchschnitt hat ein Kalenderjahr des Julianischen Kalenders, das so genannte Julianische Jahr, also 365,25 Tage. Zu beachten ist, dass der gebrochene Anteil den Schaltrhythmus angibt. Dabei steht im Zähler die Anzahl der Schaltjahre im Schaltzyklus und im Nenner die Länge des Schaltzyklus.

Aus der tatsächlichen Jahreslänge lJ kann zunächst die Länge des Normaljahres lNJ abgeleitet werden, die einfacherweise dem ganzzahligen Anteil von lKJ entspricht,

lNJ = int(lJ).

Die Differenz zur tatsächlichen Jahreslänge wird als echter Bruch (also in der Form p/q) dargestellt, womit die tatsächliche Jahreslänge durch

lJ = lNJ + p0/q0

ausgedrückt werden kann. (Die hier verwendeten Bezeichnungen p0 und q0 wurden im Hinblick auf die weiteren Schritte so gewählt.)

An dieser Stelle soll zunächst ein kurzer Einschub zur tatsächlichen Jahreslänge erfolgen. Deren Bestimmung ist mit sehr hoher Genauigkeit möglich. Man muss sich aber im Klaren darüber sein, dass diese Werte nicht unveränderlich sind. Vielmehr unterliegen Erd- und Mondbewegung sowohl periodischen als auch säkularen änderungen. Der Einfluss der periodischen Schwankungen kann durch Betrachtung genügend großer Zeiträume ausgeschaltet werden, während säkulare änderungen nicht durch (ihrer Natur nach periodische) Schaltzyklen beherrscht werden können.

Schaltrhythmus

Die weitere Vorgehensweise soll nun zunächst am Beispiel des tropischen Jahres aufgezeigt werden. Dieses hat zur Zeit eine Länge von 365 d 5 h 48 min 46 s. Drückt man diese Jahreslänge in der oben angegebenen gemischten Bruchschreibweise aus, erhält man

lJ = 365 + 5/24 + 48/1440 + 46/86400 = 365 + 10463/43200,

also

lNJ = 365 und

p0/q0 = 10463/43200.

Man kann nun feststellen, nach wievielen Jahren die Differenz zwischen den Längen von Normaljahr und tropischem Jahr auf einen vollen Tag angewachsen ist, wann also ein Ausgleich durch Einschieben eines Schalttages erfolgen kann. Dazu wird der Kehrwert der jährlichen Differenz (also des Quotienten p0/q0) berechnet und in gemischter Schreibweise dargestellt:

1 =q0=43200=4+1348
p0/q0p0 10463 10463

Daraus folgt

p0=1=1
q0 4+1348x1+p1
  10463 q1

Nach 4 + 1348/10463 Jahren ist der Unterschied zwischen Kalenderjahr und tropischem Jahr auf einen Tag angewachsen. Unter Vernachlässigung des gebrochenen Anteils p1/q1 = 1348/10463 ergibt sich, dass jedes vierte Jahr ein Schaltjahr werden müsste, um den Fehler näherungsweise auszugleichen.

Diese erste Näherung liefert die dem Julianischen Kalender zu Grunde liegende, oben bereits beschriebene Schaltregel. Der Julianische Kalender wurde unter Cäsar in Rom eingeführt und erst seit dem 16. Jahrhundert vom Gregorianischen Kalender abgelöst.

Der Fehler dieses Kalenderjahres gegenüber dem tropischen Jahr ist

10463/143200 - 1/4 = -337/43200 ≈ -1/128,

d. h. in etwa 128 Jahren verschiebt sich der Kalender um einen Tag gegenüber den tatsächlichen Jahreszeiten. Das Datum der Frühlingstag- und -nachtgleiche ist dann um eine Einheit geringer. Bei der Einführung des Kalenders fiel sie auf den 24. März, während sie knapp vier Jahrhunderte später, zur Zeit des Konzils von Nicäa, bereits auf den 21. März fiel. (Auf dem Konzil von Nicäa wurde im Jahre 325 festgelegt, wann das Osterfest begangen wird, siehe den Artikel "Die Berechnung des Osterfestes".)

Um den Fehler weiter zu verringern, wird mit dem verbleibenden Rest p1/q1 = 1348/10463 ebenso verfahren, wie im ersten Schritt:

q1 = 10463 = 7 + 1024,
p113481348

woraus

10463 = 1 = 1
432004 + 1x1 + 1
 7 + 1024 x2 + p2
  1348  q2

folgt. Weglassen des nun verbleibenden Rests von p2/q2 = 1024/1348 liefert eine genauere Näherung der wahren Jahreslänge mit

1 = 7.
4 + 129
7 

Ein Schaltzyklus von 29 Jahren mit 7 Schaltjahren nähert die tatsächliche Jahreslänge genauer an, der Fehler würde in etwa 1220 Jahren zu einem Tag anwachsen. Wie oben bereits erwähnt, gibt der Quotient (7/29) den Schaltrhythmus an. Allerdings ist dieser Schaltrhythmus offenbar nie vorgeschlagen oder umgesetzt worden.

Die hier am Beispiel des tropischen Jahres angedeutete Vorgehensweise besteht in der Entwicklung des gebrochenen Anteils p0/q0 der "genauen" Jahreslänge in einen Kettenbruch:

 

p0 = 1
q0x1 + 1
 x2 + 1
 x3 +  ... 1
 xi + pi
 qi

Man kann diese Entwicklung so weit durchführen, wie es die gewünschte Genauigkeit erfordert. Um einen Näherungswert zu erhalten, wird der jeweils übrig bleibende "Rest" (d. h. der gebrochene Anteil pi/qi) dann vernachlässigt. Der so entstandene Kettenbruch muss nun wieder in einen echten Bruch umgewandelt werden, wodurch man

 

ai = 1 = ni
x1 + 1di
 x2 + 1 
 x3 + ...1
 xi

erhält. Der Quotient ai = ni/di liefert den Schaltrhythmus, in dem ni Schaltjahre in einem Zyklus von di Jahren vorgesehen werden müssen. Die entstehenden ai können als Glieder einer Folge aufgefasst werden. Um ai anzugeben, muss offenbar zunächst xi bestimmt werden. Weiterhin müssen pi und qi bestimmt werden, um mit ihnen ai+1 ermitteln zu können. Um den ai entsprechenden Schaltrhythmus zu erhalten, müssen ni und di durch Umwandlung des Kettenbruches in einen echten Bruch ermittelt werden.

Die Bestimmung von xi wurde oben am Beispiel des tropischen Jahres gezeigt. Es handelt sich um den ganzzahligen Anteil des Kehrwertes von pi-1/qi-1. Formal erhält man

xi = int (qi-1)
pi-1

Der gebrochene Anteil dieser Division ist offenbar der Teilungsrest dividiert durch den Divisor, d. h. es gilt

pi = qi-1 mod pi-1

sowie

qi = pi-1.

Bei "längeren" Kettenbrüchen, d. h. bei höherem i, wird die Umwandlung in einen echten Bruch der Form p/q mühsam. Empirisch lässt sich jedoch eine rekursive Bildungsvorschrift ermitteln, nach der

ni = ni-1 · xi + ni-2

und

di = di-1 · xi + di-2

ist. Diese Bildungsvorschriften für ni und di werden weiter unten bewiesen.

Wendet man diesen Algorithmus auf das tropische Jahr an, erhält man die folgende Tabelle.

ixipiqinidiUmsetzung
  0  365  10463    43200  01-
1413481046314Julianischer Kalender
2710271348729-
313211027833Vorschlag von Omar Chayyam (s. Persischer Kalender)
436432131128Vorschlag von J. H. Mädler
55164163673-
66401  10463    43200  -

Für i = 1 liefert der Algorithmus die Schaltregel des Julianischen Kalenders. i = 3 liefert einen 33-jährigen Zyklus mit 8 Schaltjahren. Einen solchen Zyklus schlug im 11. Jahrhundert der persische Dichter und Astronom Omar Chayyam für eine Kalenderreform in Persien vor (s. Persischer Kalender). Mit i = 4 erhält man schließlich den Vorschlag von J. H. Mädler mit 31 Schaltjahren in einem 128-jährigen Zyklus.

Anwendung auf andere Kalenderformen

Die beschriebenen Formeln können natürlich nicht nur auf das tropische Jahr angewendet werden. Im Folgenden wird das Verfahren auf den reinen Mondkalender und den gebundenen Mondkalender angewendet.

Die Grundlage des reinen Mondkalenders bildet ein Jahr aus zwölf synodischen Mondmonaten. Die Länge eines solchen Monats beträgt 29 d 12 h 44 min 2,9 s oder

lM = 29 + 12/24 + 44/1440 + 29/864000 = 29 + 458429/864000

Tage. Damit hat ein Jahr

l =12 · (29 + 458429/864000) =354 + 26429/72000

Tage, und es ergibt sich die folgende Tabelle

ixipiqinidiUmsetzung
12  19142    26429  12-
2172871914213-
324568728738-
4127194568411-
5118492719719-
6187018491130Islamischer Kalender
721098702979-
87107109214583-
912107243662-
1053121309335669-
11201  26429    72000  -

Bei i = 6 erhält man den im Islamischen Kalender verwendeten Schaltzyklus mit 11 Schaltjahren in 30 Jahren.

 

In einem gebundenen Mondkalender wird in einem Schaltjahr ein ganzer Monat eingeschoben. Die Länge des tropischen Jahres muss demnach nicht in Tagen, sondern in synodischen Mondmonaten ausgedrückt werden. Die Jahreslänge beträgt somit

l = 365 + 10463/43200 = 12 + 9396112
29 + 458429/86400025514429

synodische Monate.

Es ergibt sich die folgende Tabelle.

ixipiqinidiUmsetzung
12  6722205    9396112  12-
212673907672220513-
321374391267390738"Oktaeteris"
4112995161374391411-
51748751299516719Jüdischer Kalender
6172664174875123334-
722159326641253687-
...

Auch hier erhält man einen umgesetzten Schaltzyklus. Der 19-jährige Zyklus mit 7 Schaltjahren (Meton-Zyklus) wird im Jüdischen Kalender bis heute verwendet. Schon früher verwendete man in Griechenland einen 8-jährigen Zyklus mit 3 Schaltjahren, der "Oktaeteris" genannt wurde.

Beweis der rekursiven Bildungsvorschrift

Die rekursive Bildungsvorschrift für ni und di wurde empirisch gefunden. Um ihre Gültigkeit zu beweisen, bedient man sich des Beweisprinzips der vollständigen Induktion. Die mit wachsendem i entstehenden Kettenbrüche werden als Glieder einer Folge aufgefasst.

• Behauptung

Jedes Glied der Folge

ai = 1 = ni
x1 + 1di
 x2 + 1 
 x3 + ...1
 xi

kann durch

ai = ni = ni-1 · xi + ni-2
didi-1 · xi + di-2

bestimmt werden.

Sinnvoll ist die Anwendung dieser Rekursionsformel offenbar erst ab dem Glied a2, da a1 bereits in Form eines echten Bruches vorliegt, denn es gilt

a1 = n1 = 1
d1x1

• Vorbetrachtung

Zur Vorbereitung des Beweises wird zunächst analysiert, wie aus dem vorhandenen Glied ai das unmittelbar folgende Glied ai+1 gebildet wird.

ai lautet in der Darstellung als Kettenbruch

 

ai = 1
x1 + 1
 x2 + 1
 x3 + ...1
 xi

und ai+1 lautet

ai = 1
x1 + 1
 x2 + 1
 x3 +  ... 1
 xi + 1
 xi+1

Wenn man also ein xi definiert als

xi = xi + 1
xi+1

gilt offenbar

ai+1 = 1
x1 + 1
 x2 + 1
 x3 + ...1
 xi

Anschaulich bedeutet dies, dass durch Ersetzen von xi durch xi aus ai das nächste Glied ai+1 entsteht.

Weiterhin wird willkürlich (aber, wie sich gleich zeigen wird, sinnvoll) ein Glied a0 definiert. Dieses soll

a0 = n0 = 0
d01

sein.

• Beweis

Mit diesen Vorbetrachtungen kann nun der eigentliche Beweis angetreten werden.

→ Induktionsanfang: Die Behauptung gilt für das erste Glied (im vorliegenden Falle a2).

Dies ist einfach durch Einsetzen nachzuweisen. Da es sich beim ersten Glied, a1, bereits um einen echten Bruch handelt, beginnt man mit a2. Laut der Behauptung muss gelten

a2 = n2 = n1 · x2 + n0.
d2d1 · x2 + d2

Einsetzen und Umformen liefert

a2 = 1 = 1 · x2 + 0 = 1 · x2 + 0 = n1 · x2 + n0,
x1 + 1x1 · x2 + 1x1 · x2 + 1d1 · x2 + d0
 x2 

was offensichtlich der Behauptung für i = 2 entspricht.

→ Induktionsschritt: Unter der Voraussetzung, dass die Behauptung für ai richtig ist, so muss sie auch für ai+1 richtig sein.

Für ai gilt

ai = ni = ni-1 · xi + ni-2
didi-1 · xi + di-2

Wie oben gesehen, liefert Einsetzen von xi für xi das Glied ai+1. Man erhält

ai+1 =   =   = ni-1 · (xi + 1) + ni-2 = ni-1 · xi + ni-2 + ni-1
ni+1ni-1 · xi + ni-2xi+1xi+1
di+1di-1 · xi + di-2di-1 · (xi + 1) + di-2di-1 · xi + di-2 + di-1
  xi+1xi+1

Der Ausdruck ni-1 · xi + ni-2 entspricht genau ni, außerdem ist di = di-1 · xi + di-2.

ni-1 · xi + ni-2 + ni-1 = ni + ni-1 = ni · xi+1 + ni-1
xi+1xi+1
di-1 · xi + di-2 + di-1di + di-1di · xi+1 + di-1
xi+1xi+1

Setzt man jetzt noch j = i + 1, ergibt sich

aj = nj = nj-1 · xj + nj-2, q. e. d.
djdj-1 · xj + dj-2

Der letzte Ausdruck entspricht offensichtlich der Behauptung.

 

   Seitenanfang

 

 

 

 

http://www.ortelius.de/kalender/calc_de.php   © Holger Oertel 2000-2008; letzte Änderung: 1. September 2007

Valid HTML 4.01 Transitional  Valid CSS!