中國通史(第六卷) · 第二十二章一行
第一節身世
一行(683—727),俗名張遂,魏州昌樂(今河南南樂)人。祖父張公謹是唐代開國功臣,被封為郯國公。父親張擅為武功縣令。
他「少聰敏,博覽經史」,常到藏書豐富的長安城南玄都觀去看書,頗受觀主尹崇賞識。一次,他從尹崇處借得西漢揚雄《太玄經》,此書意旨深奧,尹崇自稱研讀數年尚不能曉,張遂僅數日就讀完,並能究其義而撰《大衍玄圖》一卷。尹崇大驚,對人說:「此後生顏子也。」年輕的張遂成了長安城裡的知名學者。
時值武則天之侄武三思任春官尚書,封為梁王。武三思有權有勢,但沒有才學,想與張遂結交。張遂為逃避糾纏,到嵩山出家當了和尚,取法名一行。
一行不僅道學功底深厚,也刻苦鑽研天文學和數學。他曾到天台山國清寺(在今浙江天台)投師學算。開元五年(717),一行被唐皇朝強征回京,由於他不願做官,被安置在長安城內的華嚴寺編譯佛經。開元九年(721),「太史頻奏日食不效」。當時所用《麟德歷》行用了五十多年,誤差漸大,已需改革曆法。於是,唐玄宗詔令一行負責主持制訂新曆。
一行全力以赴地投入到這項工作,從開元九年到開元十五年(721—727),為了編制新曆法,在一行領導下進行了大量的天象觀測工作。為適應實測的需要,又必須首先創製一些新的科學儀器,如「覆矩」、「黃道游儀」和「水運渾象」等。最後,在大量新的實測數據的基礎上,編制出《開元大衍曆法》即《大衍曆》。
開元十五年(727),《大衍曆》草成,就在這年,一行在隨駕去洛陽的途中死於新豐(今陝西臨潼新豐鎮),年僅四十五歲。一行去世後,唐玄宗詔張說與歷官陳玄景寫定《大衍曆》,分為《歷術》(又稱歷經)7篇、《略例》1篇、《歷議》10篇,到第二年完成,開元十七年(729)起正式頒行。一行在科學方面的貢獻主要在天文儀器製造、大地測量、編制《大衍曆》三個方面。尤其是《大衍曆》受到世人的稱頌。如道士邢和璞稱讚一行說:「漢之洛下閎造歷云:『後八百歲當差一日,必有聖人正之。』今年期畢矣,而一行造《大衍》正其差謬,則洛下閎之言信矣,非聖人而何?」①可見當時人們對一行貢獻的崇敬。
①《舊唐書》卷一九一《一行傳》。
第二節在儀器製造及天文觀測方面的成就
天文儀器製造
天文學的發展離不開天文觀測的新成果。一行十分重視天文實測工作。
他受命改治新曆,首先就策劃為配合改歷所需的一系列實測工作。他奏請朝廷:「今欲創歷立元,須知黃道進退,請太史令測候星度。」①但是,當時太史局所用測候星度的渾儀上沒有黃道環,不能直接測出天體的黃道入宿度②。於是,一行提出要製造一架新的儀器,並與率府兵曹參軍梁令瓚先用木料做了一件黃道游儀的模型,後於開元十一年(723)製成了銅儀。一行、梁令瓚所制的黃道游儀的結構為三重環組。最外一重有三個環,包括地平、子午和卯酉環。其中卯酉環為過天頂和正東、西方向的一個圓環,這一重環組是固定不動的,起骨架作用。最里一重環組是夾有窺管的四游環,它的外圓周是一丈四尺六寸一分,即以四分弧長為角的一度。中間的一重與李淳風的三辰儀相當,所不同的是在赤道環上每隔一度打一個洞,使黃道環能沿赤道環移動,以適應古人所理解的冬至點沿赤道退行的歲差現象。這是渾儀發展過程的一個創舉,第一次在儀器上體現了歲差現象。同時,這也是黃道游儀的名稱由來。由於黃道和白道的交點也是在不斷移動的,因而也在黃道上每隔一度穿一個孔,過一定時間後,就把白道環移動一孔。
此外,為了能更方便地進行中天觀測,黃道游儀中的四根支柱安放在四個斜角方向。
一行用黃道游儀做了許多工作,主要有月亮的運動和恆星的黃、赤道度數(即經度)及去極度(相當於緯度)的測定。其中月亮運動的觀測對《大衍曆》的制定有很大意義,特別是為交食計算的準確性提供了基礎。而在恆星觀測中則發現了恆星位置和南北朝以來的星圖、渾象所標的位置已經有所不同。①根據這些實測結果,《大衍曆》革除了沿用了數百年的陳舊數據,取而代之以新的觀測數值。一行在恆星觀測方面是成績卓著的。
一行在天文儀器製造方面的第二件創作,是他與梁令瓚及諸術士合作製造的一台名叫「水運渾天俯視圖」的渾天象。它不但能演示天球和日月的運行,而且立了兩個木人,按刻擊鼓,按辰撞鐘,集渾天象與自鳴鐘於一體。《舊唐書》對此台儀器的結構有詳細的記載:「鑄銅為圓天之象,上具列宿赤道及周天度數。注水激輪,令其自轉,一日一夜,天轉一周。又別置二輪絡在天外,綴以日月,全得運行。每天西轉一匝,日東行一度,月行十三度十九分度之七,凡二十九轉有餘而日月會,三百六十五轉而日行匝。仍置木櫃以為地平,令儀半在地平下,晦明朔望,遲速有準。又立二木人於地平之上,前置鐘鼓。以辰刻,每一刻自然擊鼓,每辰則自然撞鐘。..當時共稱①《舊唐書》卷三五《天文志》上。
②李淳風於貞觀七年(633)製成一架渾天黃道儀,這架儀器有三重環組,中間一重環組由黃道環、赤道環和白道環組成,稱為三辰儀。它不僅能直接測得天體的入宿度,而且還可以區別黃道度與白道度。但是,李淳風製造的這架儀器被放在宮內,皇家天文機構所用的渾儀仍然是後魏製造的鐵儀。①這些變化經研究都可以解釋為由歲差原因所引起。見席澤宗:《僧一行觀測恆星位置的工作》,《天文學報》第4卷第2期(1936),第212—217頁。
其妙。」①一行還創造了一種測量北極出地高度(即所測地的地理緯度)的專用新儀器——「覆矩」(又叫「覆矩圖」)。關於覆矩的式樣,史料沒有詳細記載。研究者猜想它可能如圖1所示的形式②。
根據我們的考證,「矩」在我國古代天算典籍中有兩種含義:一是形似木工曲尺的平面區域,即所謂的「積矩」;一是勾股形中的勾邊加股邊夾一直角構成的直角折線,即所謂的「矩線」③。「覆矩」當理解為將積矩開口向下。《舊唐書·天文志》有「以覆矩斜視,北極出地」多少度的記載,又說:「以圖(即覆矩圖)校安南,日在天頂北二度四分」。這說明一行的覆矩是一種用「角度」表示地平高度的測量工具。如圖1所示,在覆矩的直角頂點系以重錘,在兩直角邊間安裝一個0到91.31度(因我國古代曆法多取圓周為365.25度,故直角當為91.31度)的量角器。使用時,把覆矩的一個特定邊指向北極,使此邊恰好在人眼和北極的連線上,則重錘線即能在量角器上直接讀出北極的地平高度。
一行發明的覆矩是一種簡便的測量北極高度的儀器,它在一行領導的開元年間天文大地測量活動中,起到了非常重要的作用。
子午線測量一行受詔改歷後組織發起了一次大規模的天文大地測量工作。這次測量,用實測數據徹底地否定了歷史上的「日影一寸,地差千里」的錯誤理論,提供了相當精確的地球子午線一度弧的長度。
一行發起這次大規模的天文測量主要目的有二。其一,我國古代有一種傳統理論:「日影一寸,地差千里。」①劉宋時期的天算家何承天根據當時在交州(今越南河內一帶)的測量數據,開始對此提出了懷疑,但長期未能得到證實。隋朝天算家劉焯則提出了用實測結果來否定這一錯誤說法的具體計劃,他說:「交愛之州,表北無影,計無萬里,南過戴日,是千里一寸,非其實差。」他建議:「請一水工,並解算術士,取河南北平地之所,可量數百里,南北使正。審時以漏,平地以繩,隨氣至分,同日度影。得其差率,里即可知。則天地無所匿其形,辰象無所逃其數,超前顯聖,效象除疑。」①但這個建議在隋朝沒有被採納。一行的測量則實現了這一計劃。其二,當時發現,觀測地點不同,日食發生的時刻和所見食象都不同,各節氣的日影長度和漏刻晝夜分也不相同。這種現象是過去的曆法所沒有考慮到的。這就需要到各地進行實地測量。
這次測量過程中,由太史監南宮說及太史官大相元太等人分赴各地,「測①《舊唐書》卷三五《天文志》上。
②梁宗巨:《僧一行發起的子午線實測》,《科學史集刊》,1959年第2期,第144—149頁。③李繼閔:《商高定理辨證》,《自然科學史研究》第12卷第1期(1993),第29—41頁。①《周髀算經》、《尚書緯·考靈曜》等書里都有記載說,南北相距千里,夏至日中午,高八尺的竿子的影長就相差一寸。
①《隋書》卷二六《天文志》。
候日影,回日奏聞」。而一行「則以南北日影較量,用勾股法算之」②。可見,一行不僅負責組織領導了這次測量工作,而且親自承擔了測量數據的分析計算工作。
當時測量的範圍很廣,北到北緯51度左右的鐵勒回紇部(今蒙古烏蘭巴托西南),南到約北緯18度的林邑(今越南的中部)等十三處,超出了現在中國南北的陸地疆界③。這樣的規模在世界科學史上都是空前的。
其中最值得注意的是由南宮說親自率領的測量隊,按劉焯的計劃在黃河兩岸平原地區測量的四個點,由北向南有滑州白馬(今河南滑縣)、汴州浚儀太岳台(今開封西北)、許州扶溝(今河南扶溝)、豫州上蔡武津館(今河南上蔡)。其中白馬在黃河北,其他三點都在黃河以南。它們均介於東經114.2—114.5度之間,差不多在同一經度上(即劉焯所說的「南北使正」)。總計白馬至上蔡526里270步,北極高度相差1.5度,從而得出大約三百五十一里八十步,北極高度相差一度的結論。這實際上給出了地球子午線一度的長度。
由於對唐尺數值的大小,人們目前的看法還不一致,故評價一行這次子午線測量的精度受到限制。初步的估計結果是,一行的測量值與現代值相比,相對誤差大約為11.8%。
國外最早的子午線實測是在公元814年,由天文學家阿爾·花剌子米(約783—850)參與組織,在幼發拉底河平原進行了一次大地測量,測算結果得出子午線一度長為111.815公里(現代理論值為110.6公里),相當精確。但這已在一行之後九十年了。
②《通典》卷二六《職官典·秘書監》。
③梁宗巨:《僧一行發起的子午線實測》,《科學史集刊》,1959年第2期,第144—149頁。
第三節《大衍曆》的九服晷影算法及其正切函數表
我國古代曆法從東漢《四分曆》開始,就有各節氣初日晷影長度和太陽去極度的觀測記錄,漏刻、晷影成為古代曆法的重要計算項目。隋朝劉焯發明二次等間距插值法之後,李淳風首先將二次插值法引入到漏刻計算中,由每氣初日的漏刻、晷影長度數求該氣各日的漏刻、晷影數。但是,各曆法中所記載和計算的漏刻和晷影大多是陽城(今河南登封東南告成鎮)的數值。一行在編制《大衍曆》時,曾進行了大規模的天文測量,通過觀測知道,隨去極度變化的影長,又因地方而異,但同太陽的天頂距有固定的對應關係。一行在《大衍曆》中發明了求任何地方每日影長和去極度的計算方法,叫做「九服晷影」。
古人把陽城作為測影的標準地點,即所謂的地中。如圖2所示,若NP為陽城的北極高度,S1、S2、S3..為陽城夏至、小暑、大暑等日的太陽上中天位置,則PS1、PS2、PS3..為陽城夏至、小暑、大暑..諸氣太陽的去極度,取α1=PS2-PS1、α2=PS3-PS2..,則α1、α2分別為陽城夏至到小暑、小暑到大暑的去極度差數,也是太陽天頂距的差數。且這個差數對任何地點的相應季節都是相等的。
設有某地北極高度為NP′,則夏至、小暑、大暑等日的太陽上中天位置為S′1、S′2、S′3..。顯然,有α1=PS′2-PS′1,α2=PS′3-PS′2。
陽城夏至、小暑、大暑太陽天頂距為ZS1、ZS2、ZS3等,故α1=ZS2-ZS1,α2=ZS3-ZS2,同樣,有α1=ZS′2-ZS′1,α2=ZS′3-ZS′2。
曆法中已給出陽城各氣初日的太陽去極度,則各氣的去極度差即為已知,同樣各氣的太陽天頂距差亦為已知,而這個差數對於任一地點都是相等的。這樣一來,對於任一地方,只要知道某一節氣(如夏至)的太陽天頂距,其他各氣的太陽天頂距都可以通過加減這個差數求出。剩下還要解決以下兩個問題:其一,如何求某地夏至(或冬至)的太陽天頂距;其二,已知天頂距如何換算出晷影長。這兩個問題都可以通過建立一個影長與太陽天頂距的對應數表來解決。
如果列出一張以天頂距為引數,每隔一度的影長的數值表,則以上兩個問題都可以解決:先在所測地測出(冬)夏至晷影長度(在一行領導的大地測量中,在每處都進行了這樣的測量),由影長查表得出太陽天頂距,再加減一個如前所述的差數αi即可求出該地各氣的天頂距,返回再查表得影長。一行在《大衍曆》「步晷漏術」中就建立了這樣一個從0度到80度的每度影長與太陽天頂距對應數表,這是世界數學史上最早的一張正切函數表。①在國外,大約920年左右,阿拉伯學者阿爾·巴坦尼(al-Battani,約858—929)根據影長與太陽仰角之間的關係,編制了0度—90度每隔一度時12尺竿子的影長表,這實際上是一個12ctgα的數表。另一位阿拉伯學者阿①劉金沂、趙澄秋:《唐代一行編成世界上最早的正切函數表》,《自然科學史研究》第5卷第4期(1986),第298—309頁。
爾·威發(Abul-Wafa,940—998)在980年左右編成了正切和餘切函數表,每隔15度和10度給出一個值。他還首次引進了正割和餘割函數。②一行和阿爾·巴坦尼差不多沿著相同的途徑編成正切和餘切函數表。一行用太陽天頂距,阿爾·巴坦尼用太陽仰角,兩者互為餘角,所以他們兩人的發現是相同的。而一行的正切函數表比阿爾·巴坦尼的餘切函數表早近兩百年,比阿爾·威發的正切表要早二百五十年。儘管一行的正切函數表只從0度到80度,誤差也相應大一些,但它畢竟是世界上最早的正切函數表。
②參見梁宗巨《世界數學史簡編》;D.E.Smith,HistoryofMathematics,Vol.2。
第四節《大衍曆》的插值算法
今天常用的牛頓插值公式,其不等間距的形式比等間距的形式要複雜得多。天算史界有一種流行的看法,認為在中國古代,唐朝天文學家、數學家一行在其《大衍曆》中發明了二次不等間距插值法,且一行還有意識地應用了三次差內插法近似公式①。因此,一行在插值法方面的貢獻備受中外天算史研究者的關注。
我國古代非線性插值法,是劉焯在其《皇極曆》(604)中考慮到太陽運動不均勻性為計算太陽行度改正值時首創的。有關中國古代插值法的算理研究的新成果表明,劉焯二次等間距插值法的造術原理建立在源於《九章算術》描述勻變速運動的模型基礎之上,認為太陽每日的運行速度之值構成一等差數列。質言之,所用數學方法就是構造一等差數列並求其前若干項和。一行的插值法並沒有人們所想像那樣的推廣意義。就插值算法本身,一行算法與劉焯算法實質完全相同②。所不同的是,《皇極曆》是在以平氣為間隔的日躔表基礎上插值。而《大衍曆》是在以定氣為間隔的日躔表上插值。
《太初曆》以後,各歷都以平分一回歸年365.25日為24等份而得每節氣長15.22日,這樣規定的二十四氣稱為「常氣」,或叫「平氣」。張子信指出「日行春分後則遲,秋分後則速」,於是劉焯造《皇極曆》時體會到二十四氣皆應有「定日」,他說:「春、秋分定日去冬至各八十八日有奇,去夏至各九十三日有奇。」但劉焯並沒有搞清楚太陽速度的加減和季節的關係,他的日躔表是把秋分定日後到春分定日前平均分為12段,每氣14.54日;春分定日後到秋分定日前也平分為12段,每氣15.45日。這顯然不是「定氣」。一行則認為,太陽在一回歸年365.2444日中共行365.2444度,每氣行15.2185度。冬至附近日行速度最急,故二氣間所需運行時間最短,夏至附近日行速度最緩,故二氣間的時間最長。實際上,《大衍曆》這裡首先提出了平分黃道為24等份,以太陽實際走完每個等份的時間長度為各節氣長度,這就是通常所稱的「定氣」概念。一行提出正確的定氣概念以後,在計算太陽改正時自然就以定氣為插值間隔。至於插值法本身則完全是沿用劉焯的方法。
值得一提的是,劉焯在日躔表中規定太陽視運動一年內的變化規律是:冬至最快,冬至後漸慢,到立春時開始加快,春分時又達到最快,冬至到春分這段時間內日速比平均速度快。春分後太陽視運動的速度突變為最慢,之後逐漸加快,到立夏時又開始減慢,夏至達到最慢。春分到夏至時段內比平均速度慢。夏至以後的變化情況以夏至處為鏡面對稱,如圖3所示。
《大衍曆》盈縮分一年內的變化趨勢則如圖4所示。盈縮分在冬至附近最大,以後逐漸變小,夏至時最小,之後又逐漸增大。這相當於把冬至作為太陽視運動的近日點,夏至為遠日點。這種認識是正確的,而《皇極曆》的規定是不符合實際的。
①嚴敦傑:《中國古代數理天文學的特點》,《科技史文集》(第1輯),上海科學技術出版社1978年版,第1—4頁。
②王榮彬:《中國古代曆法中的插值法構建原理》,見曲安京、紀志剛、王榮彬:《中國古代數理天文學探析》,西北大學出版社1994年版,第251—317頁。
說一行有意識地應用了三次差內插法的近似公式,是指《大衍曆》的月亮極黃緯算法和五星中心差改正算法中所用的插值法。當對我國古代曆法中的插值法的構造原理有了深入的認識之後,研究者進一步通過將這兩處插值法的有關術文與劉焯二次等間距插值法的術文進行對比研究,證明兩者在實質上也是相同的。
人們之所以會認為《大衍曆》使用了三次差插值法,是因為《大衍曆》在上述兩種算法的插值法中都引入了「中差」概念的緣故。但實際上一行引入「中差」的原因在於,劉焯日躔表中的各氣陟降率之差是相等的,而《大衍曆》月亮極黃緯等數表相鄰兩欄的差一般不等。這種現象的出現,正是一行受命改歷時作了大量天文觀測的結果。若仍照搬《皇極曆》的做法,就會出現同一點處有可能得到兩個不同的值的現象,這就迫使一行必須在計算方法上進行一點細節上的調整。