Saturday, December 19, 2009

Curiozitate! Ani ce încep şi se termină cu DUMINICA: 1989, 1995, 2006 , 2017


Ştiinţă versus Jurnalism
"Anul 1978 incepe si se termina cu ziua de Duminică. Lucrul acesta se intampla o data la 300 de ani!" stire ce era publicata la rubrica "De pretutindeni" intr-un ziar ce aparea in Romania anului 1978.

Student fiind in anul 1978, am citit stirea de mai sus impreuna cu colegul si prietenul meu Gabriel Popescu. Amandurora ni s-a parut stirea "ciudata". De aceea, in urma unor discutii si rationamente (ambii eram studenti la matematica, specializarea informatica) am definitivat concluzia: Nu este ADEVARAT ce afirmatie se face in stirea respectiva. Am incercat sa cautam si o scuza a celor care au publicat stirea: au preluat afirmatia dintr-un ziar din strainatate, unde de fapt exista alt tip de calendar. Stiu ca am redactat o scrisoare cu argumentarea noastra. Am mers amandoi si am lasat scrisoarea la poarta redactiei acelui ziar (functiona in cladirea actualei Presei libere!). Am urmarit sa vedem daca apare ceva in ziar. Nu a aparut.

In anul 1993, la un Concurs de informatica de la Cluj-Napoca, mi-am adus aminte de aceasta "stire". A urmat publicarea a doua articole in Gazeta Matematica. Verificarea am realizat-o prin intermediul codului unui program scris in limbajul Pascal (1994,1995). A fost un exemplu relevant la acea data pentru a utiliza calculatorul in verificarea unor afirmatii.


OBSERVATIA 1. Calendarul gregorian (stilul nou), introdus in anul 1582 de catre papa GRIGORE al XII-lea, cand dupa ziua de 4 oct. 1582 (joi) a urmat ziua de 15 oct. 1582 (vineri), este in vigoare azi in majoritatea tarilor lumii, inclusiv in ROMANIA, unde a fost introdus oficial in anul 1919, cand dupa data de 31 martie 1919 a urmat ziua de 14 aprilie 1919.

OBSERVATIA 2. In calendarul gregorian, un an bisect este anul divizibil cu 4, exceptie anii ce reprezinta schimbarile de secol, pentru care anul trebuie sa fie divizibil cu 400. Prin urmare, daca a este numarul ce reprezinta anul, atunci expresia booleana
( a mod 4 = 0 ) and ( a mod 100 <> 0 ) or ( a mod 400 = 0 )
este conditia pentru verificarea faptului ca anul a este bisect, unde 'and' , 'or' , sunt operatorii logici pentru conjunctie, respectiv disjunctie, iar 'mod' este operatorul ce calculeaza restul impartirii a doua numere intregi. Din aceste restrictii, rezulta ca anul 1600 a fost an bisect la schimbarea de secol, iar anul 2000 va fi urmatorul an bisect la schimbarea de secol. Un an care nu este bisect are 365 zile, iar un an care este bisect are 366 zile. S-a demonstrat faptul ca un an gregorian este mai mare decat anul solar cu 26 secunde, aproximativ o zi la 3323 ani ("Anul cosmic are 365.242199 zile 11 minute si 14 secunde. S-a descoperit ca din cauza acestei inexactitati in masurarea anului, la fiecare 128 de ani se nastea o eroare de o zi. Astfel in anul 1582 s-a descoperit ca aceasta diferenta de cate o zi la 128 de ani a dat un rezultat de 10 zile diferenta intre timpul masurat prin calendar si timpul astronomic."). Pentru eliminarea acestei diferente, s-a propus ca anii 4000, 8000, ... sa nu fie bisecti.

OBSERVATIA 3. Daca vom codifica in ordine cu cifrele 0, 1, 2, ... , 6 zilele saptamanii, 0 pentru ziua de DUMINICA, respectiv 6 pentru ziua de SAMBATA, evident un an care nu este bisect incepe si se termina cu aceeasi zi a saptamanii. Cum 365 = M 7 + 1 , daca anul a incepe cu ziua codificata cu i din {0,1,2,3,4,5,6}, atunci anul (a+1) va incepe cu ziua codifocata cu (i+1) mod 7. Daca anul a este bisect, deci are 366 zile, si cum 366 = M 7 + 2, atunci daca va incepe cu ziua codificata cu i, se va termina cu ziua codificata cu (i+1) mod 7, iar anul (a+1) va incepe, evident cu ziua codificata cu (i+2) mod 7.

Tinand seama de aceste observatii, urmatorul program va memora intr-un fisier, anii cu proprietatea evidentiata (pentru perioada 1900 - 3000), dar va calcula si memora diferenta anilor consecutivi generati in scopul verificarii asertiunii din finalul notei din G.M. 8/1994 (a se vedea Referinte).

Rezultatele obtinute: ani cu proprietatea de mai sus

Sirul anilor de la 1995 la 3000
1995 2006 2017 2023 2034 2045 2051 2062 2073 2079 2090 2102
2113 2119 2130 2141 2147 2158 2169 2175 2186 2197 2209 2215
2226 2237 2243 2254 2265 2271 2282 2293 2299 2305 2311 2322
2333 2339 2350 2361 2367 2378 2389 2395 2406 2417 2423 2434
2445 2451 2462 2473 2479 2490 2502 2513 2519 2530 2541 2547
2558 2569 2575 2586 2597 2609 2615 2626 2637 2643 2654 2665
2671 2682 2693 2699 2705 2711 2722 2733 2739 2750 2761 2767
2778 2789 2795 2806 2817 2823 2834 2845 2851 2862 2873 2879
2890 2902 2913 2919 2930 2941 2947 2958 2969 2975 2986 2997

Diferenta anilor din sir
11 11 6 11 11 6 11 11 6 11 12 11 6 11 11 6 11 11 6 11 11 12 6 11 11 6 11 11 6 11 11 6 6 6 11 11 6 11 11 6 11 11 6 11 11 6 11 11 6 11 11 6 11 12 11 6 11 11 6 11 11 6 11 11 12 6 11 11 6 11 11 6 11 11 6 6 6 11 11 6 11 11 6 11 11 6 11 11 6 11 11 6 11 11 6 11 12 11 6 11 11 6 11 11 6 11 11
Sirul anilor de la 1995 la 1900
1995 1989 1978 1967 1961 1950 1939 1933 1922 1911 1905

2017 este urmatorul an care incepe si se termina cu ziua de DUMINICA!
Recomandare: Azi, oricine are cunostinte de utilizare Windows, poate sa utilizeze serviciul "Date and Time Properties" (aflat in bara de operatii) pentru a verifica mai multi ani cu proprietatea de mai sus (doar in intervalul 1980 .. 2099).
Exercitiu: Verificati anul 2062!

Referinte:
- Asupra validitatii unor rezultate, Gazeta Matematica, nr. 2/1995, pag. 57-60
- Sirul anilor cu o proprietate comuna, Gazeta Matematica, nr. 8/1994, pag. 350-352. (www.gazetamatematica.net)

ANEXA: program Pascal, 1995

program ANI; { Sirul anilor ce incep si se termina DUMINICA }
var
an , nrz , i , f , ziua , r , j , a : integer;
v : array[1..300] of integer;
{ codificare zile : D=0,L=1,M=2,Mi=3,J=4,V=5,S=6 }
out : TEXT ;
{-------------------------------------------------}
begin { MAIN }
assign ( out , 'ani.TXT' ); {tiparirea intr-un fisier}
rewrite ( out );
{ cautare 1995 ---> 3000 }
i := 0 ; r := -1 ; j :=0 ; a := 1995 ;
writeln (out,' Sirul anilor de la 1995 la 3000 ');
for an := 1995 to 3000 do
begin
nrz := 0 ; { nrz = 1 daca anul an este bisect }
if (an mod 4 = 0) and ( an mod 100 <> 0 )
or ( an mod 400 = 0 ) then nrz := 1;
ziua := i ; ziua := (ziua + nrz) mod 7 ;
f := ziua ;
if (i=0) and (f=0) then { tiparirea anului }
begin
if r > 10 then begin r := 0 ; writeln(out); end
else r := r + 1;
write (out, an:5);
if (a-an)<>0 then { calculul diferentelor }
begin
j := j+1 ; v[j] := an-a; a := an;
end;
end;
ziua := (ziua + 1) mod 7 ;
i := ziua ;
end; writeln (out);
writeln (out,' Diferenta anilor din sir ');
for i := 1 to j do { tiparirea diferentelor }
begin
if (i-1) mod 12 = 0 then writeln (out);
write( out, v[i]:5);
end; writeln (out); writeln (out);

{ cautare 1995 ---> 1900 }
f := 0 ; writeln (out,' Sirul anilor de la 1995 la 1900');
for an := 1995 downto 1900 do
begin
nrz := 0 ;
if (an mod 4 = 0) and ( an mod 100 <> 0 )
or ( an mod 400 = 0 ) then nrz := 1;
ziua := f ; ziua := (ziua - nrz) mod 7 ;
i := ziua ;
if (i=0) and (f=0) then write (out,an:5);
ziua := (ziua - 1) mod 7 ;
f := ziua ;
end; writeln (out); close (out) ;
end.

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.