Autor |
Beitrag |
Kr3mel (Kr3mel)
Neues Mitglied Benutzername: Kr3mel
Nummer des Beitrags: 1 Registriert: 05-2004
| Veröffentlicht am Mittwoch, den 12. Mai, 2004 - 20:18: |
|
Hallo! Ich hab hier eine ziemlich knifflige Frage (oder auch nicht) zu Gauss' Wochentagsformel W = (d + (2,6 - m x 0,2)+ y/4 + c/4 - 2xc) : 7 d = Wochentag (von 1 - 30) m = Geburtsmonat y = die aus den letzten beiden Ziffern gebildete Zahl des Geburtsjahres (z.B 1987 --> 87) c = die aus den ersten beiden Ziffern gebildete Zahl (z.b 19 bei 1987) Wie kam Gauss auf diese Zahlen? Wie kann ich seine Denkweise nachvollziehen? Oder ist er einfach nur ein Genie und ich muss das akzeptieren? Warum verwendet er beispielsweise 2xc? Und warum erhalte ich mit der Jahreszahl 2000 beispielsweise kein Ergebnis? Ich hoffe mir kann hier jemand eine Antwort auf meine Frage geben! Danke schon einmal!} |
Murray (Murray)
Erfahrenes Mitglied Benutzername: Murray
Nummer des Beitrags: 237 Registriert: 10-2001
| Veröffentlicht am Mittwoch, den 12. Mai, 2004 - 21:11: |
|
Hallo Kr3mel, also erstmal muß ich Deine Formel korrigieren. W = (d + [2.6m - 0.2] + [y/4] + [c/4] - 2c) mod 7 und wenn W < 0, dann W = W + 7 (da streikt nämlich bei vielen Computern das Modulo) [] - meint den ganzzahligen Anteil (Bsp. [2.4] = 2) mod - meint den Rest der Disvision (Bsp. 12 mod 7 = 5, weil 1*7 + 5 = 12) Onkel Murray
|
Martin243 (Martin243)
Senior Mitglied Benutzername: Martin243
Nummer des Beitrags: 986 Registriert: 02-2001
| Veröffentlicht am Mittwoch, den 12. Mai, 2004 - 21:16: |
|
Hi! Erstmal wollen wir mal deine Formel (und die von Murray) korrigieren: Wir brauchen hier u.a. die Gaussklammer [.], um ganze Zahlen als Ergebnis zu bekommen. Dann lautet die Formel mit deinen Bezeichnungen: w = (d + [2,6m - 0,2] + y + [y/4] + [c/4] - 2c) mod 7 Bevor wir jedoch losrechnen, müssen wir noch eine Besonderheit dieser Formel berücksichtigen: Wir müssen aus unserem Datum ein neues bilden, indem wir es um zwei Monate zurückverschieben. Am Beispiel: Wollen wir den Wochentag des 5.1.2004 berechnen, setzen wir in obige Formel den 5.11.2003 ein. Natürlich könnte man das in der Formel berücksichtigen, aber so bleibt die Formel übersichtlicher. Nun zu deinem y2k-Problem: Nehmen wir doch den 20.4.2000: Wir bilden das "neue" Datum: 20.2.2000. Nun setzen wir ein: (d + [2,6m - 0,2] + y + [y/4] + [c/4] - 2c) = (20 + [2,6*2 - 0,2] + 0 + [0/4] + [20/4] - 2*20) = (20 + 5 + 0 + 0 + 5 - 40) = -10 Nun könnte dieses negative Erlebnis dein Problem gewesen sein. Da wir aber die modulo-Operation benutzen, können wir das Problem folgendermaßen beseitigen: Wir addieren so oft 7 dazu, bis wir ein positives Ergebnis erhalten: -10 + 7 = -3 reicht nicht, also nochmal: -10 + 7 + 7 = 4 Also gilt: (-10) mod 7 = 4 mod 7 = 4, also war es ein Donnerstag! Das ist sogar richtig. MfG Martin Die Natur spricht die Sprache der Mathematik: Die Buchstaben dieser Sprache sind Dreiecke, Kreise und andere mathematische Figuren. Galileo Galilei
|
Martin243 (Martin243)
Senior Mitglied Benutzername: Martin243
Nummer des Beitrags: 987 Registriert: 02-2001
| Veröffentlicht am Mittwoch, den 12. Mai, 2004 - 22:26: |
|
Jetzt zu deiner eigentlichen Frage: Wir wollen mal die Herkunft/Bedeutung der einzelnen Summanden klären: Dass das d einmal vorkommen muss, ist klar, denn am nächsten Tag im Monat haben wir auch den nächsten Wochentag. Der Ausdruck [2,6m - 0,2] hilft uns, die Sprünge in den Tageszahlen auszugleichen. Da schaut man sich am besten die folgende Tabelle an:
m | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | f(m)=[2.6m-0.2] mod 7 | 2 | 5 | 0 | 3 | 5 | 1 | 4 | 6 | 2 | 4 | 0 | 3 | Die Differenz zweier Funktionswerte entspricht der Differenz der Wochentage der 1. Tage der jeweiligen Monate. Oder klarer als Beispiel: Der 1.5. sei ein Montag, dann ist der 1.6. ein (Montag+3) = Donnerstag, da für die Differenz gilt: 3 (Juni) - 0 (Mai) = 3. Das y besagt einfach nur, dass jedes (normale) Jahr einen Wochentag später beginnt als das vorhergehende: Während 1997 mit einem Mittwoch anfing, fing 1998 mit einem Donnerstag an. Das liegt daran, dass ein Jahr 365 Tage hat, also: 365 mod 7 = 1. Jedes Jahr einen Wochentag dazu! Das [y/4] bedeutet, dass jedes 4. Jahr ein Schaltjahr ist. Das -2c wird wahrscheinlich (ich habe es nicht nachgerechnet) dafür gut sein, dass die durch 100 teilbaren Jahre keine Schaltjahre sind. Und schließlich sort das [c/4] dafür, dass die durch 400 teilbaren Jahre doch wieder als Schaltjahre berücksichtigt werden. Das war vielleicht nicht alles ausführlich erklärt, aber vielleicht hilft es ja als Denkanstoß... MfG Martin Die Natur spricht die Sprache der Mathematik: Die Buchstaben dieser Sprache sind Dreiecke, Kreise und andere mathematische Figuren. Galileo Galilei
|
Alexrussak (Alexrussak)
Neues Mitglied Benutzername: Alexrussak
Nummer des Beitrags: 1 Registriert: 05-2013
| Veröffentlicht am Mittwoch, den 29. Mai, 2013 - 11:01: |
|
Ich hab da mal ne frage : Kennt sich einer von euch mit DACIMAL BASIC aus ? - Ich muss ein Gebutstagsprogramm schreiben , dass wenn man sein Geburtsdatum eingibt den passen Wochentag angibt.Soweit bin ich momentan : PRINT "gebe hier bitte den Tag ein." INPUT d PRINT "gebe hier bitte den Monat ein." INPUT m PRINT "gebe hier das Jahr ein." INPUT y REM man soll sein geburtsdatum angeben PRINT "Du hast also am *";d;m;y; "* Geburtstag" REM gibt das Datum wieder PRINT "Es ist ein " LET z1 = INT (2.6*m-0.2) LET z2 = y+ INT (y/4)+ INT (c/4) LET z3 = d+(-2*c) |
|