mercoledì 3 luglio 2013

Letture...

Tre libri, letti negli ultimi mesi, giacciono da un po' sulla mia scrivania in attesa di trovare posto su qualche scaffale.

martedì 2 luglio 2013

Frazioni continue e calendari

Gli ultimi tre post mi hanno ricordato un paper letto anni fa, attorno al quale avevo costruito alcune lezioni nell'ambito di un corso opzionale denominato "Applicazioni della Matematica". Si tratta di Modern calendar and continued fractions, di Yury Grabovsky, professore associato alla Temple University, un interessante studio del calendario gregoriano effettuato con l'aiuto delle frazioni continue.
L'antefatto è abbastanza noto: nel 1582 papa Gregorio XIII impose nei paesi cattolici l'adozione di una versione rivista del cosiddetto calendario giuliano (in vigore dal 46 a.C.), che diminuiva da 100 a 97 il numero di anni bisestili in quattro secoli (rendendo "comuni" gli anni multipli di 100 ma non di 400). Ciò ridusse la durata media dell'anno da 365,25 a 365,2425 giorni, avvicinandola al valore effettivo di 365,24219878. Tra l'altro, l'adozione in tempi diversi del "nuovo" calendario è all'origine dell'apparente coincidenza tra le date di morte di William Shakespeare e Miguel de Cervantes (23 aprile 1616; il 23 aprile è la data scelta dall'UNESCO per la Giornata mondiale del libro).
Seguendo Grabovsky, esaminiamo ora il "problema del calendario" con l'aiuto delle frazioni continue. Supponiamo innanzitutto di voler approssimare la durata dell'anno solare inserendo $b$ anni bisestili nel corso di $c$ secoli: la durata media dell'anno solare sarà pari, in giorni, a $$ \frac{365 \cdot 100c+b}{100c}=365+\frac{b}{100c}\; ; $$ di conseguenza dovrà valere $$ 365+\frac{b}{100c} \cong 365,24219878 $$ e quindi $$ \frac{b}{c} \cong 24, 219878 \; . $$ Il problema si riduce quindi alla ricerca di un'approssimazione (razionale) accurata del numero  24,219878. Le frazioni continue si rivelano particolarmente adatte allo scopo: se vale $$ \alpha= a_0+\frac{1}{a_1+\frac{1}{a_2+\frac{1}{a_3+\ldots}}}= \underbrace{[a_0;a_1,a_2,a_3,\ldots]}_{\text{notazione}} $$ allora, rappresentando con $$ \frac{h_n}{k_n}=[a_0;a_1,a_2,\ldots,a_n]=  a_0+\frac{1}{a_1+\frac{1}{a_2+\frac{1}{\ddots+\frac{1}{a_n}}}} $$ il cosiddetto $n$-esimo convergente si ha $$ \lim_{n\to\infty}\frac{h_n}{k_n}=\alpha $$ (in altre parole: la successione dei convergenti rappresenta approssimazioni sempre più accurate del numero $\alpha$) e se $\frac{a}{b}$ rappresenta una frazione ridotta ai minimi termini vale $$ \left| \alpha -\frac{a}{b} \right| < \left| \alpha -  \frac{h_n}{k_n} \right| \quad\Longrightarrow\quad b > k_n $$ (in altre parole: l'$n$-esimo convergente è più vicino ad $\alpha$ di qualsiasi frazione con denominatore minore di $k_n$, vale a dire che l'approssimazione $\frac{h_n}{k_n}$ è ottimale). Con $\alpha=24, 219878$ si ottiene (con una tecnica ispirata dall'algoritmo euclideo per la divisione) $$ 24, 219878 = 24+\frac{1}{4+\frac{1}{1+\frac{1}{1+\frac{1}{4+\ldots}}}}= [24;4,1,1,4,\ldots] $$ e quindi i convergenti $$ \frac{h_1}{k_1}=24+\frac{1}{4}=\frac{97}{4} \;,\;  \frac{h_2}{k_2}=24+\frac{1}{4+\frac{1}{1}}=\frac{121}{5} \;,\;   \frac{h_3}{k_3}=\frac{993}{41} \; , \ldots $$ Il primo dei convergenti rappresenta proprio il calendario gregoriano: un ciclo di 4 secoli con 97 anni bisestili. Curiosamente, al team di esperti messi in campo da papa Gregorio era sfuggito (forse a causa dell'imprecisione dei dati astronomici) un semplice modo per rendere ancora più preciso il calendario: un ciclo di 5 secoli con 121 anni bisestili, realizzabile ad esempio eliminando dal calendario giuliano gli anni bisestili multipli di 100 ma non di 500.

sabato 8 giugno 2013

Doomsday+2


È del 2011 un'ulteriore "semplificazione" della formula $$y=\left(x+\left\lfloor\frac{x}{4}\right\rfloor\right)\bmod7$$ ad opera di Chamberlain Fong e Michael K. Walters (vedi qui e, soprattutto, qui). Si tratta di $$y=-\left(\frac{x+11\cdot (x\,{\rm mod}\,2)}{2}+11\cdot\left(\frac{x+11\cdot(x\,{\rm mod}\,2)}{2}{\rm mod}\,2\right)\right){\rm mod}\,7\;.$$
Cos'è 'sta roba? Vi chiederete.



Beh, a dispetto della sua apparente imperscrutabilità, questa versione offre alcuni vantaggi: essa permette di calcolare il valore dello spostamento $y$ con una semplice sequenza di passi che richiedono operazioni aritmetiche molto semplici. Vediamone una parafrasi dettagliata:
  • se $x$ è pari, dividi per due; se è dispari, aggiungi 11 e dividi per due;
  • se il risultato ottenuto è pari lascialo invariato, se è dispari aggiungi 11;
  • calcola il resto della divisione per 7;
  • sottrai da 7 quanto ottenuto.

Ad esempio (cfr. con i precedenti post), con $x=71$ iniziamo aggiungendo 11 e dividendo per 2, ottenendo 41, dispari. Aggiungiamo nuovamente 11, ottenendo 52; il resto di 52:7 è 3; sottraiamo 3 da 7, ottenendo 4. Analogamente, da $x=7$ otteniamo 18, dividiamo per 2 ottenendo 9, aggiungiamo 11, il resto di 20:7 è 6, che sottratto da 7 dà 1. Facile, no?

venerdì 7 giugno 2013

Doomsday+1


Apparentemente, dividere per quattro o per sette un numero di taglia moderata non è un'operazione del tutto agevole. Per questo motivo, nel 1973 Conway propose di rimpiazzare la formula$$ y=\left( x + \left\lfloor \frac{x}{4} \right\rfloor \right) \bmod 7 $$ con l'equivalente$$ y=\left( \left\lfloor \frac{x}{12} \right\rfloor + x \bmod 12 + \left\lfloor \frac{x \bmod 12}{4} \right\rfloor \right) \bmod 7 \quad,$$ che richiede la manipolazione di numeri più piccoli. In effetti, i primi due termini della somma sono quoziente e resto della divisione euclidea $x:12$, e il terzo si ricava facilmente dal secondo. Ad esempio (cfr. con il post di ieri), per $x=71=5\cdot12+11$ occorre calcolare $$ \left(5+11+\left\lfloor\frac{11}{4}\right\rfloor\right) \bmod 7 = \underbrace{\left(5+11+2\right) \bmod 7}_{18\,{\rm mod}\,7} =4 $$ e per $x=7=0\cdot12+7$ $$\left(0+7+\left\lfloor\frac{7}{4}\right\rfloor\right) \bmod 7 = \underbrace{(0+7+1)\bmod 7 }_{8\,{\rm mod}\,7}= 1 \;. $$ 

giovedì 6 giugno 2013

Oggi è doomsday


(essenzialmente, un altro post ispirato dal geniale John Conway).

L'altra sera, commentando le performances di un astro nascente del mentalismo (nonché mio ex-allievo), il discorso è caduto sulla sua capacità di azzeccare quasi istantaneamente il giorno della settimana relativo ad una qualsiasi data. In effetti, la facoltà potrebbe sembrare quasi paranormale (e magari un po' lo è, vista la sua velocità nell'eseguire i calcoli, anche se forse il suo metodo si basa su una serie di date memorizzate in precenza), ma in realtà l'esercizio è alla portata di chiunque abbia un minimo di scioltezza nel calcolo mentale.
Il procedimento descritto da Conway negli anni '70 (ma ispirato da altri autori, ad esempio Lewis Carroll) si basa sull'osservazione che alcune date facili da memorizzare (l'ultimo giorno di febbraio, la sequenza 4.4/6.6/8.8/10.10/12.12, le coppie 5.9/9.5 e 7.11/11.7, il 3 gennaio negli anni comuni e il 4 gennaio nei bisestili) cadono sempre nello stesso giorno della settimana. Identificato tale giorno, che Conway battezza con il pittoresco nome di doomsday, non è quindi difficile situare nella settimana una data qualsiasi. Ad esempio, dal momento che il doomsday per l'anno 1971 cade di domenica (vedremo poi perché), procedendo a ritroso dall'8 agosto è facile affermare che il sottoscritto nacque di lunedì (2 agosto).
Il problema si riduce quindi alla determinazione del doomsday per un dato anno; osservando che le date corrispondenti avanzano di un giorno all'interno della settimana ogni anno comune (perché $365=52 \cdot 7+1$) e di due giorni ogni anno bisestile (perché $366=52 \cdot 7+2$) non è difficile convincersi del fatto che la formula
$$ y=\left( x + \left\lfloor \frac{x}{4} \right\rfloor \right) \bmod 7 $$ (dove $\lfloor n \rfloor$ è la parte intera di $n$, cioè la sua approssimazione per difetto, e $n \bmod 7$ è il resto della divisione $n:7$) rappresenta lo spostamento dei doomsdays all'interno della settimana dopo che sono trascorsi $x$ anni. Aggiungendo tale spostamento al doomsday del primo anno del secolo (che Conway chiama anchor day), con $x$ pari al numero di anni trascorsi all'interno del secolo è poi facile ricavare il doomsday per l'anno $x$. Ad esempio, per l'anno 1971 poniamo $x=71$ e calcoliamo $$ \left( 71 + \left\lfloor \frac{71}{4} \right\rfloor \right) \bmod 7 = \left( 71 + 17 \right) \bmod 7 = 88 \bmod 7 = 4 \;. $$ Per il XX secolo (1900-1999) l'anchor day è mercoledì; pertanto il doomsday 1971 cade di "mercoledì più quattro", cioè di domenica. Gli anchor days sono facilmente memorizzabili, ripetendosi ogni quattro secoli (dal momento che il calendario gregoriano ha un ciclo di 400 anni): partendo dal 1900, sono mercoledì-martedì-domenica-venerdì (in breve MeMaDoVe).
Calcoliamo, a mo' di esempio conclusivo, il giorno di nascita di un certo Leonhard Euler (15 aprile 1707): la parte intera di 7:4 è 1, aggiungendolo a 7 otteniamo 8, che diviso per 7 dà resto 1; l'anchor day per il '700 è domenica (MeMaDoVe partendo dal '500), quindi il doomsday 1707 cade di lunedì; il 4 aprile (4.4) è un doomsday, aggiungendo 11=7+4 giorni possiamo quindi affermare che Eulero nacque di venerdì.