隋唐五代时期在天文历算方面取得了卓越的成就。涌现出了一批优秀的天文学家,如刘焯、张胄玄、李淳风、僧一行、傅仁钧等。在天文方面唐设置了太史局(又叫浑天监、司天台等),内置天文博士、历法博士、天文观生、历生等,掌管天文,制定历法等;在算学方面,隋国子寺和唐国子监中均设有算学,内有算学博士、助教及学生,在隋唐的科举考试中也有明算科。此外,隋唐时期一些著名的天文学家,如刘焯、李淳风等也是著名的算学家。当时天文历算方面的成就,突出地表现在浑天仪的改进、子午线的实测、历法的改定和数学的进步等方面。
一、浑天仪的改进
唐初李淳风鉴于当时北魏造的铁浑仪不够精密,因而立意改革,在唐太宗的支持下,于贞观七年(633年),造了一架新型的浑天黄道铜仪,“其制以铜为之,表里三重,下据准基,状如十字,末树鳌足,以张四表焉”[1]。原浑天仪由六合仪和四游仪两重,李淳风再安装一重三辰仪。六合仪是外面的一层,由地平圈、子午圈和赤道圈固定在一起。中国古代把东西、南北、上下六个方向叫做六合。里面能够旋转用来观测的四游环连同窥管,叫做四游仪。这两层之间新加的三辰仪是由3个相交的圆环构成,这三个圆环是表示太阳位置的黄道环,表示月亮位置的白道环,表示恒星位置的赤道环。古代把日、月、星叫做三辰,所以称之为三辰仪。三辰仪可以绕着极轴在六合仪里旋转,而观察用的四游仪又可以在三辰仪里旋转,这样就可直接用来观察日、月、星辰在各轨道上的运动情况。浑天仪用三层,是从李淳风开始的。经过这样的改进,黄道经纬、赤道经纬、地平经纬都能测定。[2]
到唐玄宗开元年间,李淳风的黄道浑仪已亡佚,为了制定新历,僧一行和另一位天文学家梁令瓒一起,制成了铜浑天仪和黄道游仪。
铜浑天仪是在汉朝浑天仪的基础上加以改进制成的,并运用古代漏壶滴水的原理,在仪器上安装了一个齿轮,“注水激轮,令其自转,一日一夜,天转一周”[3]。表现星宿的运动和日升月落。此外,还安装自动报时器,即“立二木人于地平之上,前置钟鼓以侯辰刻,每一刻自然击鼓,每辰则自然撞钟”[4],设计得非常巧妙。
黄道游仪是在李淳风黄道浑仪的基础上加以改进完成的。黄道游仪由三重环组构成:外面一重是固定不动的,包括地平、子午(南北方向)和卯酉(东西方向)三个环。中间一重是黄道环、赤道环和白道环,它们均可绕极轴转动。里面一重是夹有窥管的四游环,可以灵活地照准任一天体。此外,李淳风曾在黄道环上打了249对孔,令白道环每经约27日移动一对孔,以适应黄白交点沿黄道不断西移的天文观象。对此,僧一行等人分别在黄道环和赤道环上,每隔一度打一个孔,计365个小孔,这除了保留了李淳风的制造理念,还适应了岁差现象。
黄道游仪制好后,僧一行用它重新测定了150余颗恒星的位置;同时还测量了二十八宿距离北极的度数,经过实测,发现与前代数据有明显的差异,这说明恒星不像古人认为的那样,其位置不是永恒不动的,而是在天体中移动的。这一发现,在世界天文学史上也是首次。
二、僧一行与子午线的实测
僧一行除改进浑天仪外,还实测子午线和编订《大衍历》。他是我国古代著名的天文学家。
僧一行(683—727年),俗姓张,名遂,魏州昌乐(今河南南乐)人。他“少聪敏,博览经史,尤精历象、阴阳、五行之学”[5],受到当时学者的赞扬。因不愿结交权贵武三思而出家为僧,隐居嵩山。玄宗登基,被强征入京。开元十二年(724年),唐政府在一行的建议下,派南宫说等到北起铁勒(今俄罗斯贝加尔湖附近,约北纬51°),南至林邑(今越南中部,约北纬18°)的13个地点进行测量,内容包括:当地点的北极距地高度(即地理纬度)、冬夏至和春秋分日影长度以及冬夏至昼夜漏刻长度等数据。
这次测定的重点是由南宫说负责的,在滑州白马(今河南滑县)、汴州浚仪(今河南开封市)、许州扶沟(今河南扶沟县)和蔡州上蔡(今河南上蔡县)四处。它们大致位于同一地理经度上。在这四处,除测量了北极高度和日影长度外,还测量了这四个点之间的水平距离。根据实测证明古代流传的“南北地隔千里,影长差一寸”的说法是错误的。一行由这四处的距离差与北极处的高度差的比例关系分析得出:南北相距,“三百五十一里八十步而差一度”[6]的重要结论。换算成现在单位,即为南北相距131.11千米,北极高度相差一度,比现在测量的数字偏大20.17千米,但僧一行实测子午线在世界上是第一次。
三、历法的改定
浑天仪的改进,使天文常数的测量精度进一步提高,子午线的实测,也增加了人们对宇宙的新认识以及其他天文历算知识的进步,都为新历法的制定提供了科学依据。
早在北齐时期,著名的天文学家张子信用浑仪观测日月五星的运动,获得了我国天文学史上具有重大意义的三大发现:一是关于太阳视运动(即地球运动的反映)不均匀性的发现;二是关于五星运动不均匀性的发现;三是关于食差的发现。入隋以后,杰出天文学家刘焯把张子信的三大发现列入历法,并成功地解决了这三大发现的具体计算和合理应用问题,并于604年撰成《皇极历》。
月球和太阳的黄经相等的时候,在朔日,月球运行到地球和太阳之间,和太阳同时出没,呈现出新月的月相,朔发生的那一天定为夏历每月的初一日。在隋以前还没有准确推算出合朔的时间,刘焯在《皇极历》中将对这一问题的研究向前推进了一步。
张子信发现太阳视运动的不均匀性,推算出了二十四节气的“入气差”(即二十四节气时,视太阳实际行度与平均行度之差)的具体数值。刘焯根据张子信的“入气差”,在《皇极历》中制成了二十四节气太阳视运动不均匀性改正数值表,即日躔表。在应用日躔表进行任一时刻的改正值的计算时,刘焯首创了等间距二次内插法。这一数学方法的物理意义,是把某一时段内太阳视运动的速率看成是匀加速或匀减速的。这一方法较好地解决了太阳视运动不均匀性的计算问题。在此基础上,刘焯又成功地解决了同时考虑日、月运动不均匀性影响的定朔计算方法,使真正朔日时刻的计算精度得以提高。尽管他的算法所得数值与实际不大相符,但据此编制的历法较前有了很大的进步。
刘焯在《皇极历》中还第一次同时采用日行和月行速度的不均匀理论,用以推算五星位置和日、月食起讫时刻及食分等。
还应提到的是,刘焯对岁差的认识也达到了一个新的高度。因为地球是一个椭圆球体,自转轴对黄道平面是倾斜的,地球赤道那里的突出部分受到日月等吸引,引起地轴绕黄极作缓慢的移动。速度每年50″24,约25800年运行一圈,从而出现回归年比恒星年短的现象。我国最早定出较为精确岁差值的是晋朝的虞喜。他测出太阳从今年冬至点到明年冬至点并不是在原点上,而是每50年冬至点西退一度,并指出使天为天,岁为岁。即较早的区分了恒星年与太阳年。之后,祖冲之首先用岁差改进历法。他实测得冬至点在斗15度,认为不到100年相差2度,得出45年11月相差1度。
在刘焯之前历法给出的岁差值都是属于赤道岁差,是冬至点或夏至点及赤道宿度的变化求得的。刘焯为了求得精确的岁差值,测定了28宿的黄道度,并与东汉时代测定的数值进行比较,发觉其中有11个宿的黄道度有了变化。因此他指出“岁久差多,随术而变”[7]。就是说,要精确推算当时日、月、五星离冬至点的黄道积度,不能根据过去的而必须根据当时的28宿黄道来推算。如果要推算过去和将来的行度,则必须先按岁差求得那时候的二十八宿黄道度。刘焯曾测得75年差一度的新岁差值,这与实际数值非常接近,而当时西方仍沿用100年相差一度的数值。
刘焯还在推算交食时第一次考虑视差对交食的影响,也就是在地球表面观察天体和在地心观察天体所产生的天体位置差,这在当时也是十分可贵的创见。刘焯的《皇极历》和其他一些科学建议因受到太史令张胄玄和张宾等人的排斥,未能施行,但他对天文历法学的贡献是不可泯灭的。
到唐代历法变更了8次,但确有价值的历法是戊寅、麟德、大衍3部。
《戊寅历》由初唐傅仁均制定,并于武德二年(619年)颁行。贞观十九年(645年)以后,因采用《戊寅历》连续出现4个大月,至麟德二年(665年),李淳风以刘焯的《皇极历》为基础加以改进,制成并颁行了《麟德历》。《麟德历》对连续出现的几个大月或几个小月的情况,采取了临时变通调整的方法,并在无中气的月份置闰月。开元九年(721年),因《麟德历》所推算日食不准,唐玄宗命僧一行重新制定历法。
一行受命重造新历后,认真研究了我国历代的历法,又参考了当时天竺国(印度)的历法,在此基础上大胆创新,于开元十五年(727年),编制了当时比较先进的《大衍历》。《大衍历》最突出的成就是比较正确地掌握了太阳在黄道上运行的速度变化的规律(实际是地球绕太阳运行时速度的变化规律)。刘焯在制定《皇极历》时,吸收了张子信的研究成果,提出在历法中改用24等分周天来定节气,得知每气15度多,以前刘焯也采用张子信的研究成果,但刘焯所定太阳运行的快慢数值,是与实际不符的。僧一行制定的《大衍历》认为冬至前后日行最快,所以二气之间时间最短;夏至前后日行最慢,所以二气之间时间最长。《大衍历》较刘焯的《皇极历》更符合实际情况。《大衍历》又测知从冬至到春分6个定气间共88、89日,日行一象限。春分到夏至6个定气间共91、73日,也行一象限。秋分前后和春分前后情况相同。僧一行所测量的数据已非常精确。
编成后的《大衍历》共分7篇:“一、步中朔,即计算平逆望、平气;二、步发敛术,计算72候;三、步日躔术,计算每天太阳的位置和运动;四、步月离术,计算月亮的位置和运动;五、步轨漏,计算每天见到天空的星象和昼夜时刻;六、步交会术,计算日月食;七、步五星术,计算五大行星的位置和运动。”[8]一行创制的历法编订格式,一直为以后所遵循,直到明末西方历书传入才有所改变。唐时,日本留学生吉备真备把《大衍历》带到日本,在日本广泛流传使用,影响甚大。
由于天文学的发展,天文知识也得到了普及。唐初王希明所作的《步天歌》,介绍了陈卓星图中283个星官、1464个星辰的知识。它把全天分为31个天区,即后世流传的所谓“三垣二十八宿”的分区法。这种对星空的区分方法,一直沿用到近代。《步天歌》对古代普及天文学知识起了很大的作用。
在敦煌还发现了标有1350颗星的唐代星图,这是当今世界上留存星数最多而又最古老的星图。敦煌星图1907年被英国人斯坦因带走,现存英国伦敦博物馆。
当时在日食、彗星等天象记录方面,也十分细致和准确。
四、数学的进步
隋朝统一以后,为适应经济建设的需要,数学也得到了很大的发展。隋朝在中央国子寺设立算学,在科举考试中又设立明算科,这是我国历史上第一次由国家创办的数学教育。唐承隋制,在中央国子监中设有算学馆,计有博士2人,助教1人,学生30人,主要学习“十部算经”,即:《周髀算经》、《九章算术》、《海岛算经》、《孙子算经》、《五曹算经》、《夏侯阳算经》、《张丘建算经》、《五经算术》、《缉古算经》、《缀术》。此外,还学习《数术记遗》和《三等数》。学习期限是:“孙子”、《五曹》共限一岁,《九章》、《海岛》共三岁,《张丘建》、《夏侯阳》各一岁,《周髀》、《五经算》共一岁,《缀术》四岁,《缉古》三岁,《记遗》、《三等数》皆兼习之。”考试是:“凡算学,录大义本条为问答,明数造术,详明术理,然后为通。试《九章》三条,《海岛》、《孙子》、《五曹》、《张丘建》、《夏侯阳》、《周髀》、《五经算》各一条,十通六,《记遗》、《三等数》帖读十得九,为第。试《缀术》、《缉古》录大义为问答者,明数造术,详明术理,无注者合数造术,不失义理,然后为通。《缀术》七条、《缉古》三条,十通六,《记遗》、《三等数》帖读十得九,为第。落经者,虽通六,不第。”[9]
唐在地方都督府、州、县学中,也都设置有算学课程。唐中央算学馆在唐高宗时期曾一度废止,但不久又恢复。安史之乱以后,唐皇室衰微,学校废败,生徒流散,数学教育自然也衰落下去。又由于统治阶级对经史治国的过分依赖,科举逐渐趋重明经、进士二科,这又致使明算科的冷落,大约到晚唐,明算科停止了考试。
隋唐时期,政府对书籍的整理工作十分重视。唐初作为国学教科书的“十部算经”,就是唐高宗令太史令李淳风与算学博士梁述、太学助教王真儒等选定注释的。这些著作中除《缉古算经》是初唐王孝通所作以外,其余都是以前的作品。唐以前书籍都是由手抄流传的,而且也无国家颁定的本子,所以错误较多,注疏庞杂。“十部算经”经李淳风等人认真整校后,很多错误得以澄清,又经政府颁定为教科书,不仅方便了当时学者的需要,而且也使这十部算经得以流传至今。
李淳风等人注释的“十部算经”还取得了一些新的进步,如李淳风根据实际观测认为,《周髀算经》中所谓“地差千里,影差一寸”的假定是不对的;又如《海岛算经》原本是刘徽附于《九章算术》之后的“重差”一卷,原著文字难于理解,李淳风等人即详细指明了解题中的演算步骤。不过李淳风等人的注释工作也存在着一些不足,如没有认识到刘徽割圆术的意义,也有些注释质量还不够高。但从总体而言,对李淳风等人的工作应予以肯定。这是我国第一次对数学著作进行的大规模的整理,也是对我国古代唐以前数学成果的一个总结,这对推动数学教育的开展和数学知识的普及与提高都有着重要的意义。
在“十部算经”中,《缉古算经》是唐初数学家王孝通所作。王孝通生平不详,曾在高祖武德年间(618—626年)担任算学博士,后因参与校勘傅仁均制订的《戊寅历》,有新的见解,被提升为太史丞。
王孝通的主要成就在数学方面,著有《缉古算术》一书,后因被列入“十部算经”中,改称为《缉古算经》。全书共20问,第1问是讲用算学解答天文历法的计算问题。第2至14问是立体问题,是以三次方程解答的问题。第15至20问是勾股问题,是以三或四次方程解答的问题。书中在每问之后,都有术文说明各项系数的解法,重要术文之后,还有作者自注,说明立术或建立方程的理论根据及运算过程。王孝通建立的三四次方程及其解法,依据几何的性质,还只限于正解,但这在我国古代数学史上已经是一个突破,而且在世界上也处于领先的地位。李约瑟在他的《中国科学技术史·数学卷》中就认为“在欧洲,斐波那契(公元13世纪)是第一个提出王孝通那类问题的解法的人。有理由认为,他可能是受到东亚来源的影响”。
再从王孝通写作此书的目的来看,主要是为了解决一些现实中的实际问题,如其第一章就是有关天文历法计算的问题。此外,他在《上缉古算术表》中又称:“伏寻《九章》商功篇有平地役功受袤之术,至于上宽、下狭,前高后卑,正经之内阙而不论。致使今代之人不达深理,就平正之间同欹邪之用。斯乃圆孔方枘,如何可安。臣昼思夜想,临书浩叹,恐一旦瞑目;将来莫睹。遂于平地之余,续狭斜之法,凡二十术,名曰《缉古》。”可见他编著此书的目的,主要是想用以解决现实中一些土木工程的计算问题。
隋唐时期,数学方面取得的另一重要成就是二次内插法的建立。在隋以前计算日行度数,都是用一次内插法。由于日、月视运动的不均匀性,用一次内插法计算的结果与实际误差很大。到隋朝以后,刘焯在制定《皇极历》时,创立了等间距二次内插法,从而使计算方法大为精密。利用这一公式计算所得的历法精确度也有了很大提高。但在现实中,日、月、五星不是作等加速运动,所以这种算法仍然存在着缺点。为了提高制定历法的精确度,唐僧一行在公元727年,又创立了不等间距二次内插法,较好地解决了计算与实际误差较大的问题。一行所编制的《大衍历》在推算日、月、五星运行度数方面又有了新的提高,到晚唐徐昂制定《宣明历》时,还进一步简化了内插的计算公式。
二次内插法的建立,标志着我国天文历算学进入一个新的阶段,用它计算编制的历法也处于世界的领先地位。
此外,隋唐五代时期,十进位小数的应用也得到了推广。数学在长期的实际运用中,还不断简化了计算方法,这些都使数学在经济和生产建设中发挥着更大的作用。