王广超
(中国科学院大学,北京 100049)
中国古代历算是天文学的重要部分,在其演进过程中,形成了一套独特的研究传统。其中,测算的精致化和外来因素的影响是两条重要线索。外来影响往往成为历算精致化的契机或动因。隋唐时期印度天文学的引进,宋元时期伊斯兰天文学的引入,为中国传统历算带来新的活力,使其在精致化进程中更进一步。明清时期西洋天文学的传入,更使得传统历算发生了革命性的转变。学界有关中国传统历算的研究,主要集中在历算理论的演变或一些重要数表的精致化方面*陈美东(1942—2008)先生和张培瑜先生曾对中国古代历法中的中心差理论、日躔表、月离表的演进进行过深入而详细的讨论,主要聚焦于算法、算理的演进和误差改进等方面。详见:陈美东. 古历新探[M]. 沈阳:辽宁教育出版社,1995;张培瑜等. 中国古代历法[M]. 北京:中国科学技术出版社,2008。另外,曲安京先生曾对中国古代行星运动理论进行过考察,参见:曲安京.中国古代的行星运动理论[J].自然科学史研究, 2006, 25(1): 1—17.,对外来因素影响的关注并不充分*唐泉等曾对古代中国、希腊和印度天文学中的视差理论进行过比较研究,参见:唐泉, 曲安京. 希腊、印度、阿拉伯与中国传统视差理论比较研究[J]. 自然科学史研究, 2008, 27(2): 131—150.。本文试图以传统历算中日躔次(宫)的计算为中心,探讨中国传统历算的演进历程。日躔次(宫)时刻是历书中一个重要项目,宋元之后成为岁次历书中决定吉凶祸福的重要依据。然而,学界关于这一问题的研究大多不太完整,或是集中于十二次起源和名称的探讨,或着力于隋唐时期十二宫与十二次关系的分析。实际上,十二次概念最早可追溯至春秋或更早时期,汉代历书中给出了日躔十二次与二十四节气的对应关系。隋唐时期,印度天文学传入中国,对传统十二次概念产生深刻影响。北宋时期行用的《观天历》是第一部给出日躔黄道十二宫算法的历书,后世历算家对此算法进行了优化。由于未考虑岁差因素,传统历算中的十二次与二十八宿的对应出现明显偏差,这一问题至明末欧洲天文学的传入方得解决。本文的讨论上讫春秋,下至明代,涉及中国传统历算发展的主要阶段。从一定意义上说,日躔十二次(宫)的精致化以及在外来因素影响下的转变,从一个侧面反映了中国传统历算的演进过程。
关于十二次及其起源,《中国古代天文学词典》有如下定义:
十二次,中国古代一种划分周天的方法。它是将天赤道带均匀地分成12等份,使冬至点正处于一份的正中间,这一份就称为星纪。从星纪依次向东为玄枵、娵訾、降娄、大梁、实沈、鹑首、鹑火、鹑尾、寿星、大火、析木,统称为十二次。一般认为,十二次源于对木星的观察。古人很早就知道木星约十二年一周天,所以据此于春秋或更早的时期创立了十二次,以用木星所在次来记年。([1],页200)
上述定义存在一些问题。首先,作为一种划分周天方法,十二次的形成并非一蹴而就,而是经历了一个漫长的过程。其次,当今学术界对十二次起源还有分歧,有两种观点。一种观点认为,十二次缘于古人对木星的观察,潘鼐先生持此观点。潘先生认为,春秋时期的天文家已认识到木星约十二年一周天,据此创立了十二次。这种说法的主要依据是早期文献中所提及的十二次一般同岁星(木星)的位置相关([2],页43—44)。比如《国语》中有“武王伐殷,岁在鹑火”的说法,其中的“鹑火”就是十二次之一[注]《国语》中有“武王伐殷,岁在鹑火”的说法。见参考文献[3]。。但是,十二次究竟从何而来,命名体系是如何建立的,这些问题在这种观点的解释框架内很难澄清。
第二种观点认为,十二次源于对星象的划分,钱宝琮(1892—1974)先生持此观点。钱先生认为,春秋以前的天文家观察星象以叙四时,对于赤道附近的星座尤其关注,逐渐形成了苍龙、朱雀、白虎、玄武的划分。进而,又将上述四宫之星各分为三,共十二份,名为十二次。春秋时期的天文家已经测得木星绕日大约12年一周天,遂将十二次与木星的运动规律联系起来。比如,于某年之正月见木星晨出东方在星纪之次,第二年当以二月晨出东方在玄枵之次,第三年三月晨出东方在娵訾之次,以此类推,十二年后当复原位,于是将木星命名为岁星[4]。这种观点的主要证据是十二次的一些命名依据四象而定,比如鹑首、鹑火、鹑尾是对朱雀的细分。但是,其他诸次的名称因何而来,与另外三象的关系如何,这种解释并不圆满。总之,两种观点各有一定的依据,但论证过程均不完善。所以十二次到底因何起源,其早期是如何发展的,现在还难下定论。
依据现有信息,可以确定十二次的划分及命名至汉代已基本成型。《汉书·律历志》及《周礼·春官·保章氏》郑玄注中有完整的十二次名称,分别是:星纪、玄枵、娵訾、降娄、大梁、实沈、鹑首、鹑火、鹑尾、寿星、大火、析木等。据钱宝琮先生考证,汉代的十二次与春秋时期的十二次名称有所不同。另外,春秋时的四宫所占赤道经度宽狭不一,十二次所占度数亦不平均[4]。至汉代,十二次的赤道所占度数已基本平均。另外,汉代一些记述天文历算的书籍中出现了十二次与四象的对应方案[5]。表1是《汉书·律历志》中所载二十八宿距度,表2所载十二次所对二十八宿起止度数,其中最后一列是十二次距度,依据二十八宿距度和十二次所对的二十八宿起止度数推算而来。每次约计各占赤经30度,有些次为31度,共计365天度。
表1 《汉书·律历志》二十八宿距度
汉代十二次在两方面继承了春秋时期的方案。第一,星纪次依据冬至点确定。春秋时期天文家注重日南至的测定,因为当时冬至日躔在牵牛附近,故称牵牛星座所在之次为星纪,且将其作为日躔之起点。汉代及之后历算家在厘定十二次时,仍以冬至点对应星纪次,并以此为起点确定其他十一次所对宿度,这在客观上就确定了一个相对固定的赤道坐标系。第二,十二次所对应的封地。春秋时期有十二诸侯,十二个封地,当时的天文家遂以十二次相对应,希藉透过星象分辨州国之吉凶。比如星纪对应吴越之州国,玄枵对应齐之州国,娵訾对应卫之分野。《汉书·律历志》所载十二次分野信息与春秋时期的基本相同。详见表2第四列。
《汉书·律历志》将日躔十二次与二十四节气对应起来,有所谓“凡十二次,日至其初为节,至其中,斗建下为十二辰,视其建而知其次”的说法([6],页1410)。后来的《晋书·天文志》中亦有“十二次度数”专题,与《汉书·律历志》中的十二次所对应的宿度相同([7],页193—195)。
表2 《汉书·律历志》和《晋书·天文志》十二次与二十八宿、二十四节气对应关系
总之,十二次大约萌发于春秋时期,成型在汉代。早期的天文家将十二次与木星的运动联系起来,配之以十二州国,占验诸国的吉凶。早期十二次的度数并不均匀,名称亦不确定。至汉代,出现了相对固定的十二次名称,度数大体均匀,并将二十四节气与十二次对应起来。汉代及之后的历算家依据星纪确定十二次,而星纪由冬至点决定,这就使得十二次成为相对固定的赤道坐标系。
隋唐时期的历算家放弃了日躔十二次与节气的关联,而突出其在分野和星占方面的意义。据《旧唐书·天文志》记载,一行(683—727)根据李淳风(602—670)撰《法象志》,重新测定了十二次分野所对宿度,并以唐之州县相配。相比之前的十二次分野表,唐代天文志的分野信息更加详细,比如玄鸮次对应的地理范围如下:“自济北东踰济水,渉平阴,至于山茌,循岱岳众山之阴,东南及髙密,又东尽莱夷之地,得汉北海、千乗、淄川、济南、齐郡,及平原渤海九河故道之南,濵于碣石,古齐、纪、祝、淳于、莱、谭、寒及斟寻,有过、有鬲、蒲姑氏之国,其地得陬訾之下流,自济东达于河外,故其象著为天津,绝云汉之阳。”([8],页722)实际上,如此详细的地理分野信息可能得益于唐代历算家所做的天文大地测量,体现了统治者希望透过星象洞察属下诸州国的治乱从而控制帝国的意图。
表3 《新唐书》所载十二次起止宿度([8],页722—727)
由表3可知,《旧唐书·天文志》中十二次的起止宿度相对于《汉书·律历志》中的数据有比较大的偏差,这实际上是由于恒星岁差所致。所谓恒星岁差,是由地球自转轴缓慢移动所致,以26000年周期扫过一个圆锥,这就导致分至点相对于黄道缓慢西退,大概71.6年移动1度。在中国,晋代虞喜最早(281—356)提出岁差现象。但其后很长一段时间内,岁差概念并没有被纳入历法计算中。南北朝时期祖冲之(429—500)曾将岁差概念引入历法推算,却遭到士大夫的极力反对,认为这是“诬天背经”的做法。至唐初,李淳风等历算家仍未将岁差概念引入《麟德历》。一行在《大衍历》中提出“天为天,岁为岁,乃立差以追其变,使五十年退一度”,岁差概念才引入历算体系。
中国天文学以冬至点确定星纪次,在此基础上确定其他十二次位置。由于岁差效应,分至点相对于二十八宿有一个缓慢移动,十二次所对二十八宿势必将年年不同。但是,由于这一运动速度非常缓慢,短时间内难以觉察其效果。汉唐之间的时间跨度足以显现出较大的偏差。实际上,唐代历算家已经注意到岁差对十二次的影响,《新唐书·天文志》中就有关于十二次与岁差的论述:
又古之辰次与节气相系,各据当时历数,与岁差迁徙不同。今更以七宿之中分四象中位,自上元之首,以度数纪之,而著其分野,其州县虽改隶不同,但据山河以分尔。([8],页722)
也许正因此,唐代历算家所列十二次分野表中,并没有对应的节气。但是,唐代历算家并没有将岁差现象理论化,建立十二次起止宿度的计算公式。而只有一个“天自为天、岁自为岁”的笼统说法,即将恒星年和回归年区别来看,利用岁差概念对二者进行换算。后世历算家也没有将岁差问题纳入十二次所对宿度变化之中,这就使得日躔十二次的准确计算非常困难。这一问题直至明末西洋岁差理论传入之后方得解决。
隋唐时期另一个重要转变是由于印度天文学黄道十二宫的传入。黄道十二宫是西方天文学的基本坐标体系,起源于巴比伦文明,大约于公元前起400年传入印度,公元200年起含有希腊成分的西方天文学传入印度,随后来的汉译佛经传入中国。汉译佛经中最早明确而完整地记载了十二宫概念的是由那连提耶舍在高齐时(550—577 A.D)译出的《大方等大集经》卷五十六,十二个名称是十二宫的梵文名称的音译([9],页194—195)。唐玄宗开元六至十二年(718—724)间,翟昙悉达编译《九执历》,使用了黄道十二宫体系,规定春分所在的白羊宫为股羖(黑色的公羊)首,秋分点所在的天秤宫为秤首([10],页875)。《九执历》在唐代开元时期具有相当大的影响,此后一行编纂《大衍历》时甚至借鉴了《九执历》的内容。在《大衍历》注引中,一行甚至提到“天竺所云十二宫,即中国之十二次。郁车宫者,降娄之次也”([11],页2252)。据查,当时降娄次起于“奎二度”余,终于“胃一度”,中点为“娄一度”,确与郁车宫(白羊宫)基本对应[4]。但是,一行对十二宫与十二次的讨论仅限于此,他所主持编著的《大衍历》中没有十二宫与十二次的详细对应方案。一行在《大衍历》中的这种欲言又止、没有充分参考《九执历》的做法甚至遭到了翟昙譔等人的指控[12]。《大衍历》被认为是一部具有里程碑意义的历法,其原因之一是此部历法确实改进了测算技术,另外更重要的是将历中“术法”与“易数”进行了系统的附会([13],页73)。这种做法实际上从汉代《三统历》即已开始,只不过《大衍历》的方案更加完善,且更具影响。这一做法在客观上导致了历算与天体运动宇宙论的分流,致使唐代之后的历算家放弃了天体运动物理意义方面的考虑[14]。
宋代天文历法中关于十二次的讨论有两个转变。首先是在历法中出现了日躔黄道十二宫的算法,其次是《天文志》中不再载有十二次分野信息,这些信息仅在《律历志》中留存。本文作者遍览《历代天文律历等志丛编》,发现最早给出太阳过黄道十二宫时刻算法的是北宋时期行用的《观天历》。《观天历》系由皇居卿于宋哲宗元祐六年(1091)撰成,绍圣元年(1094)颁行,崇宁元年(1102)停用,改用《占天历》([15],页640)。其中所谓的黄道十二宫沿用了十二次的名称,由此推测,日躔入宫的计算可能与由印度传入的十二宫体系有关。不过,《观天历》中日躔黄道十二宫的计算与西方的有所不同:首先,将赤道带均匀地分十二等份,得到赤道十二宫;进而,过每个分点的赤经圈与黄道相交,遂将黄道分成十二份,则成黄道十二宫。《观天历》载有完整的推算太阳过宫日时刻算法,其步骤如下:
首先,求天正冬至加时黄道日度;然后,推求冬夏二至初日晨前夜半黄道日度;在此基础上,求出每日晨前夜半黄道日度。排列成表,用此表查出过宫日。最后利用内插法推算过宫时刻。推求时刻算法的术文如下:
求太阳过宫日时刻:置黄道过宫宿度,以其日晨前夜半黄道宿度及分减之,余以统法乘之,如其太阳行分而一,为加时小余。如发敛求之,即得太阳过宫日、时、刻及分。([16],页2753)
术文中的统法为12030,即一天所分成的份数。按其所述可得加时小余的公式如下:
实际上,从当天的晨前夜半到下一天的晨前夜半黄道日度之间的度数就是太阳在这一天内实际走过的黄道度数,即所谓的“太阳行度”。在这一天内,把太阳运动看成均匀的,即可据以上公式求出过宫时间。如果求具体的辰、刻、分,需以辰法(2005)、刻法(1203)和秒母(36)约之,这就是术文中所说的如发敛求之。
表4列出了《观天历》中十二宫所在宿度及分野和辰次关系。分野信息相对《新唐书·天文志》中的要简单得多,与《汉书·律历志》和《晋书·天文志》中的基本相同。十二次所对应的起止宿度与之前的不同,我们推测此表中的数据为实际观测所得。
表4 《观天历》十二宫所对宿度及分野([16],页2754)
此后的《纪元历》也载有“太阳入宫日时刻”算法,与《观天历》的完全相同,但未给出十二宫所在宿度,很可能使用了与《观天历》相同的数据。
总之,唐宋时期是中国传统历算发展的重要转折期。在此期间,观测水平和计算技术得到了大幅提升。这一方面是由于唐宋时期的历算家在传统历算精致化方面的推进,另一方面得益于域外天文学特别是印度天文学的传入。但是,也正在这一时期,形成了历算与宇宙论之间分流的局面。一行之后的宋代历算家很少关注或讨论有关宇宙论方面的内容,而仅致力于测量与计算的提高。这就使得传统历算尽管其测算精度在不断提高,但是解释力和算法自身的自洽性却日渐不足[17]。日躔十二次(宫)的计算方面就是一个典型的例子。从上述计算程序可知,黄道十二宫要通过赤道十二次换算而成,表面看来这一算法融合了中西两方面的元素,但却缺少理论方面的考虑。与此相应的是关于岁差问题的理论化。尽管早在晋代虞喜就认识了岁差的存在,唐代一行将岁差概念引入历算体系,但却缺乏理论化的考虑,没有出现十二次所对宿度变化的变换公式,这就使得十二次所对二十八宿起止度数难以精确推算,而只能通过不断地实测,修正之前的数据。
一般认为,元代郭守敬等编订的《授时历》在测算方面是中国传统历算的集大成者。《授时历》有所谓“日躔黄道入次时刻”算法,与宋历中“入宫”的称谓略有不同,但在具体操作方面并无本质差别。推算步骤大体如下:首先,推算天正冬至赤道日度,用线性内插法求得对应的黄道日度;然后,求出四正(春正、夏正、秋正、冬正)定气黄道日度;根据日行盈缩规律求出每日日差,在四正基础上加减盈缩日差,求出每日晨前夜半黄道日度。将以上的数据排列成表,据十二次起止宿度表求得太阳是在哪一天入次。最后,求出日躔黄道入次时刻。术文与《观天历》的基本相同。
求入十二次时刻:各置入次宿度及分秒,以其日晨前夜半日度减之,余以日周乘之,为实;以其日行定度为法;实如法而一,所得,依发敛加时求之,即入次时刻。([18],页3393)
表面看来,《授时历》算法的改进只体现在计算起始点方面:宋代历法基于二至计算每日晨前夜半黄道日度,而《授时历》则以四正为始。实际情况是,《授时历》中的太阳运动推算方法更加细密。历史上,北齐张子信首先发现了太阳运动的不均匀性。隋末刘焯及其以后的天文学家都认为日月五星的运行在一定时期内是匀变速运动[19]。从隋《大业历》开始,各历给出了日躔表,即太阳不均匀性运动的改正表,基于此就可根据二次差内插公式得出太阳运动的近似结果,即可求得给定时间太阳所在的位置。宋代历法中太阳运动的计算均采用二次内插法,上述《观天历》关于太阳运动的计算就采用了二次内插。而《授时历》所载太阳运动度数的算法为时间的三次内插。因此,《授时历》的计算结果更为精密。按其所述,《授时历》将日周分为四份,以四正即冬至、春分、夏至、秋分为分点。太阳在冬至点时运行最快,后88.909225日为盈初限,前88.909225日为缩末限;夏至后93.712052日为缩初限,前93.712052日为盈末限。进而将每一象限分为六段,并给出平差、一差和二差,运用招差术即可推得每日盈缩,即日差,累计日差并日平行即可求得每日行定度([20],页617)。
另外,《授时历》还给出了十二次起止宿度,作为推算日躔十二次的基础数据。与《观天历》的明显不同,推测此为实测所得。从其小数点后有效数位可知,这些数据测算精度明显高于宋代的《观天历》。
表5 《元史·授时历经》十二次所对宿度及辰次([18],页3392)
明代《大统历》承袭自元代《授时历》,日躔黄道十二次日时刻及分计算法与《授时历》完全相同,次、宿关系也未改变。由于岁差的原因,十二次和二十八宿的对应关系逐年改变,积累至明末则已有相当的偏差。晚明士人邢云路即指出《大统历》宫度交界的偏误,“云路又当论大统宫度交界,当以岁差考定,不当用授时三百年前之数。”([21],页3539)另外,由于日躔次或宫的时间是根据太阳实行度推算的,而节气采用平气注历,即在天正冬至基础上加气策推算而成,因而节气日时与日躔入次日时并不精确对应,而有数日之差。这一差异体现在元明两代每年颁行的“岁次大统历书”中。如《大明嘉靖六年岁次丁亥大统历》三月节气时刻及入次信息如下:十三日庚寅午初初刻谷雨,三月中;二十八日己巳申正二刻,立夏,四月节([22],页129)。而该月二十一日戊戌申初三刻后日躔大梁之次,宜用癸乙丁辛时([22],页137)。现有一些残存的元代岁次授时历书,信息残缺不全。张培瑜先生根据有限信息进行推算和对比,发现其中节气时刻与日躔十二次时刻有与明代大统历基本相同的对应关系[17]。宋、元历书一脉相承,因此我们还可以推论:宋代岁次历书中可能也有日躔十二次的项目,与二十四节气有一定的对应关系,且日躔十二次之后也有宜用天干时辰的信息。如果这一推论成立,那或许就意味着十二次的意义在宋代发生了从占验诸国之吉凶到决定个人宜忌的转变。当然,这一推论是否成立,还有待宋代岁次历书的浮现进行检验。
可以肯定,元代《授时历》中日躔十二次的测算比宋代《观天历》更加细密。但是,由于仅关注测与算两个方面,以郭守敬为首的中国传统历算家缺乏对天体运动现象物理原因的探索。在日躔十二次的计算中有两方面的体现。第一是关于十二次的规定,中国传统十二次或宫,它不是直接对黄道的划分,而是基于赤道十二宫推演而来的。第二,中国古代历算家尽管已经认识了岁差现象,即太阳的恒星年和回归年的差异,但仅用于回归年和恒星年的换算,并没有明确提出恒星天整体偏移的理论,没有十二次(宫)所对二十八宿起止度数的公式,只能凭借实测修正多年之前的数据。直到明末,十二次宫宿交度出现了明显偏差。也许正是由于缺乏天体运动的物理方面的考虑,传统历算在经历了《授时历》的巅峰之后,开始呈现衰微之势。
中国传统十二次大约萌发于春秋时期,成型于汉代。汉代历书中,日躔十二次与二十四节气存在对应关系。隋唐时期,历算家放弃了十二次与二十四节气的关联,更强调十二次在星占、分野方面的意义。当时印度天文学传入中国,一行等历算家曾试图将西方的黄道十二宫纳入十二次体系,并未成功。北宋时期行用的《观天历》中出现了明确的日躔黄道十二宫算法,可能与印度天文学有关,或许预示着星占从预卜国家治乱到个体命运的转变。元代《授时历》对日躔十二次(宫)的算法进一步精致化,测算的精度达到空前的高度。元明历法采用平气注历,且依据宿次划分宫次,故此岁次历书中日躔入次时间与节气时间不同。尽管中国历算家已注意到岁差现象,但仅将其用于回归年和恒星年的换算之中,并未提出明确的次宿换算公式,使得十二次(宫)所对应的宿度积累一定年数后出现明显偏差。总而言之,日躔十二次(宫)的历史演变大体反映了中国古代历算的变化趋向,在此过程中,外来的影响以及精致化的过程是两条相互交织的线索。隋唐时期,传统历算表现出相当强的活力,能够迅速吸纳外来因素,将西方黄道十二宫引入历算体系。宋元时期,历算的精致化程度达到了前所未有的高度。但随之而来的明代,传统历算的活力迅速衰退,在预测和解释天象方面出现了很大问题。也正因此,明末来华传教士为开展传教活动,积极引介西方天文学。他们以移花接木之法将西方黄道十二宫嫁接到中国传统十二次之上,作为天文历算的基本坐标系。这是一场意义重大的转变,引发清代士人的强烈抨击。对此,本文作者将另外撰文讨论。
致谢本文的主要内容曾在第二届天文丝绸之路国际丝绸研讨会(中国科学院新疆天文台, 2017年7月6日)上报告。在撰写过程中, 承蒙上海交通大学钮卫星教授不吝赐教并提供参考资料。特此一并致谢。