Određivanje dana u nedelji

S Vikipedije, slobodne enciklopedije

Postoje različite metode za utvrđivanje dana u nedelji za bilo koji datum u prošlosti ili budućnosti. Metode su uglavnom zasnovane na algoritmima za određivanje dana u nedelji na osnovu datuma, uključujući i one koji su zasnovani na tabelama koje ne zahtevaju bilo kakvo izračunavanje od strane korisnika. Uglavnom se koristi kada neko želi da izračuna na koji dan je neko rođen ili na koji dan se odigrao neki bitan događaj.
Postoje osobe sa sindromom savanta koje mogu u roku od nekoliko sekundi ili čak nekoliko desetinki, da kažu ime dana u nedelji u zavisnosti od datuma.

Uvod[uredi | uredi izvor]

Da bi se dan u nedelji određivao preko numeričkih operacija potrebno je dane u nedelji predstaviti brojevima (uglavnom od 0 do 6, što je ekvivalentno standardnom ISO 8601 predstavljanju brojeva gde je 1 = Ponedeljak, 2 = Utorak, itd.). To se postiže matematičkom operacijom modula po broju 7. Operacija modula po broju 7 računa ostatak pri deljenju nekog broja brojem 7. Tako se broj 7 gleda kao 0, broj 8 kao 1, itd.

Glavni pristup kojeg koriste skoro sve metode je izračunavanje broja proteklih dana od nekog referentnog datuma (npr. 1. januar 1800. godine je Sreda) i zatim preračunavanje koliko je dana proteklo od tog referentnog datuma i primene operacije modula po broju 7 na dobijeni broj, do datuma za koji se pokušava utvrditi dan u nedelji.

Još jedan standardni pristup je da se izračuna koji je dan u nedelji prvi dan veka kome pripada zadati datum. Zatim se traže podešavanja za mesece, izračunava se broj prestupnih godina od početka veka, i onda se sve to sabere sa brojem godina od početka veka. ??? Na kraju se sve završava sa brojanjem dana od početka veka, na šta se primenjuje operacija modula po broju 7 kako bi se utvrdilo koji je dan u nedelji za traženi datum.

Korisni koncepti[uredi | uredi izvor]

Meseci koji međusobno odgovaraju[uredi | uredi izvor]

Meseci koji međusobno odgovaraju su oni meseci koji počinju istim danom u nedelji. Na primer, septembar i decembar međusobno odgovaraju jer je 1. septembar isti dan kao i 1. decembar. Meseci međusobno odgovaraju samo ako je broj dana između njihovih prvih dana deljiv sa 7 ili drugačije rečeno, ako su im prvi dani udaljeni nekoliko celih nedelja. Na primer, februaru odgovara mart jer februar ima 28 dana, što je deljivo sa 7, a to je ujedno i tačno 4 nedelje udaljeno od 1. februara.
Kod prestupnih godina, januaru i februaru odgovaraju različiti meseci u odnosu na obične godine zbog toga što februar ima 29 dana.

Meseci koji međusobno odgovaraju:
Neprestupne godine:

  • januar i oktobar
  • februar, mart i novembar
  • april i jul
  • nijedan mesec ne odgovara avgustu.

Za prestupne godine:

  • januar, april i jul
  • februar i avgust
  • mart i novembar
  • nijedan mesec ne odgovara oktobru.

Za sve godine:

  • septembar i decembar
  • nijedan mesec ne odgovara maju i junu.

U tabeli meseca prikazanoj ispod, meseci koji međusobno odgovaraju imaju isti broj, što je činjenica koja proizilazi iz definicije.

Godine koje međusobno odgovaraju[uredi | uredi izvor]

Godina može početi jednim od 7 dana, a u slučaju prestupnih godina dan u nedelji se menja u odnosu na neprestupne godine nakon 29. februara što daje ukupno 14 mogućih kombinacija koje godina može imati.

Tabelarni metod[uredi | uredi izvor]

Osnovni metod[uredi | uredi izvor]

Ovaj metod važi i za Gregorijanski i za Julijanski kalendar.

Formula je:, gde su:

  • d je dan u mesecu,
  • m broj meseca iz tabele meseci,
  • g su poslednje dve cifre iz broja godine, i
  • v je broj koji predstavlja vek. Za Gregorijanske datume to je broj 6 ako je broj sastavljen od prve dve cifre veka deljiv sa 4, a nadalje 4-2-0 (2000-6, 2100-4, 2200-2, 2300-0). Za Julijanske datume broj 6 je za 1200, a svaki sledeći vek je za jedan manji dok se ne dođe do 0 kada se počinje ispočetka (1300-5, 1100-0).

Ako je rezultat 0 onda je na taj dan bila nedelja, ako je rezultat 1 onda je bio ponedeljak, itd.

Tabela dana[uredi | uredi izvor]

Datum d dan
01 08 15 22 29 1 Ponedeljak
02 09 16 23 30 2 Utorak
03 10 17 24 31 3 Sreda
04 11 18 25 4 Četvrtak
05 12 19 26 5 Petak
06 13 20 27 6 Subota
07 14 21 28 0 Nedelja

Tabela meseci[uredi | uredi izvor]

Mesec m Prestupna godina
Januar 0 -1
Februar 3 2
Mart 3
April 6
Maj 1
Jun 4
Jul 6
Avgust 2
Septembar 5
Oktobar 0
Novembar 3
Decembar 5

Tabela godina[uredi | uredi izvor]

Godina po modulu 100 g
00 06 17 23 28 34 45 51 56 62 73 79 84 90 0
01 07 12 18 29 35 40 46 57 63 68 74 85 91 96 1
02 13 19 24 30 41 47 52 58 69 75 80 86 97 2
03 08 14 25 31 36 42 53 59 64 70 81 87 92 98 3
09 15 20 26 37 43 48 54 65 71 76 82 93 99 4
04 10 21 27 32 38 49 55 60 66 77 83 88 94 5
05 11 16 22 33 39 44 50 61 67 72 78 89 95 6

Tabela vekova[uredi | uredi izvor]

Gregorijanski kalendar Julijanski kalendar
Vek mod 4 Vek mod 7 v
(1700, 2100) 1 (1400, 0700) 0 4
(1500, 0800) 1 3
(1800, 2200) 2 (1600, 0900) 2 2
(1700, 1000) 3 1
(1900, 2300) 3 (1800, 1100) 4 0
(2000, 2400) 0 (1200, 0500) 5 6
(1300, 0600) 6 5

Potpuna tabela[uredi | uredi izvor]

Datum 01 02 03 04 05 06 07
08 09 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
Mesec 29 30 31 Godina po modulu 28 Vek po modulu 4 Vek po modulu 7
4 07 ned pon uto sre čet pet sub 01 07 12 18 24 16000 2000 0 0500 01200 5
9 012 sub ned pon uto sre čet pet 02 08 13 19 24 0600 01300 6
6 pet sub ned pon uto sre čet 03 08 14 20 25 1700 02100 1 0700 01400 0
20 3 011 čet pet sub ned pon uto sre 04 09 15 20 26 08000 1500 1
8 sre čet pet sub ned pon uto 04 10 16 21 27 1800 02200 2 0900 00200 2
5 uto sre čet pet sub ned pon 05 11 16 22 00 10000 0300 3
10 10 pon uto sre čet pet sub ned 06 12 17 23 00 1900 02300 3 1100 00400 4

Određivanje dana u nedelji za datum 1. januar 2000. godine (subota):

  • dan u mesecu: 1 ~ 31 (1)
  • mesec: 1 za januar ~ 12 za decembar (1)
  • godina: 00 ~ 99 mod 28 i iskošeno za januar i februaru u prestupnim godinama (00)
  • vek mod 4 za Gregorijanski kalendar i vek mod 7 za Julijanski kalendat (20 ili 0 ~ subota).

Za datum po Gregorijanskom kalendaru (1. januar 2000. godine - subota)

  • dan u mesecu: 1
  • januar u tabeli meseci: 6
  • posledlje dve cifre godine (podeljene sa 4): 0
  • broj veka: 6

Rezultat je 13, što daje ostatak od 6 kada se podeli sa 7, pa je 1. januar 2000. godine bila subota.

Za datum po Julijanskom kalendaru (13. oktobar 1307.)

  • dan u mesecu: 13
  • Oktobar u tabeli meseci: 0
  • Poslednje dve cifre godine podeljene sa 4: 1
  • poslednje dve cifre godine: 7
  • broj veka: 5

Rezultat je 26, što daje ostatak od 5 pri deljenju sa 7, pa je 13. oktobar 1307. godine bio petak.

Gausov algoritam[uredi | uredi izvor]

Karl Fridrih Gaus je u svojim beleškama astronomskih tablica opisao metodu za izračunavanje dana svakog prvog januara bilo koje godine.[1] Nikada te beleške nije objavio, ali je to uključeno u zbirku njegovih radova koja je izdata 1927. godine.[2]

Gausova metoda je primenjiva na Gregorijanski kalendar. Dane u nedelji je označio brojevima od 0 do 6 počev sa nedeljom. Definisao je i sledeće operacije: Dan u nedelji prvog januara u nekoj godini je[1]

gde je R(g,m) ostatak pri deljenju g sa m,[2] ili g mod m.

Ova formula je pretvorena u tabelarni metod za izračunavanje dana u nedelji za bilo koji datum koje su konstruisali Krajčik i Šverdtfeger.[2][3]

Formule izvedene iz Gausovog algoritma[uredi | uredi izvor]

Gausova formula za prvi januar može biti pretvorena u metodu za određivanje dana u nedelji za bilo koji dan u nedelji.

  • Za Gregorijanski kalendar
Neka je A - 1 = godina = Y, m = mesec - 2 mod 12 (mart = 1,..., januar = -1 mod 12 = 11 i februar = 12) i d = dan u mesecu. Tada ova formula postaje
Ako je A - 1 = godina = y + 100c, ova formula postaje
  • Za Julijanski kalendar
  • Beleška: godina - 1 za januar i februar.
Za 1. januar 2000. godine, datum se tretira kao 11 mesec 1999. godine,
d = 1
[2.6 × 11 - 0.2] = 28 mod 7 = 0
5R(99,4) = 5 × 3 = 15 mod 7 = 1
4R(1999,100) = 4 × 99 mod 7 = 4 × 1 = 4
6R(1999,400) = 6 × 399 mod 7 = 6 × 0 = 0
3R(99,7) = 3 × 1 = 3
5R(19,4) = 5 × 3 mod 7 = 1
w = 1 + 0 + 1 + 4 + 0 = 1 + 0 + 1 + 3 + 1 = 6 = subota.
Za 31. decembar 2000. godine, datum se tretira kao 10. mesec u godini,
d = 31 mod 7 = 3
[2.6 × 10 - 0.2] = 25 mod 7 = 4
5R(00,4) = 5 × 0 = 0
4R(2000,100) = 4 × 0 = 0
6R(2000,400) = 6 × 0 = 0
3R(00,7) = 3 × 0 = 0
5R(20,4) = 5 × 0 = 0
w = 3 + 4 + 0 + 0 + 0 = 3 + 4 + 0 + 0 + 0 = 7 mod 7 = 0 = nedelja.
Za 30. april 1977. godine, datum se tretira kao drugi mesec u godini,
d = 30 mod 7 = 2
[2.6 × 2 - 0.2] = 5
5R(77,4) = 5 × 1 = 5
4R(1777,100) = 4 × 77 mod 7 = 0
6R(1777,400) = 6 × 177 mod 7 = 6 × 2 mod 7 = 5
3R(77,7) = 3 × 0 = 0
5R(17,4) = 5 × 1 = 5
w = 2 + 5 + 5 + 0 + 5 = 17 mod 7 = 3 = sreda.
4. oktobar 1582. godine se tretira kao osmi mesec u godini,
d = 4
[2.6 × 8 – 2.2] = 4
5R(82,4) = 5 × 2 mod 7 = 3
3R(1582, 7) = 3 × 0 = 0
3R(82,7) = 3 × 5 mod 7 = 1
6R(15,7) = 6 × 1 = 6
w = 4 + 4 + 3 + 0 mod 7 = 4 + 4 + 3 + 1 + 6 mod 7 = 4 = četvrtak.
1. januar 0. godine (prvi dan nove ere) se tretira kao 11. mesec prethodne godine,
d = 1
[2.6 × 11 – 2.2] = 5
5R(-1,4) = 5 × 3 mod 7 = 1
3R(-1,7) = 3 × 6 mod 7 = 4
3R(-1,7) = 3 × 6 mod 7 = 4
6R(0,7) = 6 × 0 = 0
w = 1 + 5 + 1 + 4 mod 7 = 1 + 5 + 1 + 4 + 0 mod 7 = 4 = četvrtak.

Krajčikov algoritam[uredi | uredi izvor]

Krajčik je predložio dva metoda za određivanje dana u nedelji. Jedan je grafički metod, a drugi koristi sledeću formulu

gde jew dan u nedelji (nedelja je predstavljena brojem 1); a m, c i y su brojevi koji označavaju mesec, dan i godinu na osnovu sledećih tabela:

Meseci 1 2 3 4 5 6 7 8 9 10 11 12
m 1 4 3 6 1 4 6 2 5 0 3 5

Za Gregorijanski kalendar,

[Godina/100] mod 4 0 1 2 3
c 0 5 3 1

Za Julijanski kalendar,

[Godina/100] mod 7 0 1 2 3 4 5 6
c 5 4 3 2 1 0 6

Konačno, broj godine je uzima iz sledeće tabele:

Poslednje dve cifre godine y
00 06 17 23 28 34 45 51 56 62 73 79 84 90 0
01 07 12 18 29 35 40 46 57 63 68 74 85 91 96 1
02 13 19 24 30 41 47 52 58 69 75 80 86 97 2
03 08 14 25 31 36 42 53 59 64 70 81 87 92 98 3
09 15 20 26 37 43 48 54 65 71 76 82 93 99 4
04 10 21 27 32 38 49 55 60 66 77 83 88 94 5
05 11 16 22 33 39 44 50 61 67 72 78 89 95 6

Šverftfegerova varijacija[uredi | uredi izvor]

U ovoj verziji godina je podeljena na dve cifre veka i dve cifre godine. Pristup zavisi od meseca. Za m ≥ 3,

pa g je između 0 i 99. Za m = 1,2,

Formula za određivanje dana u nedelji je[2]

gde su izabrani pozitivni moduli.[2]

Vrednost broja e se uzima iz sledeće tabele:

m 1 2 3 4 5 6 7 8 9 10 11 12
e 0 3 2 5 0 3 5 1 4 6 2 4

Vrednost za f se uzima iz sledeće tabele, što ipak zavisi od kalendara. Za Gregorijanski kalendar,[2]

c mod 4 0 1 2 3
f 0 5 3 1

Za Julijanski kalendar,[2]

c mod 7 0 1 2 3 4 5 6
f 5 4 3 2 1 0 6

Druge varijacije[uredi | uredi izvor]

Druga varijacija gornjeg algoritma radi sa manje tabela. Blagi nedostatak je neobična konvencija za brojanje meseci i godina. Formula je

gde

Y година минус 1 за јануар и фебруар, а година за остале месеце у години
y су последње две цифре године
c су прве две цифре године
d је дан у месецу (1 до 31)
m су премештени месеци (март=1,...фебруар=12)
w је дан у недељи (0=недеља,..6=субота)

Na primer, za 1. januar 2000. godine (godina ' 1 za januar)

Beleška: Prvi je za godine koje se završavaju sa 00 ali su prestupne godine, a drugi je za bilo koju godinu koja se završava sa 00.

Termin [2.6m - 0.2] mod 7 daje vrednost za mesec: m

месеци             m
јануар                0
фебруар               3 
март                  2
април                 5
мај                   0
јун                   3
јул                   5
август                1
септембар             4
октобар               6
новембар              2
децембар              4

Termin y + [y/4] mod 7 daje vrednost za godine: y

Y mod 28              y
01 07 12 18–1
02 -– 13 19 24        2
03 08 14 –- 25        3
-- 09 15 20 26        4
04 10 –- 21 27        5
05 11 16 22 –-        6
06 -– 17 23 00        0

Termin [c/4] - 2c mod 7 daje vrednost za vekove: c

C mod 4               c   
1                     5
2                     3
3                     1
0                     0

Sada je ukupna formula: ; 1. januar 2000. godine se može izračunati na sledeći način:

  • , d = 1, m = 0, y = 5 (0 - 1 mod 28 = 27), c = 0 (20 mod 4 = 0)
  • , d = 1, m = 0, y = 4 (99 mod 28 = 15), c = 1 (20 - 1 mod 4 = 3)

Drugi matematički algoritmi[uredi | uredi izvor]

Zelerov algoritam[uredi | uredi izvor]

Kod Zelerovog algoritma meseci su označeni brojevima od 3 za mart do 14 za februar. Za godinu se pretpostavlja u martu, što znači da da će na primer januar 1995. godine biti tretiran kao 13. mesec 1994. godine.[4] Formula za Gregorijanski kalendar je

gde je

Y година минус 1 за јануар и фебруар, а година за остатак месеци
y последње две цифре године
c прве две цифре године
d дан у месецу (1 до 31)
m су премештени месеци (март=1,...фебруар=12)
w је дан у недељи (1=недеља,..0=субота)

Jedina razlika između Zelerovog algoritma (Z) i Gausovog algoritma (G), je u tome što je Z - G = 1 = nedelja.

(mart=3 kod Z, ali mart=1 kod G)


Vrednosti za mesece možemo dobiti iz Gausovog algoritma jednostavno dodajući 1:

месец              m
јануар                1
фебруар               4 
март                  3
април                 6
мај                   1
јун                   4
јул                   6
август                2
септембар             5
октобар               0
новембар              3
децембар              5

Tonderingov algoritam[uredi | uredi izvor]

Algoritam Klausa Tonderinga koristi kongruenciju slično kao kod Gausove metode, premeštanjem brojeva meseci za isti iznos, i time dobijamo ista podešavanja za isti mesec. Razlikuje se od ostatka Gausovog algoritma jer ne odvaja vek od godine, deleći u više zasebnih jednačina, od kojih je poslednja ista kao ona koja se koristi u Sakamotov metodu za određivanje dana u nedelji.[5]


Druge metode[uredi | uredi izvor]

Reference[uredi | uredi izvor]

  1. ^ a b Gauss, Carl F. (1981). „Den Wochentag des 1. Januar eines Jahres zu finden. Güldene Zahl. Epakte. Ostergrenze.”. Werke. herausgegeben von der Königlichen Gesellschaft der Wissenschaften zu Göttingen. (2. Nachdruckaufl. izd.). Hildesheim: Georg Olms Verlag. str. 206—207. ISBN 9783487046433. 
  2. ^ a b v g d đ e Schwerdtfeger, Berndt E. (7. 5. 2010). „Gauss' calendar formula for the day of the week” (PDF) (1.4.26 izd.). Arhivirano iz originala (pdf) 11. 1. 2014. g. Pristupljeno 23. 12. 2012. 
  3. ^ Kraitchik, Maurice (1942). „Chapter five: The calendar”. Mathematical recreations (2nd rev. [Dover] izd.). Mineola: Dover Publications. str. 109—116. ISBN 9780486453583. 
  4. ^ Stockton, J. R. (19. 3. 2010). „The Calendrical Works of Rektor Chr. Zeller : The Day-of-Week and Easter Formulae”. Merlyn. Arhivirano iz originala 29. 07. 2013. g. Pristupljeno 19. 12. 2012. 
  5. ^ Tøndering, Claus. „What day of the week was 2 August 1953?”. The Calendar FAQ. Pristupljeno 19. 12. 2012. 

Literatura[uredi | uredi izvor]

  • Kraitchik, Maurice (1942). „Chapter five: The calendar”. Mathematical recreations (2nd rev. [Dover] izd.). Mineola: Dover Publications. str. 109—116. ISBN 9780486453583. 
  • Gauss, Carl F. (1981). „Den Wochentag des 1. Januar eines Jahres zu finden. Güldene Zahl. Epakte. Ostergrenze.”. Werke. herausgegeben von der Königlichen Gesellschaft der Wissenschaften zu Göttingen. (2. Nachdruckaufl. izd.). Hildesheim: Georg Olms Verlag. str. 206—207. ISBN 9783487046433. 
  • Gauss, Carl F. (1981). „Den Wochentag des 1. Januar eines Jahres zu finden. Güldene Zahl. Epakte. Ostergrenze.”. Werke. herausgegeben von der Königlichen Gesellschaft der Wissenschaften zu Göttingen. (2. Nachdruckaufl. izd.). Hildesheim: Georg Olms Verlag. str. 206—207. ISBN 9783487046433. 
  • Hale-Evans, Ron (2006). „Hack #43: Calculate any weekday”. Mind performance hacks (1st izd.). Beijing: O'Reilly. str. 164-169. ISBN 9780596101534. 
  • Thioux, Marc (2006). Stark, David E.; Klaiman, Cheryl; Schultz, Robert T.. „The day of the week when you were born in 700 ms: Calendar computation in an autistic savant.”. Journal of Experimental Psychology: Human Perception and Performance. 32 (5): 1155—1168. doi:10.1037/0096-1523.32.5.1155. 
  • Treffert, Darold A. „Why calendar calculating?”. Islands of genius : the bountiful mind of the autistic, acquired, and sudden savant (1. publ., [repr.]. izd.). London: Jessica Kingsley. str. 63—66. ISBN 9781849058735. 

Spoljašnje veze[uredi | uredi izvor]