本初子午线

天文算法8

第十章 力学时和世界时 Dynamical Time & Universal Time

1. 力学时

  力学时(Dynamical Time,简称DT)是一种从历书时(ET)到地球时(TT)过渡的时间尺度。分为地球力学时(Temps Dynamique Terrestrique,简称TDT)和质心力学时(Temps Dynamique Barycentrique,简称TDB)两种。

  1958年国际天文学联合会(IAU)决定从1960年开始使用以地球公转运动为基准的历书时(ET)代替以地球自转为基准的世界时(UT),目的是解决由于地球自转速度不均匀导致的世界时的时间尺度不均匀的问题。但是由于历书时所用的基准地球运动的理论框架是牛顿力学,根据广义相对论可知,在以太阳为中心的坐标系和以地球为中心的坐标系中时间将会不同。为解决这一问题,1976年国际天文学联合会分别定义了地球力学时(TDT)和质心力学时(TDB)。这两个时间尺度可以看作是历书时在两个坐标系中的实现。1991年,地球力学时被重新精确定义后改名为地球时(TT)。

  太阳系质心力学时(TDB)和地心力学时(TDT) 的区分。这两个系统最多相差 0.0017 秒,此种差异与地球以椭圆轨道绕日运动有关(相对论效应)。因这一差异小到可以被大多数实际应用忽略,故此处我们对质心力学时和地球力学时不加区分,统称为力学时(TD)。

  

2. 世界时

  世界时(Universal Time,简称UT)是一种以格林尼治子夜起算的平太阳时。世界时是以地球自转为基准得到的时间尺度,其精度受到地球自转不均匀变化和极移的影响,为了解决这种影响,1955年国际天文联合会定义了UT0、UT1和UT2三个系统:

  • UT0系统是由一个天文台的天文观测直接测定的世界时,没有考虑极移造成的天文台地理坐标变化。该系统曾长期被认为是稳定均匀的时间计量系统,得到过广泛应用。
  • UT1系统是在UT0的基础上加入了极移改正 Δλ,修正地轴摆动的影响。UT1是目前使用的世界时标准。被作为目前世界民用时间标准UTC在增减闰秒时的参照标准。
  • UT2系统是UT1的平滑处理版本,在UT1基础上加入了地球自转速率的季节性改正 ΔT。
  • 它们之间的关系可以表示为: \begin{align} UT1 = UT0 + Δλ\\[2ex] UT2 = UT1 + ΔT \end{align}

  

3. 协调世界时

  协调世界时(英语:Coordinated Universal Time,法语:Temps Universel Coordonné,简称UTC)是最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林尼治标准时间。

  协调世界时是世界上调节时钟和时间的主要时间标准,它与0度经线的平太阳时相差不超过1秒,并不遵守夏令时。协调世界时是最接近格林威治标准时间(GMT)的几个替代时间系统之一。对于大多数用途来说,UTC时间被认为能与GMT时间互换,但GMT时间已不再被科学界所确定。

  UTC基于国际原子时,并通过不规则的加入闰秒来抵消地球自转变慢的影响。闰秒在必要的时候会被插入到UTC中,以保证协调世界时(UTC)与世界时(UT1)相差不超过0.9秒。

  为了保证协调世界时很接近世界时UT1,UTC从基于TAI的线性方程转变成另一方程时,偶尔会出现不连续点。这些不连续点以闰秒的形式体现出来,这些不连续点就是造成了UTC天的长度不规则的闰秒。IERS规定不连续点仅出现在6月或12月底,但也有规定将3月或者9月作为备选。国际地球自转服务组织(IERS)跟踪并公布UTC时间和世界时的差别,即$DUT1 = UT1 - UTC$,另外,IERS也负责引入不连续的闰秒来保证它们的时间差DUT1在±0.9秒之间。

  

4. 计算力学时和世界时之间的差值

  由于地球自转一直在变缓,而且变缓规律难以预测,力学时和世界时之间的精确差值 $ΔT = TD - UT$ 只能由天文观测值推算。
  书中给出了1620年至1998年的ΔT数据,所以在此之间的时间可以通过插值法来计算,其余时期的数据可以用以下方式推算:

  1. 令 $t=\frac {year-2000}{100}$

    // c2000 returns centuries from calendar year 2000.0.
    //
    // Arg should be a calendar year.
    // 计算年份y距离2000年的世纪数
    func c2000(y float64) float64 {
        return (y - 2000) * .01
    }
    
  2. $ΔT = 2177 + 497t + 44.1t^2, year < +948 $

    // PolyBefore948 returns a polynomial approximation of ΔT valid for calendar
    // years before 948.
    // +948年之前的ΔT推算公式
    func PolyBefore948(year float64) (ΔT unit.Time) {
        // (10.1) p. 78
        return unit.Time(base.Horner(c2000(year), 2177, 497, 44.1))
    }
    
  3. $ΔT = 102 + 102t + 25.3t^2, +948 \leq year \leq +1600 || year \geq +2000 $

    // Poly948to1600 returns a polynomial approximation of ΔT valid for calendar
    // years 948 to 1600.
    // +984年至1600年的ΔT推算公式
    func Poly948to1600(year float64) (ΔT unit.Time) {
        // (10.2) p. 78
        return unit.Time(base.Horner(c2000(year), 102, 102, 25.3))
    }
    
  4. 若 $+2000 \leq year \leq +2100$, 还要在第3步的基础上加上一个修正量$+0.37(year-2100)$

    // PolyAfter2000 returns a polynomial approximation of ΔT valid for calendar
    // years after 2000.
    // 2000年以后的ΔT推算公式
    func PolyAfter2000(year float64) (ΔT unit.Time) {
        ΔT = Poly948to1600(year)
        if year < 2100 {
            ΔT += unit.Time(.37 * (year - 2100))
        }
        return
    }
    
  5. 经验公式:

    5.0 $\ 儒略日世纪数\theta=\frac {JDE-J1900.0}{36525},J1900.0=2415020.0(1899-12-31)$

    // jc1900 returns julian centuries from the epoch J1900.0
    //
    // Arg should be a julian day, technically JDE.
    // 计算儒略日jde距离J1900.0的世纪数
    func jc1900(jde float64) float64 {
        return (jde - base.J1900) / base.JulianCentury
    }
    

    5.1 $\ 1800 - 1997$:(最大误差2.3秒) \begin{align} ΔT = &-1.02 + 91.02\theta + 265.90\theta^2 - 839.16\theta^3 - 1545.20\theta^4 \\[2ex] &+ 3603.62\theta^5 + 4385.98\theta^6 - 6993.23\theta^7 - 6090.04\theta^8 \\[2ex] &+ 6298.12\theta^9 + 4102.86\theta^{10} - 2137.64\theta^{11} - 1081.51\theta^{12} \end{align}

    // Poly1800to1997 returns a polynomial approximation of ΔT valid for years
    // 1800 to 1997.
    //
    // The accuracy is within 2.3 seconds.
    // 1800至1997ΔT经验公式,最大误差2.3秒
    func Poly1800to1997(jde float64) (ΔT unit.Time) {
        return unit.Time(base.Horner(jc1900(jde),
            -1.02, 91.02, 265.90, -839.16, -1545.20,
            3603.62, 4385.98, -6993.23, -6090.04,
            6298.12, 4102.86, -2137.64, -1081.51))
    }    
    

    5.2 $\ 1800 - 1899$:(最大误差0.9秒) \begin{align} ΔT = &-2.50 + 228.95\theta + 5218.61\theta^2 + 56282.84\theta^3 + 324011.78\theta^4 \\[2ex] &+ 1061660.75\theta^5 + 2087298.89\theta^6 + 2513807.78\theta^7 + 1818961.41\theta^8 \\[2ex] &+ 727058.63\theta^9 + 123563.95\theta^{10} \end{align}

    // Poly1800to1899 returns a polynomial approximation of ΔT valid for years
    // 1800 to 1899.
    //
    // The accuracy is within 0.9 seconds.
    // 1800至1899ΔT经验公式,最大误差0.9秒
    func Poly1800to1899(jde float64) (ΔT unit.Time) {
        return unit.Time(base.Horner(jc1900(jde),
            -2.50, 228.95, 5218.61, 56282.84, 324011.78,
            1061660.75, 2087298.89, 2513807.78,
            1818961.41, 727058.63, 123563.95))
    }
    

    5.3 $\ 1900 - 1997$:(最大误差0.9秒) \begin{align} ΔT = &-2.44 + 87.24\theta + 815.20\theta^2 - 2637.80\theta^3 - 18756.33\theta^4 \\[2ex] &+ 124906.15\theta^5 - 303191.19\theta^6 + 372919.88\theta^7 - 232424.66\theta^8 \\[2ex] &+ 58353.42\theta^9 \end{align}

    // Poly1900to1997 returns a polynomial approximation of ΔT valid for years
    // 1900 to 1997.
    //
    // The accuracy is within 0.9 seconds.
    // 1900至1997ΔT经验公式,最大误差0.9秒
    func Poly1900to1997(jde float64) (ΔT unit.Time) {
        return unit.Time(base.Horner(jc1900(jde),
            -2.44, 87.24, 815.20, -2637.80, -18756.33,
            124906.15, -303191.19, 372919.88,
            -232424.66, 58353.42))
    }
    

相关

下一页
上一页
comments powered by Disqus