一行(公元683年~公元727年),佛法名号。中国唐代著名的天文学家和释学家,本名张遂,魏州昌乐(今河南省南乐县)人。
张遂的曾祖是唐太宗李世民的功臣、襄州都督、郯国公张公谨。其父张擅为武功县令。张氏家族在武则天时代已经衰微。张遂自幼生活在关中,刻苦学习历象和阴阳五行之学。青年时代即以学识渊博闻名于长安。为避开武则天侄的纠缠,剃度为僧,取名一行。先后在嵩山、天台山、当阳山学习释教经典和天文数学。曾翻译过多种印度佛经,后成为佛教一派——密宗的领袖。
唐朝开元九年(公元721年),因为李淳风的《麟德历》几次预报日食不准,玄宗命一行主持修编新历。一行一生中最主要的成就是编制《大衍历》,他在制造天文仪器、观测天象和主持天文大地测量方面有很大贡献。
幼年时,一行家庭贫困,经常得到邻居王姥姥接济。一行做了天子之师常想起王姥姥。然而尚来不及报答,王姥姥已找上门来。儿子杀人犯罪,王姥姥想让一行出面求求情。一行明白杀人偿命,国法难违。他说:姥姥是一行的恩人,要钱要物要多少一行都应当满足,此事一行却办不到。王姥姥听了大骂一行见死不救忘恩负义。一行惟有不停地在姥姥面前谢罪。目送姥姥离去,一行把一布袋交给两个心腹之人,命他们在指定的一个地方潜藏,他说从中午到黄昏,会有七样东西进入布袋。他们照着做了,用布袋带回七只猪。一行把七只猪放进已准备好的大瓮中封盖。次日一早,宫里来人叩门急切,说皇帝有事相商。刚到便殿,李隆基已迎出来,问:昨夜北斗七星不见了,是吉是凶?如何应对?一行有理有据做了分析,然后建议“莫若大赦天下”。李隆基当即下诏大赦天下。当天晚上,七星中的一颗在天空中出现了,七天后,七星全部在天空中出现了…… 恩人的儿子犯死罪,一行要报恩,又要不违犯国法,在此情境下,他惟有用自己的“方法”。段成式记述此事,心中亦有疙瘩解不开:此事颇怪,然大传众口,不得不著之。
僧一行博览无不知,尤善于数,钩深藏往,当时学者莫能测。幼时家贫,邻有王姥,前后济之数十万,及一行开元中承上敬遇,言无不可,常思报之。寻王姥儿犯杀人罪,狱未具,姥访一行求救,一行曰:“姥要金帛,当十倍酬也。明君执法,难以请求,如何?”王姥戟手大骂曰:“何用识此僧!”一行从而谢之,终不顾。一行心计浑天寺中工役数百,乃命空其室内,徙大瓮于中,又密选常住奴二人,授以布囊,谓曰:“某坊某角有废园,汝向中潜伺,从午至昏,当有物入来。其数七,可尽掩之。失一则杖汝。”奴如言而往,至酉后,果有群豕至,奴悉获而归。一行大喜,令置瓮中,覆以木盖,封于六一泥,朱题梵字数寸,其徒莫测。诘朝,中使叩门急召。至便殿,玄宗迎问曰:“太史奏昨夜北斗不见,是何祥也,师有以禳之乎?”一行曰:“后魏时,失荧惑,至今帝车不见,古所无者,天将大警于陛下也。如臣曲见,莫若大赦天下。”玄宗从之。又,其夕,太史奏北斗一星见,凡七日而复。成式以此事颇怪,然大传众口,不得不著之。
据明正德本《大名府志》及今本《南乐县志》记载:西汉置乐昌县,属东郡。乐昌县在东汉初年废置。西晋于原乐昌县故地复设县,更名昌乐,属魏郡。隋开皇三年(公元583年),从昌乐县西北部分置繁水县,同属魏州。大业元年(公元605年),昌乐县并入繁水县。唐贞观十六年(公元643年),改繁水县为昌乐县。五代后梁贞明二年(公元916年),昌乐县更名南乐县,仍属魏州。再查考魏州,原名魏郡,北周改之,五代又更名兴唐府、广晋府、大名府。南乐县从五代到民国初年,长期为大名府所辖。由上可见,南乐县是由乐昌、昌乐、繁水沿革而来,唐时的魏州繁水、昌乐即今河南南乐县。
僧一行,姓张氏,先名遂,魏州昌乐人,襄州都督、郯国公公谨之孙也。父擅,武功令。
一行少聪敏,博览经史,尤精历象、阴阳、五行之学。时道士尹崇博学先达,素多坟籍。一行诣崇,借扬雄《太玄经》,将归读之。数日,复诣崇,还其书。崇曰:“此书意指稍深,吾寻之积年,尚不能晓,吾子试更研求,何遽见还也?”一行曰:“究其义矣。”因出所撰《大衍玄图》及《义决》一卷以示崇。崇大惊,因与一行谈其奥赜,甚嗟伏之。谓人曰:“此后生颜子也。”一行由是大知名。武三思慕其学行,就请与结交,一行逃匿以避之。寻出家为僧,隐于嵩山,师事沙门普寂。睿宗即位,敕东都留守韦安石以礼征。一行固辞以疾,不应命。后步往荆州当阳山,依沙门悟真以习梵律。
癫坷开元五年,玄宗令其族叔礼部郎中洽赍敕书就荆州强起之。一行至京,置于光太殿,数就之,访以安国抚人之道,言皆切直,无有所隐。开元十年,永穆公主出降,敕有司优厚发遣,依太平公主故事。一行以为高宗末年,唯有一女,所以特加其礼。又太平骄僭,竟以得罪,不应引以为例。上纳其言,遽追敕不行,但依常礼。其谏诤皆此类也。
卷,一行尤明著述,撰《大衍论》三卷,《摄调伏藏》十卷,《天一太一经》及《太一局遁甲经》、《释氏系录》各一卷。时《麟德历经》推步渐疏,敕一行考前代诸家历法,改撰新历,又令率府长史梁令瓒等与工人创造黄道游仪,以考七曜行度,互相证明。于是一行推《周易》大衍之数,立衍以应之,改撰《开元大衍历经》。至十五年卒,年四十五,赐谥曰“大慧禅师”。
魏书初,一行从祖东台舍人太素,撰《后魏书》一百卷,其《天文志》未成,一行续而成之。上为一行制碑文,亲书于石,出内库钱五十万,为起塔于铜人之原。明年,幸温汤,过其塔前,又驻骑徘徊,令品官就塔以告其出豫之意;更赐绢五十匹,以莳塔前松柏焉。
逅拢初,一行求访师资,以穷大衍,至天台山国清寺,见一院,古松十数,门有流水。一行立于门屏间,闻院僧于庭布算声,而谓其徒曰:“今日当有弟子自远求吾算法,已合到门,岂无人导达也?”即除一算。又谓曰:“门前水当却西流,弟子亦至。”一行承其言而趋入,稽首请法,尽受其术焉,而门前水果却西流。道士邢和璞尝谓尹愔曰:“一行其圣人乎?汉之洛下闳造历,云:‘后八百岁当差一日,必有圣人正之。’今年期毕矣,而一行造《大衍》正其差谬,则洛下闳之言,信矣!非圣人而何?
为之时又有黄州僧泓者,善葬法。每行视山原,即为之图,张说深信重之。
说,桑道茂者,大历中游京师,善太一遁甲五行灾异之说,言事无不中。代宗召之禁中,待诏翰林。建中初,神策军修奉天城,道茂请高其垣墙,大为制度,德宗不之省。及朱泚之乱,帝苍卒出幸,至奉天,方思道茂之言。时道茂已卒,命祭之。
赞曰:术数之精,事必前知。粲如垂象,变告无疑。怪诞之夫,诬罔蓍龟。致彼庸妄,幸时艰危。
一行主张在实测的基础上编订历法。为此,首先需要有测量天体位置的仪器。他于开元九年(公元721年)率府兵曹参军梁令瓒设计黄道游仪,并制成木模。一行决定用铜铁铸造,于开元十一年(公元723年)完成。这架仪器的黄道不是固定的,可以在赤道上移位,以符合岁差现象(当时认为岁差是黄道沿赤道西退,实则相反)。
后来,一行和梁令瓒等又设计制造水运浑象。这个以水力推动而运转的浑象,附有报时装置,可以自动报时,称为"水运浑天"或"开元水运浑天俯视图"。水运浑天仪是一具依靠水力而使其运转,能模仿天体运行的仪器,并可以测定时间。这个浑天仪改进了汉代科学家张衡的设计,注水激轮,令其自转,昼夜一周,除了表现星宿的运动以外,还能表现日升月落,当然比张衡的水运浑象仪更加精巧、复杂了。所以,当水运浑天仪造成之后,置于武成殿前,文武百僚观看后,无不为其制作精妙,测定朔望、报告时辰准确而叹服,共称其妙。
特别是在水运浑天仪上,还设有两个木人(相关的商州铜佛龛文物遗址仍存),用齿轮带动,一个木人每刻(古代把一昼夜分为一百刻)自动击鼓,一个木人每辰(合现在两个小时)自动撞钟。这两个木人是运用机械原理而制成的古代机器人。这是一个十分巧妙的计时机械,是世界上最早的机械时钟装置,是现代机械类钟表的祖先,比公元1370年西方才出现的威克钟要早六个世纪,这充分显示了中国古代劳动人民和科学家的聪明才智。
尽管这架水运浑天仪在使用了一段时间后,便因铜铁渐涩,不能自转而进入博物馆了。但是,一行和梁令瓒却以获得天文钟的发明权而永垂史册。英国著名科技史家李约瑟博士在《中国科学技术史》第四卷中说:高僧一行和梁令瓒所发明的平行联动装置,实质上就是最早的机械时钟,是一切擒纵器的祖先,走在欧洲14世纪第一具机械时钟的前面;
水运浑天仪上刻有二十八宿,注水激轮,每天一周,恰恰与天体周日视运动一致。水运浑天仪一半在水柜里,柜的上框,有如地则自然撞钟。整个水运浑天仪既能演示日、月、星辰的视运动,又能自动报时,有二木人,每刻(古代把一昼夜分做一百刻=0.24小时=14,4分钟)击鼓,每时辰(合现在两小时)撞钟。这是世界上最早将擒纵应用于报时的装置,比外国自鸣钟的出现早了六百多年。
一行等以新制的黄道游仪观测日月五星的运动,测量一些恒星的赤道坐标和对黄道的相对位置,发现这些恒星的位置同汉代所测结果有很大变动。
一行受诏改历后组织发起了一次大规模的天文大地测量工作。这次测量,用实测数据彻底地否定了历史上的“日影一寸,地差千里”的错误理论,提供了相当精确的地球子午线一度弧的长度。
一行发起这次大规模的天文测量主要目的有二。其一,中国古代有一种传统理论:“日影一寸,地差千里。”刘宋时期的天算家何承天根据当时在交州(今越南河内一带)的测量数据,开始对此提出了怀疑,但长期未能得到证实。隋朝天算家刘焯则提出了用实测结果来否定这一错误说法的具体计划,他说:“交爱之州,表北无影,计无万里,南过戴日,是千里一寸,非其实差。”他建议:“请一水工,并解算术士,取河南北平地之所,可量数百里,南北使正。审时以漏,平地以绳,随气至分,同日度影。得其差率,里即可知。则天地无所匿其形,辰象无所逃其数,超前显圣,效象除疑。”但这个建议在隋朝没有被采纳。一行的测量则实现了这一计划。其二,当时发现,观测地点不同,日食发生的时刻和所见食象都不同,各节气的日影长度和漏刻昼夜分也不相同。这种现象是过去的历法所没有考虑到的。这就需要到各地进行实地测量。
这次测量过程中,由太史监南宫说及太史官大相元太等人分赴各地,“测候日影,回日奏闻”。而一行“则以南北日影较量,用勾股法算之”。可见,一行不仅负责组织领导了这次测量工作,而且亲自承担了测量数据的分析计算工作。
当时测量的范围很广,北到北纬51度左右的铁勒回纥部(今蒙古乌兰巴托西南),南到约北纬18度的林邑(今越南的中部)等十三处,超出了现在中国南北的陆地疆界。这样的规模在世界科学史上都是空前的。
其中最值得注意的是由南宫说亲自率领的测量队,按刘焯的计划在黄河两岸平原地区测量的四个点,由北向南有滑州白马(今河南滑县)、汴州浚仪太岳台(今开封西北)、许州扶沟(今河南扶沟)、豫州上蔡武津馆(今河南上蔡)。其中白马在黄河北,其他三点都在黄河以南。它们均介于东经114.2度—114.5度之间,差不多在同一经度上(即刘焯所说的“南北使正”)。总计白马至上蔡526里270步,北极高度相差1.5度,从而得出大约三百五十一里八十步,北极高度相差一度的结论。这实际上给出了地球子午线一度的长度。
由于对唐尺数值的大小,人们目前的看法还不一致,故评价一行这次子午线测量的精度受到限制。初步的估计结果是,一行的测量值与现代值相比,相对误差大约为11.8%。
国外最早根据日影长度计算地球周长的是古希腊科学家埃拉托斯特尼,约公元前240年,他根据亚历山大港与阿斯旺之间不同的正午时分的太阳高线及三角学计算,以斯塔蒂亚(stadia)为单位出地球的直径。斯塔蒂亚乃是古希腊的长度单位,各地不一。如按雅典的长度算,则地球周长为46620公里,多了16.3%,若按埃及的长度算,则地球周长为39690公里,其误差小于2%。
伊斯兰世界最早的子午线实测是在公元814年,在一行之后九十年,由天文学家阿尔·花剌子米(约783—850)参与组织,在幼发拉底河平原进行了一次大地测量,测算结果得出子午线一度长为111.815公里(现代理论值为110.6公里),相当精确。
从开元十三年(公元725年)起,一行开始编历。经过两年时间,编成草稿,定名为《大衍历》。《大衍历》后经张说和历官陈玄景等人整理成书。从开元十七年起,根据《大衍历》编算成的每年的历书颁行全国。经过检验,《大衍历》比唐代已有的其他历法都更精密。开元二十一年(公元733年)传入日本,行用近百年。
《大衍历》的九服晷影算法及其正切函数表
中国古代历法从东汉《四分历》开始,就有各节气初日晷影长度和太阳去极度的观测记录,漏刻、晷影成为古代历法的重要计算项目。隋朝刘焯发明二次等间距插值法之后,李淳风首先将二次插值法引入到漏刻计算中,由每气初日的漏刻、晷影长度数求该气各日的漏刻、晷影数。但是,各历法中所记载和计算的漏刻和晷影大多是阳城(今河南登封东南告成镇)的数值。一行在编制《大衍历》时,曾进行了大规模的天文测量,通过观测知道,随去极度变化的影长,又因地方而异,但同太阳的天顶距有固定的对应关系。一行在《大衍历》中发明了求任何地方每日影长和去极度的计算方法,称做“九服晷影”。历法中已给出阳城各气初日的太阳去极度,则各气的去极度差即为已知,同样各气的太阳天顶距差亦为已知,而这个差数对于任一地点都是相等的。这样一来,对于任一地方,只要知道某一节气(如夏至)的太阳天顶距,其他各气的太阳天顶距都可以通过加减这个差数求出。剩下还要解决以下两个问题:其一,如何求某地夏至(或冬至)的太阳天顶距;其二,已知天顶距如何换算出晷影长。这两个问题都可以通过建立一个影长与太阳天顶距的对应数表来解决。
如果列出一张以天顶距为引数,每隔一度的影长的数值表,则以上两个问题都可以解决:先在所测地测出(冬)夏至晷影长度(在一行领导的大地测量中,在每处都进行了这样的测量),由影长查表得出太阳天顶距,再加减一个如前所述的差数即可求出该地各气的天顶距,返回再查表得影长。一行在《大衍历》“步晷漏术”中就建立了这样一个从0度到80度的每度影长与太阳天顶距对应数表,这是世界数学史上最早的一张正切函数表。
在国外,大约920年左右,阿拉伯学者阿尔·巴坦尼(al-Battani,约858年—929年)根据影长与太阳仰角之间的关系,编制了0度—90度每隔一度时12尺竿子的影长表,这实际上是一个12ctgα的数表。另一位阿拉伯学者阿尔·威发(Abul-Wafa,940—998)在980年左右编成了正切和余切函数表,每隔15度和10度给出一个值。他还首次引进了正割和余割函数。一行和阿尔·巴坦尼差不多沿着相同的途径编成正切和余切函数表。一行用太阳天顶距,阿尔·巴坦尼用太阳仰角,两者互为余角,所以他们两人的发现是相同的。而一行的正切函数表比阿尔·巴坦尼的余切函数表早近两百年,比阿尔·威发的正切表要早二百五十年。尽管一行的正切函数表只从0度到80度,误差也相应大一些,但它毕竟是世界上最早的正切函数表。
《大衍历》的插值算法
今天常用的牛顿插值公式,其不等间距的形式比等间距的形式要复杂得多。天算史界有一种流行的看法,认为在中国古代,唐朝天文学家、数学家一行在其《大衍历》中发明了二次不等间距插值法,且一行还有意识地应用了三次差内插法近似公式。因此,一行在插值法方面的贡献备受中外天算史研究者的关注。中国古代非线性插值法,是刘焯在其《皇极历》(604年)中考虑到太阳运动不均匀性为计算太阳行度改正值时首创的。有关中国古代插值法的算理研究的新成果表明,刘焯二次等间距插值法的造术原理建立在源于《九章算术》描述匀变速运动的模型基础之上,认为太阳每日的运行速度之值构成一等差数列。质言之,所用数学方法就是构造一等差数列并求其前若干项和。一行的插值法并没有人们所想象那样的推广意义。就插值算法本身,一行算法与刘焯算法实质完全相同。所不同的是,《皇极历》是在以平气为间隔的日躔表基础上插值。而《大衍历》是在以定气为间隔的日躔表上插值。
《太初历》以后,各历都以平分一回归年365.25日为24等份而得每节气长15.22日,这样规定的二十四气称为“常气”,或叫“平气”。张子信指出“日行春分后则迟,秋分后则速”,于是刘焯造《皇极历》时体会到二十四气皆应有“定日”,他说:“春、秋分定日去冬至各八十八日有奇,去夏至各九十三日有奇。”但刘焯并没有搞清楚太阳速度的加减和季节的关系,他的日躔表是把秋分定日后到春分定日前平均分为12段,每气14.54日;春分定日后到秋分定日前也平分为12段,每气15.45日。这显然不是“定气”。一行则认为,太阳在一回归年365.2444日中共行365.2444度,每气行15.2185度。冬至附近日行速度最急,故二气间所需运行时间最短,夏至附近日行速度最缓,故二气间的时间最长。实际上,《大衍历》这里首先提出了平分黄道为24等份,以太阳实际走完每个等份的时间长度为各节气长度,这就是通常所称的“定气”概念。一行提出正确的定气概念以后,在计算太阳改正时自然就以定气为插值间隔。至于插值法本身则完全是沿用刘焯的方法。
值得一提的是,刘焯在日躔表中规定太阳视运动一年内的变化规律是:冬至最快,冬至后渐慢,到立春时开始加快,春分时又达到最快,冬至到春分这段时间内日速比平均速度快。春分后太阳视运动的速度突变为最慢,之后逐渐加快,到立夏时又开始减慢,夏至达到最慢。春分到夏至时段内比平均速度慢。夏至以后的变化情况以夏至处为镜面对称。
《大衍历》盈缩分一年内的变化趋势将盈缩分在冬至附近最大,以后逐渐变小,夏至时最小,之后又逐渐增大。这相当于把冬至作为太阳视运动的近日点,夏至为远日点。这种认识是正确的,而《皇极历》的规定是不符合实际的。
说一行有意识地应用了三次差内插法的近似公式,是指《大衍历》的月亮极黄纬算法和五星中心差改正算法中所用的插值法。当对中国古代历法中的插值法的构造原理有了深入的认识之后,研究者进一步通过将这两处插值法的有关术文与刘焯二次等间距插值法的术文进行对比研究,证明两者在实质上也是相同的。
人们之所以会认为《大衍历》使用了三次差插值法,是因为《大衍历》在上述两种算法的插值法中都引入了“中差”概念的缘故。但实际上一行引入“中差”的原因在于,刘焯日躔表中的各气陟降率之差是相等的,而《大衍历》月亮极黄纬等数表相邻两栏的差一般不等。这种现象的出现,正是一行受命改历时作了大量天文观测的结果。若仍照搬《皇极历》的做法,就会出现同一点处有可能得到两个不同的值的现象,这就迫使一行必须在计算方法上进行一点细节上的调整。