- Gaußsche Wochentagsformel
-
Die Gaußsche Wochentagsformel ist eine Formel von Carl Friedrich Gauß zur Berechnung des Wochentags anhand eines gegebenen Datums. Sie wird häufig für die Berechnung der Wochentage in der Informatik eingesetzt. Die Formel gilt von der Einführung des Gregorianischen Kalenders am 15. Oktober 1582 an und prinzipiell solange, bis von diesen Kalenderregeln wieder abgewichen wird, also bis zur nächsten Kalenderreform.
Inhaltsverzeichnis
Formel
Die Berechnung des Wochentages erfolgt nach folgender Formel:
Die Variablen haben folgende Bedeutung:
d: Tagesdatum (1 bis 31) m: Monat gemäß unten angeführter Tabelle y: Die beiden letzten Stellen der Jahreszahl, bei den Monaten Januar und Februar um eine vermindert (für Dez. 2007 also 7, für Jan 2000 dann 99) c: Die beiden ersten Stellen der Jahreszahl - in den "gregorianischen" Jahren 1600,2000,2400... bei den Monaten Januar und Februar um eine vermindert (für 2007 wäre diese 20, für Januar/Februar 2000 also 19) w: Wochentag gemäß unten angeführter Tabelle
Der Monat m wird in julianischer Zählung angegeben, damit der Schaltmonat Februar mit seiner Unregelmäßigkeit am Ende des Jahres steht. Es ergibt sich folgende Tabelle:
Monat März April Mai Juni Juli August September Oktober November Dezember Januar Februar m = 1 2 3 4 5 6 7 8 9 10 11 12 [2,6 m - 0,2] mod 7 = 2 5 0 3 5 1 4 6 2 4 0 3 Demzufolge währt ein Jahr von März bis Februar. Für die Monate Januar und Februar müssen die Variablen y und ggf. auch c um 1 vermindert werden, siehe Beispiele.
Der Wochentag w ergibt sich nach folgender Tabelle:
0 1 2 3 4 5 6 Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag Hinweise zur Berechnung
- Die eckige Klammer ist die Gaußklammer. Sie gibt die größte ganze Zahl kleiner oder gleich x an.
- Mit mod wird die Modulo-Operation bezeichnet. Hier liefert sie den kleinsten positiven Rest beim Teilen durch 7. (Ist das Ergebnis negativ, so muss man 7 dazuaddieren, Beispiel: -19 mod 7 = -5 + 7 = 2.)
Beispiele
Da für Januar und Februar m = 11 bzw. m = 12 gilt, muss für diese beiden Monate die Jahreszahl bei der Berechnung um 1 vermindert werden!
Für den 12. Januar 2006 muss z. B. die Variable y vermindert werden:d = 12 m = 11 y = 5 c = 20
A = 12 + [2.6*11 – 0.2] + 5 + [5/4] + [20/4] – 2*20 A = 12 + 28 + 5 + 1 + 5 - 40 A = 11 w = 11 mod 7 w = 4 w entspricht Donnerstag
Für den 1. Januar 2000 müssen y und c vermindert werden:d = 1 m = 11 y = 99 c = 19
A = 1 + [2.6*11 – 0.2] + 99 + [99/4] + [19/4] – 2*19 A = 1 + 28 + 99 + 24 + 4 - 38 A = 118 w = 118 mod 7 w = 6 w entspricht Samstag
Beim 12. Juni 2006 muss nicht vermindert werden:d = 12 m = 4 y = 6 c = 20
A = 12 + [2.6*4 – 0.2] + 6 + [6/4] + [20/4] – 2*20 A = 12 + 10 + 6 + 1 + 5 - 40 A = -6 w = -6 mod 7 w = 1 w entspricht Montag
Herleitung der Formel
Die Herleitung erfolgt in vier Schritten:
1. Formel, die nur für einen Monat gilt
Die Formel lautet
(1) w = (d + k1) mod 7
w ist dabei der gesuchte Wochentag, d das Tagesdatum (1–31). k1 ist ein Korrektursummand, der für jeden Monat angibt, auf welchen Wochentag der Vormonat endete. mod 7 gibt den kleinsten positiven Rest beim Teilen durch 7 an. Hierbei können nur Zahlen von 0 bis 6 herauskommen. Beispielrechnung: 22 : 7 = 3 Rest 1, also 22 mod 7 = 1.
Beispiel
Zur Berechnung des Wochentags vom 17. August 2007 muss man wissen, dass der Juli 2007 mit einem Dienstag endet, also d = 17 und Korrektursummand k1 = 2. Man berechnet:
w = (17 + 2) mod 7 = 19 mod 7 = 5 5 entspricht einem Freitag.
2. Formel, die für ein Jahr lang gilt
Nun hat man für jeden Monat eine unterschiedliche Formel. Um zu einer Formel zu gelangen, die für ein Jahr lang gültig ist, legt man zuerst fest, dass der 1. Monat der März ist (m = 1). Mit dieser julianischen Zählung der Monate umgeht man das Problem, dass der unregelmäßige Schalttag 29. Februar mitten im Jahr liegt und die Formel "stört". Da die Monate mit verschiedenen Wochentagen beginnen, benötigt man anstatt des Korrektursummanden k1 eine "Sprungfunktion" s, die für jeden Monat den korrekten Wochentag des Vormonats liefert. Dazu untersucht man, wie der Wochentag des 1. März zu jedem anderen Monatsbeginn "weiterspringt":
s(m) = Von März auf April m = 2 3 Tage 3 mod 7 Von März auf Mai m = 3 5 Tage 5 mod 7 Von März auf Juni m = 4 8 Tage 1 mod 7 Von März auf Juli m = 5 10 Tage 3 mod 7 Von März auf August m = 6 13 Tage 6 mod 7 Von März auf September m = 7 16 Tage 2 mod 7 Von März auf Oktober m = 8 18 Tage 4 mod 7 Von März auf November m = 9 21 Tage 0 mod 7 Von März auf Dezember m = 10 23 Tage 2 mod 7 Von März auf Januar m = 11 26 Tage 5 mod 7 Von März auf Februar m = 12 29 Tage 1 mod 7 Insgesamt springt der Monatsbeginn vom 1. März bis zum 1. Februar um 29 Wochentage weiter, in den 11 Monatssprüngen also durchschnittlich um 29 / 11 ≈ 2,6 Wochentage.
Die gesuchte Sprungfunktion s soll also für m die Werte in der Spalte s(m) liefern. Gauß ist zunächst auf die Funktion
[2,6 m] mod 7
gekommen. Hierbei wird 2,6 mit m multipliziert, die Dezimalen mittels der Gaußklammer [ ] „abgeschnitten“ und anschließend mod 7 reduziert. Da die Ergebnisse alle um 2 zu hoch sind, wird 2 abgezogen:
([2,6 m] – 2) mod 7
Dann sind die Werte von m = 5 und m = 10 aber noch um 1 zu groß. Man muss die Formel so verändern, dass die Ergebnisse sich nur an diesen zwei Stellen verändern. Dafür müssen die Ergebnisse in den Gaußklammern dieser beiden Monate um 1 kleiner werden, die anderen Ergebnisse dürfen sich aber nicht verändern. Bei m = 5 und m = 10 kommen innerhalb der Gaußklammer immer ganze Zahlen heraus. Die niedrigste Nachkommastelle bei den anderen Monaten ist 0,2. Man zieht also einen Wert größer 0 und kleiner gleich 0,2 ab. Man wählt meistens 0,2.
s(m) = ([2,6 m - 0,2] – 2) mod 7
Wenn man s(m) anstatt des Korrektursummanden k1 in die obige Formel (1) einsetzt, erhält man als Wochentagsformel, die ein Jahr lang gültig ist:
(2) w = (d + [2,6 m - 0,2] - 2 + k2) mod 7
Der Korrektursummand k2 gibt dabei den Wochentag vom Vortags des 1. März des betreffenden Jahres an.
Beispiel
Die folgende Wochentagsformel für 2007 ist gültig vom 1. März 2007 bis zum 29. Februar 2008. Da der Vortag des 1. März 2007 ein Mittwoch ist, gilt k2 = 3:
w = (d + [2,6 m - 0,2] - 2 + 3) mod 7 = (d + [2,6 m - 0,2] +1) mod 7
3. Formel, die für ein Jahrhundert lang gilt
Nun muss man die Formel (2) so variieren, dass sie über mehrere Jahre hinweg gültig ist. Dazu muss der Wochentag in jedem Jahr um einen Tag "weitergeschoben" werden, da ein Normaljahr aus 52 Wochen und einem Tag besteht. In jedem Schaltjahr muss der Wochentag um 2 Tage vorrücken.
y steht für die letzten beiden Ziffern des Jahres (bei 1992 also y = 92). Da es alle vier Jahre ein Schaltjahr gibt, muss man noch y/4 addieren. Dabei würde sich bei 1995 zum Beispiel 95/4 = 23,75 ergeben. Weil man aber eine ganze Zahl benötigt, setzt man den Term in die Gaußklammer: [y/4]. Diese "schneidet" die Ziffern hinter dem Komma ab. 23,75 in der Gaußklammer wird also zu 23, denn im 20. Jahrhundert gab es bis 1995 genau 23 Schaltjahre.
Setzt man nun den Term y + [y/4] anstelle des Korrektursummanden k2 in die Formel (2) ein, erhält man eine Wochentagsformel, die für ein Jahrhundert gültig ist:
(3) w = (d + [2,6 m - 0,2] - 2 + y + [y/4] + k3) mod 7
Der Korrektursummand k3 gibt dabei den Wochentag an, mit dem das vorausgegangene Jahrhundert endete.
Beispiel
1900 war kein Schaltjahr. Der Vortag des 1. März 1900, der 28. Februar 1900, war ein Mittwoch, also k3 = 3. Folglich lautet die Wochentagsformel für das 20. Jahrhundert:
w = (d + [2,6 m - 0,2] + y +[y/4] + 1) mod 7
Sie ist gültig vom 1. März 1900 bis zum 29. Februar 2000.
4. Allgemeingültige Formel
Nun muss die Formel (3) noch kompatibel für mehrere Jahrhunderte gemacht werden. Hierzu ist wichtig, dass im Gregorianischen Kalender alle Jahre, welche ohne Rest durch 100 teilbar sind, keine Schaltjahre sind. Dagegen sind Jahre, welche ohne Rest durch 400 teilbar sind, doch Schaltjahre.
Die Anzahl dieser besonderen Schaltjahre, die alle 400 Jahre auftreten, berechnet man mit der Formel [c/4], wobei c für die ersten beiden Ziffern in der vierstelligen Jahresangabe steht, von c/4 wird wieder die Gaußklammer [ ] gebildet. Im Jahr 1963 (c = 19, y = 63) ergibt sich z. B. [19/4] = 4.
Weiterhin muss bedacht werden, dass bei den Sprüngen "über das Jahrhundert hinweg" der Wert von y + [y/4] jedes Mal von 99 + 24 = 123 = 4 mod 7 zu 00 + 0 = 0 wird. Dieser Wert darf jedoch nicht 0, sondern muss 5 sein, da mit der Jahreszahl auch der Wochentag um 1 vorrückt. Diese 5 muss bei jedem Jahrhundertwechsel addiert werden. Da 5 = −2 mod 7 gilt, entspricht der Sprung von +5 gerade −2. Daher kann man die Nullung von y + [y/4] und den hinzugekommenen Tag bei den Jahrhundertsprüngen durch den Summanden −2c ausgleichen.
In der Formel (3) kann man nun den Korrektursummanden k3 folgendermaßen ersetzen:
k3 = [c/4] − 2c + k4
Über die Wahl von k4 muss die Formel noch "justiert" werden. Die bisherige Formel liefert für den 15. Oktober 1582 einen Mittwoch, es war aber ein Freitag. Also gilt k4 = 2, was zusammen mit der bisherigen −2 zufälligerweise 0 ergibt. Insgesamt erhält man also die gesuchte Gaußsche Wochentagsformel:
w = (d + [2,6 m – 0,2] + y + [y/4] + [c/4] – 2c) mod 7
Ergebniskontrolle
Mittels dargestellter Datei ist eine einfache und sichere Kontrollmöglichkeit gegeben
Literatur
- Georg Glaeser: Der mathematische Werkzeugkasten. Anwendungen in Natur und Technik. 2. Auflage. Elsevier, München 2006, ISBN 3-8274-1618-3, Siehe S. 353!
Weblinks
Commons: Perpetual calendars – Sammlung von Bildern, Videos und AudiodateienSiehe auch
- Zellers Kongruenz zur Berechnung von Wochentagen.
- Doomsday-Methode zur Berechnung von Wochentagen.
- Wochentagsberechnung zur Berechnung von Wochentagen.
- Gaußsche Osterformel zur Berechnung des Datums des Ostersonntags.
Kategorien:- Gregorianischer und Julianischer Kalender
- Wochentagsberechnung
Wikimedia Foundation.