Одређивање дана у недељи

Постоје различите методе за утврђивање дана у недељи за било који датум у прошлости или будућности. Методе су углавном засноване на алгоритмима за одређивање дана у недељи на основу датума, укључујући и оне који су засновани на табелама које не захтевају било какво израчунавање од стране корисника. Углавном се користи када неко жели да израчуна на који дан је неко рођен или на који дан се одиграо неки битан догађај.
Постоје особе са синдромом саванта које могу у року од неколико секунди или чак неколико десетинки, да кажу име дана у недељи у зависности од датума.

Увод уреди

Да би се дан у недељи одређивао преко нумеричких операција потребно је дане у недељи представити бројевима (углавном од 0 до 6, што је еквивалентно стандардном ISO 8601 представљању бројева где је 1 = Понедељак, 2 = Уторак, итд.). То се постиже математичком операцијом модула по броју 7. Операција модула по броју 7 рачуна остатак при дељењу неког броја бројем 7. Тако се број 7 гледа као 0, број 8 као 1, итд.

Главни приступ којег користе скоро све методе је израчунавање броја протеклих дана од неког референтног датума (нпр. 1. јануар 1800. године је Среда) и затим прерачунавање колико је дана протекло од тог референтног датума и примене операције модула по броју 7 на добијени број, до датума за који се покушава утврдити дан у недељи.

Још један стандардни приступ је да се израчуна који је дан у недељи први дан века коме припада задати датум. Затим се траже подешавања за месеце, израчунава се број преступних година од почетка века, и онда се све то сабере са бројем година од почетка века. ??? На крају се све завршава са бројањем дана од почетка века, на шта се примењује операција модула по броју 7 како би се утврдило који је дан у недељи за тражени датум.

Корисни концепти уреди

Месеци који међусобно одговарају уреди

Месеци који међусобно одговарају су они месеци који почињу истим даном у недељи. На пример, септембар и децембар међусобно одговарају јер је 1. септембар исти дан као и 1. децембар. Месеци међусобно одговарају само ако је број дана између њихових првих дана дељив са 7 или другачије речено, ако су им први дани удаљени неколико целих недеља. На пример, фебруару одговара март јер фебруар има 28 дана, што је дељиво са 7, а то је уједно и тачно 4 недеље удаљено од 1. фебруара.
Код преступних година, јануару и фебруару одговарају различити месеци у односу на обичне године због тога што фебруар има 29 дана.

Месеци који међусобно одговарају:
Непреступне године:

  • јануар и октобар
  • фебруар, март и новембар
  • април и јул
  • ниједан месец не одговара августу.

За преступне године:

  • јануар, април и јул
  • фебруар и август
  • март и новембар
  • ниједан месец не одговара октобру.

За све године:

  • септембар и децембар
  • ниједан месец не одговара мају и јуну.

У табели месеца приказаној испод, месеци који међусобно одговарају имају исти број, што је чињеница која произилази из дефиниције.

Године које међусобно одговарају уреди

Година може почети једним од 7 дана, а у случају преступних година дан у недељи се мења у односу на непреступне године након 29. фебруара што даје укупно 14 могућих комбинација које година може имати.

Табеларни метод уреди

Основни метод уреди

Овај метод важи и за Грегоријански и за Јулијански календар.

Формула је: , где су:

  • d је дан у месецу,
  • m број месеца из табеле месеци,
  • g су последње две цифре из броја године, и
  • v је број који представља век. За Грегоријанске датуме то је број 6 ако је број састављен од прве две цифре века дељив са 4, а надаље 4-2-0 (2000-6, 2100-4, 2200-2, 2300-0). За Јулијанске датуме број 6 је за 1200, а сваки следећи век је за један мањи док се не дође до 0 када се почиње испочетка (1300-5, 1100-0).

Ако је резултат 0 онда је на тај дан била недеља, ако је резултат 1 онда је био понедељак, итд.

Табела дана уреди

Датум d дан
01 08 15 22 29 1 Понедељак
02 09 16 23 30 2 Уторак
03 10 17 24 31 3 Среда
04 11 18 25 4 Четвртак
05 12 19 26 5 Петак
06 13 20 27 6 Субота
07 14 21 28 0 Недеља

Табела месеци уреди

Месец m Преступна година
Јануар 0 -1
Фебруар 3 2
Март 3
Април 6
Мај 1
Јун 4
Јул 6
Август 2
Септембар 5
Октобар 0
Новембар 3
Децембар 5

Табела година уреди

Година по модулу 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

Табела векова уреди

Грегоријански календар Јулијански календар
Век mod 4 Век 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

Потпуна табела уреди

Датум 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
Месец 29 30 31 Година по модулу 28 Век по модулу 4 Век по модулу 7
4 07 нед пон уто сре чет пет суб 01 07 12 18 24 16000 2000 0 0500 01200 5
9 012 суб нед пон уто сре чет пет 02 08 13 19 24 0600 01300 6
6 пет суб нед пон уто сре чет 03 08 14 20 25 1700 02100 1 0700 01400 0
20 3 011 чет пет суб нед пон уто сре 04 09 15 20 26 08000 1500 1
8 сре чет пет суб нед пон уто 04 10 16 21 27 1800 02200 2 0900 00200 2
5 уто сре чет пет суб нед пон 05 11 16 22 00 10000 0300 3
10 10 пон уто сре чет пет суб нед 06 12 17 23 00 1900 02300 3 1100 00400 4

Одређивање дана у недељи за датум 1. јануар 2000. године (субота):

  • дан у месецу: 1 ~ 31 (1)
  • месец: 1 за јануар ~ 12 за децембар (1)
  • година: 00 ~ 99 mod 28 и искошено за јануар и фебруару у преступним годинама (00)
  • век mod 4 за Грегоријански календар и век mod 7 за Јулијански календат (20 или 0 ~ субота).

За датум по Грегоријанском календару (1. јануар 2000. године - субота)

  • дан у месецу: 1
  • јануар у табели месеци: 6
  • последље две цифре године (подељене са 4): 0
  • број века: 6

Резултат је 13, што даје остатак од 6 када се подели са 7, па је 1. јануар 2000. године била субота.

За датум по Јулијанском календару (13. октобар 1307.)

  • дан у месецу: 13
  • Октобар у табели месеци: 0
  • Последње две цифре године подељене са 4: 1
  • последње две цифре године: 7
  • број века: 5

Резултат је 26, што даје остатак од 5 при дељењу са 7, па је 13. октобар 1307. године био петак.

Гаусов алгоритам уреди

Карл Фридрих Гаус је у својим белешкама астрономских таблица описао методу за израчунавање дана сваког првог јануара било које године.[1] Никада те белешке није објавио, али је то укључено у збирку његових радова која је издата 1927. године.[2]

Гаусова метода је примењива на Грегоријански календар. Дане у недељи је означио бројевима од 0 до 6 почев са недељом. Дефинисао је и следеће операције: Дан у недељи првог јануара у некој години је[1]

 

где је R(g,m) остатак при дељењу g са m,[2] или g mod m.

Ова формула је претворена у табеларни метод за израчунавање дана у недељи за било који датум које су конструисали Крајчик и Швердтфегер.[2][3]

Формуле изведене из Гаусовог алгоритма уреди

Гаусова формула за први јануар може бити претворена у методу за одређивање дана у недељи за било који дан у недељи.

  • За Грегоријански календар
Нека је A - 1 = година = Y, m = месец - 2 mod 12 (март = 1,..., јануар = -1 mod 12 = 11 и фебруар = 12) и d = дан у месецу. Тада ова формула постаје
 
Ако је A - 1 = година = y + 100c, ова формула постаје
 
  • За Јулијански календар
 
 
  • Белешка: година - 1 за јануар и фебруар.
За 1. јануар 2000. године, датум се третира као 11 месец 1999. године,
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 = субота.
За 31. децембар 2000. године, датум се третира као 10. месец у години,
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 = недеља.
За 30. април 1977. године, датум се третира као други месец у години,
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 = среда.
4. октобар 1582. године се третира као осми месец у години,
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 = четвртак.
1. јануар 0. године (први дан нове ере) се третира као 11. месец претходне године,
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 = четвртак.

Крајчиков алгоритам уреди

Крајчик је предложио два метода за одређивање дана у недељи. Један је графички метод, а други користи следећу формулу

 

где јеw дан у недељи (недеља је представљена бројем 1); а m, c и y су бројеви који означавају месец, дан и годину на основу следећих табела:

Месеци 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

За Грегоријански календар,

[Година/100] mod 4 0 1 2 3
c 0 5 3 1

За Јулијански календар,

[Година/100] mod 7 0 1 2 3 4 5 6
c 5 4 3 2 1 0 6

Коначно, број године је узима из следеће табеле:

Последње две цифре године 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

Шверфтфегерова варијација уреди

У овој верзији година је подељена на две цифре века и две цифре године. Приступ зависи од месеца. За m ≥ 3,

 

па g је између 0 и 99. За m = 1,2,

 

Формула за одређивање дана у недељи је[2]

 

где су изабрани позитивни модули.[2]

Вредност броја e се узима из следеће табеле:

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

Вредност за f се узима из следеће табеле, што ипак зависи од календара. За Грегоријански календар,[2]

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

За Јулијански календар,[2]

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

Друге варијације уреди

Друга варијација горњег алгоритма ради са мање табела. Благи недостатак је необична конвенција за бројање месеци и година. Формула је

 

где

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

На пример, за 1. јануар 2000. године (година ' 1 за јануар)

  •    
  •    

Белешка: Први је за године које се завршавају са 00 али су преступне године, а други је за било коју годину која се завршава са 00.

Термин [2.6m - 0.2] mod 7 даје вредност за месец: m

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

Термин y + [y/4] mod 7 даје вредност за године: 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

Термин [c/4] - 2c mod 7 даје вредност за векове: c

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

Сада је укупна формула:  ; 1. јануар 2000. године се може израчунати на следећи начин:

  •  , 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)

Други математички алгоритми уреди

Зелеров алгоритам уреди

Код Зелеровог алгоритма месеци су означени бројевима од 3 за март до 14 за фебруар. За годину се претпоставља у марту, што значи да да ће на пример јануар 1995. године бити третиран као 13. месец 1994. године.[4] Формула за Грегоријански календар је

 

где је

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

Једина разлика између Зелеровог алгоритма (З) и Гаусовог алгоритма (Г), је у томе што је З - Г = 1 = недеља.

 

  (март=3 код З, али март=1 код Г)
 
 
Вредности за месеце можемо добити из Гаусовог алгоритма једноставно додајући 1:

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

Тондерингов алгоритам уреди

Алгоритам Клауса Тондеринга користи конгруенцију слично као код Гаусове методе, премештањем бројева месеци за исти износ, и тиме добијамо иста подешавања за исти месец. Разликује се од остатка Гаусовог алгоритма јер не одваја век од године, делећи у више засебних једначина, од којих је последња иста као она која се користи у Сакамотов методу за одређивање дана у недељи.[5]


Друге методе уреди

Референце уреди

  1. ^ а б 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. изд.). Hildesheim: Georg Olms Verlag. стр. 206—207. ISBN 9783487046433. 
  2. ^ а б в г д ђ е Schwerdtfeger, Berndt E. (7. 5. 2010). „Gauss' calendar formula for the day of the week” (PDF) (1.4.26 изд.). Архивирано из оригинала (pdf) 11. 1. 2014. г. Приступљено 23. 12. 2012. 
  3. ^ Kraitchik, Maurice (1942). „Chapter five: The calendar”. Mathematical recreations (2nd rev. [Dover] изд.). Mineola: Dover Publications. стр. 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. Архивирано из оригинала 29. 07. 2013. г. Приступљено 19. 12. 2012. 
  5. ^ Tøndering, Claus. „What day of the week was 2 August 1953?”. The Calendar FAQ. Приступљено 19. 12. 2012. 

Литература уреди

  • Kraitchik, Maurice (1942). „Chapter five: The calendar”. Mathematical recreations (2nd rev. [Dover] изд.). Mineola: Dover Publications. стр. 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. изд.). Hildesheim: Georg Olms Verlag. стр. 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. изд.). Hildesheim: Georg Olms Verlag. стр. 206—207. ISBN 9783487046433. 
  • Hale-Evans, Ron (2006). „Hack #43: Calculate any weekday”. Mind performance hacks (1st изд.). Beijing: O'Reilly. стр. 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.]. изд.). London: Jessica Kingsley. стр. 63—66. ISBN 9781849058735. 

Спољашње везе уреди