Ziua iuliană

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Ziua iuliană (Iulian Day, JD) este numărul de zile plecate până la prânz luni, 1 ianuarie 4713 î.Hr. [1] Sistemul Board of Julian Days este conceput pentru a oferi astronomilor un sistem unic de date care ar putea fi folosit pentru a lucra cu diferite calendarelor și pentru a unifica diferite cronologii istorice, deoarece nu prezintă dificultatea anilor bisecți, a modificărilor calendarului etc.

Data iuliană este ziua iuliană combinată cu fracțiunea din ziua scursă, începând de la prânzul timpului universal (numit anterior GMT, Greenwich Mean Time ). Fracția se găsește împărțind timpul, exprimat în ore, la 24 (setând 00:00 egal la prânz și 12:00 la miezul nopții). Expresia dată iuliană este de asemenea folosită pentru a se referi la o dată din calendarul iulian sau la o dată ordinală (anul și numărul zilei anului), deci aveți grijă la ce vă referiți.

Astronomii folosesc deseori un an iulian de exact 365,25 zile pentru efemeridă , pentru a facilita conturile, în timp ce pentru calcularea unor coeficienți folosesc secolul iulian , de exact 36525 zile.

Istorie

Giuseppe Scaligero

Ziua iuliană se bazează pe perioada iuliană propusă de Giuseppe Scaligero în 1583 , la momentul reformării calendarului gregorian . Este un multiplu de trei cicluri calendaristice:

15 (ciclu de indicare ) × 19 ( ciclu metonic ) × 28 ( ciclu solar ) = 7980 ani

Epoca sa (punctul de plecare) este ultima dată când toate aceste trei cicluri au fost împreună în primul lor an, iar Scaligero a ales-o pentru că a precedat toate datele istorice cunoscute.

În cartea sa Outlines of Astronomy , publicată în 1849 , astronomul John Herschel a recomandat utilizarea unei versiuni a schemei scaligeriene pentru a realiza un sistem standard de date astronomice, numărând „ziua perioadei iuliene”. Acest sistem a devenit sistemul standard al zilei iuliene. Sistemul are avantajul de a putea calcula cu ușurință relațiile dintre datele îndepărtate (de exemplu în studiul scrierilor antice) și pentru că punctul de plecare la prânz face ca o noapte întreagă de observații să cadă într-o singură zi iuliană, mai degrabă decât în ​​două .

Deși multe surse spun că cuvântul Iulian se referă la tatăl lui Scaliger, Giulio Cesare Scaligero , în introducerea cărții a cincea din „ Opus de emendatione temporis ” („Lucrarea la corectarea timpului”) Scaligero scrie: „ Iulianum vocauimus: quia ad annum Iulianum dumtaxat accommodata est "care înseamnă" L-am numit iulian: deoarece se conformează numai anului iulian ", adică calendarul iulian introdus de Gaius Julius Caesar în 46 î.Hr.

Calcul

Conversia de la data normală la data iuliană

Următorul algoritm este valabil începând cu anul 4712 î.Hr .; în plus, ține cont de reforma gregoriană , prin care a trecut direct de la 4 octombrie 1582 la 15 octombrie a aceluiași an. Timpul trebuie înțeles în format 24h și exprimat în UT .

 intrări : CurrentDate , CurrentTime , reset ( 2415020.50 );

// Extrageți valori din data, de exemplu, 12 februarie 1980
an = an ( CurrentDate ); // 1980
luna = luna ( CurrentDate ); // 02
zi = zi ( CurrentDate ); // 12

// Extrageți valori din timp, de exemplu, 15: 32.12
ore = oră ( Ora curentă ); // 15
minute = minute ( Timp real ); // 32
secunde = secunde ( Ora curentă ); // 12

dacă luna = 1 sau luna = 2 atunci începeți
  an = an - 1 ;
  luna = luna + 12 ;
sfârșit ;

dacă CurrentDate < "15 octombrie 1582" atunci începe
  a = 0 ;
  b = 0 ;
sfârșitul altfel începe
  a = Întreaga parte ( an / 100 );
  b = 2 - a + Întreaga parte ( a / 4 );
sfârșit ;

c = Întreaga parte ( 365,25 * an );
d = Întreaga parte ( 30.6001 * ( lună + 1 ) );

// în prezent se referă la începutul zilei, plus că este scăzut
// o resetare care permite o definiție mai bună a părții zecimale
// (limite reprezentative dependente de structurile de date); resetarea indicată
// se referă la 1 ianuarie 1900, dar este alegerea mea arbitrară

dataGiuliana = b + c + d + day + 1720994.50 - reset ;

// acum definiția punctului zilei depinde de utilizare și dacă alegeți
// doar una dintre următoarele

// 1. definiție pe oră (nu-mi pasă de minute și secunde)
offsetDay = ore / 24 ;

// 2. definiție pe minut (nu-mi pasă de secunde)
offsetDay = ( 60 * ore + minute ) / 1440 ;

// 3. definiție pe secundă
offsetDay = ( 3600 * ore + 60 * minute + secunde ) / 86400 ;

// Data iuliană completă
Data iuliană = Data iuliană + offsetDay ;

Sugestii matematice:

  1. Partea întreagă (număr) : Returnează partea întreagă a numărului (19,5 → 19)
  2. PartDecimal (număr) : returnează partea zecimală a numărului (19,5 → 0,5)
  3. Trunchiere (număr, zecimale) : returnează numărul cu zecimale egale cu cele dorite, fără rotunjire ([0.12345,3] → 0.123)
  4. Modul (dividend, divizor) : returnează restul împărțirii între între dividend / divizor ([24,23] → 1)

Note: algoritmul necesită un anumit nivel de precizie în partea zecimală (de ex. 10 zecimale cu decalaj pe minut)

Conversia de la data iuliană la data normală

Acest algoritm este folosit pentru a inversa precedentul; rețineți că zecimalele de trunchiere (parametrul) depind în special de variabilele utilizate în implementare, cu cât sunt mai multe zecimale cu atât mai bine și, în acest caz, 9 sunt utilizate, deoarece sunt suficiente.

 intrări : dataGiuliana , reset ( 2415020.50 ), decimaliTroncamento ( 9 ); 
 
// Mi-am resetat data cu resetarea utilizată în conversie
jd = date Julian + resetare ;

i = Întreaga parte ( jd + 0,5 );
f = partea zecimală ( jd + 0,5 );

dacă i <= 2299160 atunci începe
  b = i ;
sfârșitul altfel începe
  a = Întreaga parte ( ( i - 1867216.25 ) / 36524.25 );
  b = i + 1 + a - Întreaga parte ( a / 4 );
sfârșit ;

c = b + 1524 ;
d = Întreaga parte ( ( c - 122.1 ) / 365.25 );
e = Întreaga parte ( 365,25 * d );
h = Întreaga parte ( ( c - e ) / 30.6001 );

zi = c - e + f - partea întreagă ( 30.6001 * h );

dacă h < 14 atunci începeți
  lună = h - 1 ;
sfârșitul altfel începe
  lună = h - 13 ;
sfârșit ;

dacă luna < 3 atunci începe
  an = d - 4715 ;
sfârșitul altfel începe
  an = d - 4716 ;
sfârșit ;

// în acest moment am extras data normală
dataAttuale = creaData ( Întreaga parte ( an ), Întreaga parte ( luna ), Întreaga parte ( ziua ) );

// acum extrag ora din zi, ținând cont de reprezentarea utilizată în
// prioritate în conversie, după cum urmează

// 1. definiție pe oră (nu-mi pasă de minute și secunde)
offsetDay = Truncate ( PartDecimal ( Juliandate ) * 24 , 0 );
ore = compensare zi ;
minute = 0 ;
secunde = 0 ;

// 2. definiție pe minut (nu-mi pasă de secunde)
offsetGiornata = Truncate ( PartDecimal ( data iuliană ) * 1440 , Truncation zecimal );
ore = Întreaga parte ( offsetDay / 60 );
minute = offset zi - 60 * ore ; 
secunde = 0 ;

// 3. definiție pe secundă
offsetGiornata = Truncate ( PartDecimal ( Juliandate ) * 86400 , Truncation zecimal );
ore = Întreaga parte ( offsetDay / 3600 );
minute = Întreaga parte ( ( offset zi - 3600 * ore ) / 60 );
secunde = offset zi - 3600 * ore - 60 * minute ;

// în acest moment am extras timpul
oraAttuale = createTime (modulul (ore, 24), Modulului (minute, 60), (secunde Modulului, 60));

Sugestii matematice:

  1. Partea întreagă (număr) : Returnează partea întreagă a numărului (19,5 → 19)
  2. PartDecimal (număr) : returnează partea zecimală a numărului (19,5 → 0,5)
  3. Trunchiere (număr, zecimale) : returnează numărul cu zecimale egale cu cele dorite, fără rotunjire ([0.12345,3] → 0.123)
  4. Modul (dividend, divizor) : returnează restul împărțirii între între dividend / divizor ([24,23] → 1)

Note: algoritmul necesită un anumit nivel de precizie în partea zecimală (de ex. 10 zecimale cu decalaj pe minut)

Calculul zilei săptămânii

 // data iuliană se referă la miezul nopții din ziua de interes
intrări : julian ;

dayWeek = Mod ( julian + 0,5 , 7 );

Sugestii matematice:

  1. Modul (dividend, divizor) : returnează restul împărțirii între între dividend / divizor ([24,23] → 1)

Cu dayWeek care ia următoarele valori:

  1. valoarea 0 indică luni
  2. valoarea 1 indică marți
  3. valoarea 2 indică miercuri
  4. valoarea 3 indică joi
  5. valoarea 4 indică vineri
  6. valoarea 5 indică sâmbătă
  7. valoarea 6 indică duminica

Note: algoritmul necesită un anumit nivel de precizie în partea zecimală (de ex. 10 zecimale cu decalaj pe minut)

Alternative

  • Ziua iuliană heliocentrică ( HJD ) este identică cu ziua iuliană, dar referindu-se la sistemul de referință al Soarelui și, prin urmare, poate diferi de ziua iuliană normală cu până la 16 minute, adică timpul necesar pentru ca lumina să traverseze orbita. . a Pământului . Ziua iuliană este uneori numită zi iuliană geocentrică pentru a o deosebi de ziua heliocentrică.
  • O altă versiune a zilei iuliene, introdusă de Peter Meyer, este ziua iuliană cronologică , unde punctul de plecare este plasat la miezul nopții de 1 ianuarie 4713 î.Hr., dar în fusul orar local în loc de UTC . Diferența dintre prânz și miezul nopții înseamnă că 0,5 trebuie adăugat la ziua iuliană pentru a obține cea cronologică. De asemenea, utilizați fusul orar local îi obligă să țină cont de diferența de timp dintre timpul universal și ora în cauză, precum și de „ ora de vară vară, dacă este cazul. Utilizatorii zilei iuliene cronologice numesc cealaltă zi iuliană astronomică , pentru a o deosebi.

Deoarece punctul de plecare este atât de îndelungat în timp, numerele zilelor iuliene pot fi foarte mari și dificil de manevrat. Uneori se folosește un punct de plecare mai recent, de exemplu prin simpla ignorare a celor mai semnificative cifre, pentru a intra în memoria limitată a computerelor cu o precizie suficientă.

MJD = JD - 2400000,5
Schimbarea 0,5 înseamnă că MJD începe și se termină la ora universală la miezul nopții, mai degrabă decât la prânz. 1 zi MJD coincide cu 18 noiembrie 1858 .
  • Ziua iuliană redusă (RJD) este, de asemenea, utilizată de astronomi și numără zilele de la același început ca MJD, dar începând de la prânz UTC și, prin urmare, este definită ca:
RJD = JD - 2400000
RJD 1 zi începe apoi la prânz pe 17 noiembrie 1858 și se termină la prânz pe 18 noiembrie.
  • Truncated Julian Day (TJD) a fost introdus de NASA pentru programul spațial. Începe la 24 mai 1968 . Deoarece acest număr a trecut numerele din patru cifre pe 10 octombrie 1995 , unii numără acum TJD începând cu acea dată pentru a păstra un număr din patru cifre. Poate fi definit ca:
TJD = JD - 2440000.5
sau ca:
TJD = (JD - 0,5) mod 1000

Alte epoci

  • 1 ianuarie 1970 (MJD 40587): începutul erei Unix
  • 1 ianuarie 2000 (MJD 51544)
  • 1 ianuarie 1601 (luni) Data ANSI (JD 2305813,5): începe de la 1 apoi data ANSI = JD - 2305812,5 și fiind întotdeauna un număr întreg, zecimalele sunt tăiate.
  • 0 ianuarie 1900 (MJD 15019): pornind calendarul Microsoft Excel derivat din ziua Julian din Dublin (Dublin Julian Day), dar începând cu miezul nopții.
    • numărul de o zi furnizat de Excel este = MJD - 15018 începând de joi, 1 martie 1900, în timp ce este = MJD - 15019 din 31 decembrie 1899 până la 28 februarie 1900, din cauza unei erori în software-ul Lotus 1-2-3 care el a considerat că 1900 este un salt și pe care a dorit să-l reproducă în mod intenționat în Excel pentru a avea o compatibilitate inversă [2] . Deci, Excel atribuie numărul 0 la 31 decembrie 1899 (care reprezintă totuși 00-ianuarie-1900) și numărul 60 la 29 februarie 1900 și, din modulul 7, atribuie 1 duminică și 7 = 0 sâmbătă, consideră 1 ianuarie 1900 ca duminică, în loc de luni (în timp ce de la 1 martie 1900 se reia numărul corect, de fapt acea zi este 61, care în modulul 7 este egal cu 5, adică joi).
  • 1 ianuarie 1904, vineri (MJD 16480) începutul calendarului Excel pentru Macintosh ; începe de la 0 și apoi în modulul 7 atribuie 1 = sâmbătă, 2 = duminică, 3 = luni ...
  • 1 ianuarie 1753 (JD 2361330.5): începe calendarul serverului Microsoft SQL
    • în acest caz, zero este atribuit la 1 ianuarie 1900 (în loc de a atribui 1 ca în Excel), apoi atribuind numărul -53690 la începutul calendarului și 0 la 1 ianuarie 1900. Prin urmare, numărul unei zile furnizat de Microsoft SQL Server = MJD - 15020 extins și la negative până la -53690, adică = JD - 2415020.5. Această atribuire se aliniază cu utilizarea modulului 7 în convenția JD, astfel încât 1 ianuarie 1900 are numărul 0 care în modulul 7 este 0 adică luni. Data de 1 ianuarie 1753 a fost aleasă pentru a evita inconsecvențele datorită faptului că diferitele colonii care vor constitui ulterior diferitele state ale SUA adaptate la calendarul gregorian care urmează patria-mamă, deci la date diferite, din 1582 până în 1752.

Alte sisteme de numărare a zilelor, numite și date întregi , includ Data Liliana , a cărei zi 1 este 15 octombrie 1582 (JD 2299161 [3] , ziua adoptării calendarului gregorian ); Rata Die , care contează de la începutul erei creștine, la 1 ianuarie a anului 1 (JD 1721425 [3] ).

Notă

  1. ^ Înseamnă 1 ianuarie 4713 î.Hr. conform calendarului iulian , adică cel valabil pentru date anterioare 15 octombrie 1582 . Data corespunzătoare folosind retroactiv calendarul gregorian ar fi 24 noiembrie 4714 î.Hr.
  2. ^ https://support.microsoft.com/kb/214326
  3. ^ a b După amiază.

Bibliografie

  • (EN) Gordon Moyer, „Originea sistemului Julian Day”, Sky and Telescope, vol. 61, pp. 311–313 (aprilie 1981).
  • ( EN ) Supliment explicativ la Almanahul Astronomic , editat de P. Kenneth Seidelmann, publicat de University Science Books (august 1992), ISBN 0-935702-68-7

Elemente conexe

linkuri externe

Astronomie Portalul astronomiei : accesați intrările Wikipedia care se ocupă de astronomie și astrofizică