<sub id="xvpxd"></sub>
<delect id="xvpxd"></delect>

    <menuitem id="xvpxd"><delect id="xvpxd"></delect></menuitem><em id="xvpxd"><thead id="xvpxd"></thead></em>

      <big id="xvpxd"><noframes id="xvpxd"><sub id="xvpxd"></sub>
      <font id="xvpxd"></font>
        <mark id="xvpxd"></mark>
        <delect id="xvpxd"><form id="xvpxd"></form></delect>

          <output id="xvpxd"><noframes id="xvpxd"><mark id="xvpxd"></mark>

            本站開發的軟件簡介及下載地址
            您現在的位置:首頁 >> 天文歷法 >> 天文知識 >> 內容

            《天文算法》之--儒略日

            時間:2012/4/15 1:39:30 點擊:

              我們將給出一種方法,將儒略歷或格里高利歷中的日期轉換成相應的儒略日數(JD),以及反向轉換。
                 概述

              儒略日數(簡稱儒略日),是指從公元 -4712 年開始連續計算日數得出的天數及不滿一日的小數,通常記為 JD (**)。傳統上儒略日的計數是從格林尼治平午,即世界時12點開始的。若以力學時(或歷書時)為標尺,這種計數通常表達為“儒略歷書日”,即JDE (**),其中E只是一種表征,即按每天86400個標準秒長嚴格地計日。例如:
            1977年4月26.4日 UT = JD 2443 259.9
            1977年4月26.4日 TD = JDE 2443 259.9
              在下面將要描述的方法中,我們得考慮將其它歷日換算為格里高利歷日期。因而,1582年10月4日(儒略歷)的下一日為1582年10月15日(格里高利歷)。
              格里高利歷并非在所有國家迅速得到一致采用,這一點在歷史研究中要引起注意。例如在大不列顛,晚至公元1752年才變更歷法,而土耳其則要等到1927年。
              儒略歷由尤里烏斯·愷撒于公元前45年在羅馬帝國創立,而其最終形式確立于公元8年前后,盡管如此,我們仍可以借助天文學家的演算無止境地向前推算儒略歷。比如在這一系統中,我們可以說某次日食發生在公元前1203年8月28日,雖然在那個遙遠的年代,羅馬帝國根本還未被創建,而8月這個月份更有待設立。
              對于公元1年之前的年份如何計數,天文學家同歷史學家并不一致。在本書中,“公元前”的年份以天文方法計數。這樣,+1年的前一年為0年,再之前才是-1年。所以歷史學家所說的公元前585年實際上是-584年。
              天文上以負數計數年份只是為算術目的起見。比如,在歷史學計數中的,可被4整除的年份為儒略歷閏年這個規則不再有效了。雖然像公元前1,5,9,13,…這些年份的確也在天文學上的閏年序列中,然而它們卻被記為0,-4,-8,-12 …,它們都能被4整除。
              我們以INT(x)來表示數x的整數部分,即小數點前的整數。例如:
            INT(7/4) = 1   INT(5.02) = 5
            INT(8/4) = 2   INT(5.9999) = 5
              這里負數可能會造成些問題。在某些計算機或程序語言中,INT(x)為小于等于x的最大整數。那樣的話就有INT(-7.83) = -8,因為-7的確比-7.83大。如果你的程序是javascript,取整函數是 Math.floor(x),它返回小于等于x的最大整數。如果你用的是C++,那么用 (int)x 強制轉換,得到是的整數部分。
              但在其它一些語言中,INT為所給數的整數部分,也即小數點前的部分。這樣就有INT(-7.83) = -7,這被稱為舍位(Truncation)。某些程序包含了這兩項功能:表示前一種涵義的INT(x)以及TRUNC(x)。
              因此,對負數進行取整時要特別注意(對正數,二者所得結果一致)。在本書給出的算式中,INT的使用總是針對正數的。
            儒略日的計算
              下面的方法對正數年和負數年都是有效的,負的儒略日數除外。
              設Y為給定年份,M為月份,D為該月日期(可以帶小數)。
              若M > 2,Y和M不變,若 M =1或2,以Y–1代Y,以M+12代M,換句話說,如果日期在1月或2月,則被看作是在前一年的13月或14月。
              對格里高利歷有 :A = INT(Y/100)   B = 2 - A + INT(A/4)
              對儒略歷,取 B = 0
              要求的儒略日即為:JD = INT(365.25(Y+4716))+INT(30.6001(M+1))+D+B-1524.5 (7.1)
              使用數值30.6取代30.6001才是正確的,但我們仍使用30.6001,以確?偰苋〉们‘數恼麛。事實上可用30.601甚至30.61來取代30.6001。例如,5乘30.6精確等于153,然而大多數計算機不能精確表示出30.6(參見第二章關于BCD的說明),這導致得出一個152.999 9998的結果,它的整數部分為152,如此算出的JD就不正確了。
            例:計算1957年10月4.81日,即蘇聯發射第一顆人造衛星的日期相應的儒略日。
            這里我們有 Y =1957,M = 10,D = 4.81。因 M > 2,則Y與M不變.
            日期為格里高利歷,于是算得:
            A = INT(1957/100) = INT(19.57) = 19
            B = 2-19+INT(19/4) = 2-19+4 = -13
            JD = INT(365.25*6673)+INT(30.6001*11)+4.81-13-1524.5 = 2436116.31
            例.b:計算333年1月27日12時相應的儒略日。
            因 M = 1,有 Y = 333 -1 =332 且 M = 1 +12 =13;又因日期為儒略歷日期,故 B = 0
            JD = INT(365.25*5048)+INT(30.6001*14)+27.5+0-1524.5=1842713.0
            下表列出了一些歷日所對應的儒略日,可作測試程序之用。
             2000年 1月 1.5日 2451 545.0
             1987年 1月27.0日 2446 822.5
             1987年 6月19.5日 2446 966.0
             1988年 1月17.0日 2447 187.5
             1988年 6月19.5日 2447 332.0
             1900年 1月 1.0日 2415 020.5
             1600年 1月 1.0日 2305 447.5
             1600年12月31.0日 2305 812.5
              837年 4月10.3日 2026 871.8
            -1000年 7月12.5日 1356 001.0
            -1000年 2月29.0日 1355 866.5
            -1001年 8月17.9日 1355 671.4
            -4712年 1月 1.5日 0.0
            ·如果你只對1900年3月1日至2100年二月28日之間的日期感興趣,那么在公式(7.1)中可取B = -13。
            ·在一些應用中需要知道某一給定年1月0.0日的儒略日JD0,它與上一年的12月31.0日是同一日。對格里高利歷中的年份可按如下計算。
            Y = year-1,  A=INT(Y/100)
            JDo=INT(365.25Y)-A+INT(A/4)+1721424.5
            特別地,對1901年至2099年間的年份,上式簡化為:JDo=1721409.5+INT(365.25*(year-1))
            閏年是如何設定的?
            在儒略歷中,能被4整除的年份為閏年,這一年有366天,其它年份為平年(365天)。
            如900年和1236年為閏年,而750年和1429年為平年。
            格里高利歷法也采用這一規則,但下列年份除外:不能被400整除的百年為平年,如1700年,1800年,1900年和2100年。其余能被400整除的百年則為閏年,如1600年,2000年和2400年。
            “修正儒略日”
              現代工作中有時會用到修正儒略日(Modified Julian Day, MJD),比如在提到人造衛星軌道根數時。對比儒略日,修正儒略日從格林威治時間平午夜開始計算,相當于:
              MJD = JD – 2400000.5
              因而MJD = 0.01指向的是1858年11月17日世界時0時。
            由儒略日推算歷日
            下面的方法對正數年和負數年都是有效的,負儒略日數除外。
            將JD加上0.5,令 Z 為其整數部分,F 為尾數(小數)部分。
            若 Z < 2299161,取A = Z
            若 Z 大于等于2299 161,計算 α=INT((Z-1867216.25)/36524.25) ,A=Z+1+α-INT(α/4)
            然后計算
            B = A+1524
            C = INT((B-122.1)/365.25)
            D = INT(365.25C)
            E = INT((B-D)/30.6001)
            該月日期(帶小數部分)則為:d = B - D - INT(30.6001E) + F
            月份m為:
              IF E < 14 THEN m = E – 1;
              IF E=14 or E=15 THEN m = E – 13
            年份為y:
              IF m>2 THEN y = C – 4716
              IF m =1 or m=2 THEN y = C – 4715
              和公式(7.1)的情況一樣,這個公式里求E時用的數30.6001不能代之以30.6,哪怕計算機沒有先前所說的問題。否則,你得到的結果會是2月0日而不是1月31日,或者4月0日而不是3月31日。

            Tags:天文 算法 
             
            分享到:
          1. 算命,擇日,風水(www.parabellum-studio.com) © 2023 版權所有 All Rights Reserved.
          2. 站長電話:13559403980;站長QQ:305671986;點擊這里給我發消息站長Email:chwc228@163.com 或 chwc88@qq.com; 閩ICP備05011419號


          3. 百度热搜榜
            <sub id="xvpxd"></sub>
            <delect id="xvpxd"></delect>

              <menuitem id="xvpxd"><delect id="xvpxd"></delect></menuitem><em id="xvpxd"><thead id="xvpxd"></thead></em>

                <big id="xvpxd"><noframes id="xvpxd"><sub id="xvpxd"></sub>
                <font id="xvpxd"></font>
                  <mark id="xvpxd"></mark>
                  <delect id="xvpxd"><form id="xvpxd"></form></delect>

                    <output id="xvpxd"><noframes id="xvpxd"><mark id="xvpxd"></mark>