flaviocimolin
(0 punti)
11' di lettura
4 / 5 (12)
In questo appunto si descrive il calendario perpetuo. Il calendario perpetuo è quel processo che permette di determinare il giorno della settimana di un certo anno. Ad esempio esso permette di rispondere alla domanda “Che giorno era il 25/4/2001?” senza l’utilizzo di computer o altri software, ma solo con conoscenze basilari di aritmetica modulare.
In questo appunto viene esposto un metodo mentale per rispondere a domande di questo tipo. Esistono altri modi di arrivare alla risposta corretta, ma ci limiteremo a presentarne solamente uno.

Le regole del nostro calendario

Di seguito viene esposto come viene articolato il nostro calendario.
Fino al 1582 veniva adottato il calendario Giuliano, che assegnava 366 giorni anziché 365 agli anni multipli di 4.
Tuttavia, si scoprì poi in seguito che un anno non è lungo 365 giorni e 6 ore, bensì 365 giorni, 6 ore, 11 minuti e 14 secondi, che apparentemente è irrilevante, ma molto rilevante se si propaga negli anni successivi. Si pensi di un orologio che torna indietro di un minuto ogni giorno: dopo due mesi sarà indietro di un’ora, e dopo un anno di circa sei ore.
Per correggere questa imprecisione, papa Gregorio nel 1582 stabilì delle nuove regole. Fece seguire al 4 ottobre 1582 il 15 ottobre 1582 (un giorno dopo l’altro) e stabilì che un anno normale avrebbe avuto 365 giorni, i bisestili 366 giorni, gli anni multipli di 100 ma non di 400 non sono bisestili, ma gli anni multipli di 400 sono invece bisestili.

Aritmetica modulare

Sembra un concetto incomprensibile, ma in realtà l’aritmetica modulare entra in gioco anche nella vita di tutti i giorni. Si pensi a come si risponderebbe alle domande “Che ora sarà tra 48 ore?” o “Che giorno della settimana sarà tra 7 giorni?”. La risposta, banale, ma vera è “La stessa”.
In aritmetica modulare la proprietà di essere nello stesso punto dopo una serie di n passi è detta congruenza modulo n. Quindi, ad esempio, i minuti sono congruenti modulo 60, le ore modulo 24, i giorni della settimana modulo 7.
Le congruenze modulo n si possono applicare per semplificare le operazioni di addizione, sottrazione e moltiplicazione: di quanti minuti si sposta la lancetta dei minuti se passano 65 minuti? Di 5 minuti, ed il risultato si può ottenere dall'operazione mod, cioè l’operazione a mod b restituisce il resto che si ottiene dividendo a per b. Ad esempio, 65 mod 60 = 5, oppure 280 mod 7 = 0, poiché 280 è divisibile per 7.
Per chiarire meglio il concetto, per rispondere alla domanda “Che giorno della settimana sarà tra 71 giorni?”, basta calcolare 71 mod 7=1. La risposta a questa domanda è infatti la stessa risposta che si dovrebbe dare alla domanda “Che giorno della settimana sarà domani?”
L’aritmetica modulare può essere utile anche per altri aspetti, come ad esempio il calcolo dell’ultima cifra di numeri molto grandi, spesso potenze di numeri.

Per approfondimenti sull'aritmetica modulare, vedi anche qua

Quante sono le settimane in un anno?

L’aritmetica modulare non permette in realtà di rispondere facilmente alla domanda “Quante settimane ci sono in un anno?”. In effetti se consideriamo settimana un arco di tempo di 7 giorni che ha inizio col lunedì e termina con la domenica, si nota che 365 mod 7 non fa 0. Quindi può darsi che il primo gennaio di un certo anno sia mercoledì e il primo gennaio di un altro anno sia domenica! Se facciamo la divisione 365/7 otteniamo 52, che è comunque il numero di settimane in un anno, ma non è detto inizino subito… infatti un anno potrebbe iniziare con una settimana incompleta proveniente dall’anno precedente. Così come 31 mod 7 non fa 0. L’operazione precedente spiega infatti perché in alcuni mesi potrebbero esserci 4 domeniche e in altri invece 5!

Introduzione al procedimento

Il procedimento è basato sulle regole fondamentali dell'aritmetica modulare. In particolare è importante ricordare che si può aggiungere o sottrarre ad un numero (in un modulo k qualsiasi) qualunque multiplo di k stesso. Ad esempio, 28 mod 7 = 35 mod 7 = 42 mod 7, e così via. Dato che siamo interessati al calendario, per il momento lavoreremo sempre in modulo 7, come 7 sono i giorni della settimana.

Assegniamo ora un numero da 0 a 6 ad ogni giorno della settimana, in ordine, assegniamo 0 alla Domenica, 1 al Lunedì, 2 al Martedì… e così via, fino ad assegnare il 6 al Sabato.
Grazie all’aritmetica modulare possiamo quindi associare ogni numero ad un giorno della settimana: prendiamo ad esempio 47. Calcoliamo 47 mod 7 = 5. Pertanto 47 è Venerdì. qualsiasi numero può essere ricondotto ad un giorno della settimana. Tale corrispondenza va tenuta ben presente, perché è la baedi questo procedimento.
Divideremo il calcolo in due parti.
Prima parte: Determinazione del giorno della settimana corrispondente ad una certa data della forma gg/mm.
Seconda parte: Determinazione del primo gennaio dell’anno corrispondente alla data di nostro interesse.
Si può a questo punto suddividere il calcolo in due parti: nella prima si determinerà a quale giorno della settimana corrisponde una data gg/mm di un ipotetico anno che inizi di Lunedì (quindi con Lunedì 1 Gennaio), e nella seconda si determinerà con quale giorno inizia effettivamente l'anno.

Prima parte

Bisogna determinare, innanzitutto, che giorno della settimana sarebbe ogni inizio mese, considerando un ipotetico anno “normale” (quindi di 365 giorni) che inizia per Lunedì. Per questo definiremo una costante N(mm) che è caratteristica per ogni mese.
In particolare definiremo N(01)=0, N(02)=3, N(03)=3, N(04)=6, N(05)=1, N(06)=4, N(07)=6, N(08)=2, N(09)=5, N(10)=0, N(11)=3, N(12)=5. (Si faccia riferimento, per una visione più chiara, alla tabella nel file in allegato). È consigliato memorizzare i valori qui esposti, relativi ai mesi.
Per ricavare il giorno della settimana in cui cade la data gg/mm, basterà calcolare gg+N(mm) mod 7, ossia, il resto che si ottiene dividendo per 7 la quantità gg+N(mm), ma soltanto nell’ipotesi che il 1 Gennaio di tale anno sia lunedì.
Se invece l’anno in corso è bisestile, abbiamo due possibilità.
Se il mese della data in questione è gennaio o febbraio, il giorno sarà nuovamente gg+N(mm) mod 7, altrimenti sarà gg+N(mm)+1 mod 7, pertanto, in sintesi, questa aggiunta va fatta solo se l’anno in corso è bisestile e la data è da Marzo in poi.
Esempio: Che giorno cade il 24 Settembre di un anno non bisestile se l’anno in questione inizia per Lunedì?
Il risultato sarà 24+N(09) mod 7 = 24+5=29=1 mod 7. Quindi è lunedì.
Anche ogni anno ha una sua costante K(aaaa), che per gli anni dal 1996 al 2006 sono, nell’ordine: 0,2,3,4,5,0,1,2,3,5,6 (vedi tabella nel file allegato).
Quindi il giorno della settimana in cui cade la data gg/mm/aaaa sarà gg+N(mm)+K(aaaa) mod 7.
Quindi ad esempio, per calcolare che giorno era il 26/5/2000 basta fare: 26+N(05)+K(2000) mod 7 =26+(6+1)+(5) mod 7 = 3, quindi mercoledì.
NB: Il +1 in N(mm) è stato aggiunto poiché l’anno è bisestile.
Visualizza il file allegato per esercizi sulla prima parte del calcolo.

Seconda parte

Sostanzialmente, l’obiettivo della seconda parte è capire che giorno della settimana è l’1 Gennaio di un certo anno.
Definiamo il numero C come segue: assegneremo ai centenari congruenti a 0 modulo 4 il numero 5-6, ai centenari congruenti a 1 modulo 4 il numero 4, ai centenari congruenti a 2 modulo 4 il numero 2, ai centenari congruenti a 3 modulo 4 il numero 0.
Ad esempio 1700 è il centenario 17, e 17 mod 4=1. Infatti a questo centenario assegneremo il numero C=4. I centenari bisestili (quelli congruenti a 0 modulo 4) hanno due numeri perché dipende dall’anno che stiamo considerando. Vale C=5 se l’anno è bisestile (es. quando l’anno è 1600,2000,2400,2800…), C=6 altrimenti, come nel caso dell’anno 2022.
Va infine determinata la costante relativa alle ultime due cifre dell’anno, che definiremo K(aa). Essa è data dalla formula:
aa+[(aa-1)/4] mod 7, dove il simbolo [x] è la funzione parte intera di x, ossia il più grande intero minore o uguale a x, quindi arrotondata per difetto.
Per fare un esempio [3,5]=3, e [9,87]=9.
Se si preferisce imparare a memoria le costanti K(aa), si faccia riferimento al file allegato. A questo punto, si hanno tutti gli strumenti per calcolare che giorno della settimana è una qualsiasi data. Si ricorda che, dato che si lavora con le congruenze modulo 7, in ogni punto del calcolo è possibile sottrarre o sommare multipli di 7 per semplificare i conti mentali.

Sintesi del procedimento

È quindi necessario:
  • Determinare G relativo al giorno del mese, ossia gg mod 7.
  • Calcolare il valore N(mm) relativo al mese, già tabulato.
  • Calcolare il valore K(aa), relativo all’anno.
  • Calcolare il valore C, relativo al centenario dell’anno in esame.
  • Stabilire se l’anno è bisestile e definiamo una costante B: B=0 se l’anno non è bisestile, altrimenti B=1.
  • Il giorno della settimana sarà quindi G+N+K+C+B (mod 7).

Per esercizi ed esempi, e ricapitolazione dei valori tabulati, si prenda in considerazione l’articolo allegato.

Scarica l'articolo completo(.PDF 151 KB)