第(六)帖
顺便说一下,儒略千年数是一种时间计数方法。日常生活中,时间的计数法使用“年月日时分秒”,在天文计算过程,这种时间表达是很不方便的,原因是明显的,需要6个数才能表达一个时间。
天文学中,采用2000年1月1日12时0分0秒时作为计时的起点,并连续计时,单位是天。1天日86400秒。1秒是多少?1秒时间长度由原子钟得到,现代天文学的时间基础已不再使用星体运动位置来确定,改用原子钟,原子钟的精度要好得多。
为什么又称为“儒略”千年数。这还要谈到另一个问题,一年有多少天?你可能立刻回答到:365.2422日。然而,在现代天文学家眼里,一年的长度是变化的,并不是固定为365.2422日,何况地球运动时还受到各种干扰,365.2422只是一定时期内的平均值。因此,任意一年某时刻加上365.2422后,并不是下一年的同一时刻,这样,把365.2422看做1个单位意义不大,天文学家更原意把365.25看做1个单位,它与公历的置闰规则具有更好的“兼容”性,便于日历转换。365.25天是儒略年的长度。儒略1千年就是365250天。
再次强调,1天=86400原子秒,与地球自转没有必然的关系。在历史上,曾使用某一年的地球公转与自转来定义秒长,之后,地球自转速度发生改变,1天不等于86400秒了。注意,此“天”非彼“天”,前面的天是时间单位,后面的天指平均自转一周所用的时间长度。然而,人类的日常生活与地球自转息息相关,日期与时间的计数必须尽可能与地球自转同步,这就造成,我们有两套基本的时间系统,一个是手表时(或称为协调世界时或称为UTC时),一个是力学时。力学时又时什么东西呢?力学时具有鲜明的动力学色彩,假如我们使用2000年地球公转一圈所用时间定义为1个单位,2万年后,公转周期可能发生了变化,如果不通过力学原理推算,我们将无法得到那时候一年的长度,但是,通过力学方法,我们可以得到2万年后公转的周期,比如是1.00001(乱写一个)个单位。简单的说,当我们定义了时间单位,我们就可以使用力学原理推算天体在某一位置所对应时间,这就够成时间基础(根据星体位置确定时间)。原子时就简单多了,它不是通过天体位置来确定时间的,而是通过原子钟内部的振荡次数来来确定时间。原子钟曾与力学时对准过,秒长是相同的,起点相差零点几秒钟。
理论上,力学时、原子时是非常均匀的。手表时与地球自转(以恒星为参考点确定自转速度)同步,而地球自转时快时慢,所以不均匀。
手表时(去除地区的时差后的手表时,即UT1)与原子时的差称为ΔT,当然手表时含有时区信息,如北京时间多了正好8个时。ΔT可由一组多项式表达式计算得到。
手表时的秒长是原子秒,为什么手表时不是原子时呢?因为国际上有人动了手脚,在每年的最后一天做了“正或负跳秒(正负闰秒)”处理,实现手表时与地球自转同步。
//原子时与UT1的差
//部分参考了美国国家航空航天局网站里的算法,www.nasa.gov
//2050以后的外推参考了skymap10.5,在skymap的星历表中分段找几个数据,再用最小二乘法拟合
double deltatT(double y){ //输入年份(可带小数点),如2000.78
static double DTxs[15][12]={//{范围下,范围上,偏移,时间单位,多项各系数}
{-9999,-500,1820,100,-20, 0, 32},
{-500, 500, 0, 100, 10583.6,-1014.41, 33.78311, -5.952053, -0.1798452, 0.022174192, 0.0090316521},
{500, 1600,1000,100, 1574.2, -556.01, 71.23472, 0.319781, -0.8503463, -0.005050998, 0.0083572073},
{1600, 1700,1600,1, 120, -0.9808, -0.015320, 1.0/7129},
{1700, 1800,1700,1, 8.83, 0.1603, -0.0059285, 0.00013336,-1.0/1174000},
{1800, 1860,1800,1, 13.72, -0.332447, 0.0068612, 0.0041116, -0.00037436, 1.21272e-5, -1.699e-7, 8.75e-10},
{1860, 1900,1860,1, 7.62, 0.5737, -0.2517540, 0.01680668,-0.0004473624,1.0/233174},
{1900, 1920,1900,1, -2.79, 1.494119,-0.0598939, 0.0061966, -0.000197},
{1920, 1941,1920,1, 21.20, 0.84493, -0.0761000, 0.0020936},
{1941, 1961,1950,1, 29.07, 0.407, -1.0/233, 1.0/2547},
{1961, 1986,1975,1, 45.45, 1.067, -1.0/260, -1.0/718},
{1986, 2005,2000,1, 63.86, 0.3345, -0.060374, 0.0017275, 0.000651814, 0.00002373599},
{2005, 2150,2000,100, 64.723,-11.050, 232.182, -86.08},
{2150, 9999,2000,100, 59.033, 103.4335, 28.980314, 0.000276}
};
//计算TD-UT,力学时与世界时之差
double *p,dt=0,u;
int i,j;
for(i=0;i<15;i++){
p=DTxs[i];
if(y<p[0]||y>p[1]) continue;
y=(y-p[2])/p[3];
for(j=4,u=1;j<12;j++) dt+=u*p[j],u*=y;
return dt;
}
return 0;
}