夢溪筆談 · 象數一
譯文
唐開元間所制定的《大衍曆法》最為精密,歷代都沿用其推算朔策的方法。然而到熙寧年間考校,現行曆法已落後實際天象五十餘刻,而前世歷官都不能推知這一誤差。《奉元歷》於是改動閏月和朔日的設置:熙寧十年冬至的臨界時分原用午時,新曆改用子時;閏十二月改為閏正月。四方各族及外域來朝覲並進貢方物的國家仍然沿用舊曆,接連按以往的節慶日派遣使者通好。朝廷輿論以為節氣的確定並無顯著的天象驗證可以依據,遂因各國遣使事懷疑和反對新曆,事下有關部門考定。不過大凡立冬的晷影與立春的晷影是差不多的,如今舊曆所用的這兩種晷影長短不同,可知舊曆冬至節氣的確定有偏差;大致移動五十餘刻,立冬、立春的晷影長度才能均勻。以此作為驗證,持異議的人乃無話可說,而元旦朝會時各國使者也按新定的日期來到,於是新曆法得以確定。 正月指的是寅,二月指的是卯,稱為「建」,一般認為這是斗柄所指的方向,其實大可不必採用這種說法。不過春為寅、卯、辰,夏為巳、午、未,這是理所當然的,不用依據斗柄所指的方向來確認。因為斗柄所指的方向會有歲差,大概古時候的人並不知道歲差之法。《顓帝歷》:「冬至日宿牛初。」而今的冬至日太陽會停留在斗宿六度的地方。古時候的正月斗柄所指的位置在寅,而今正月斗柄所指的位置在丑。又將古時候和現在每年正月斗柄所指的方位作對比,現在的位置也相差了一個辰位。《堯曲》中說:「日短星昴。」而今冬至日時卻是壁宿在天頂。這些都是因為歲差的緣故。 天文學家有渾天儀,是測量天文現象的儀器,被設置於高台上,以觀察天文現象,古時候的璣衡就是現在的渾天儀。渾象和天球儀類似,用水衝激它,或者是用水銀來作為動力以旋轉,放置於密室內,和天球儀的運行也比較相似,張衡、陸績所製造的儀器,以及開元年間放置於武成殿的儀器,都是這樣的器物。皇祐年間,禮部將《璣衡正天文之器賦》作為會試的題目,參加考試的人都混用了渾象的例子,而考試官也不知道其中的道理,於是這些舉人被列為及第高等。漢朝之前都認為北極星位於天區的盡頭,所以稱為「極星」。自從祖亘以璣衡驗證了北天極點不動的位置後,才發現是在北極星天區的盡頭,距離北極星的視覺距離猶且還有一度有餘。熙寧年間,我接受詔命以統領曆法官員,曾經考察過星象曆法的事宜,並以渾天儀來求證北極星的位置。初夜時北極星的位置還在窺管之中,沒多久便游移出窺管之外了,由此可見窺管是非常小的,無法容納北極星的游移轉動,便稍稍將窺管擴大並以此來繼續觀測。這般經過了三個月,北極星才可以完全在窺管內遊動了,一直可以看到而不會再隱去,然後才知道北天極點不動的地方,和北極星的距離還有三度有餘。北極星每次進入窺管時,都會另外畫上一張圖。這張圖是用圓規畫出的正圓形,並將北極星畫在圓形中。只要在初夜、中夜、後夜時看到北極星後都會畫在圖上,以此總共畫了二百多張圖,北極星才按照設定的尺度移動,每夜都沒有誤差。我在《熙寧歷奏議》中講述的已經很詳細了。 古今所談論刻漏的有幾十家,都有很多的疏漏和錯誤。曆法家談論晷漏的,從《顓帝歷》至今,見於世人而被稱為「大曆」的,總共有二十五家。其中用來計算時間的方法,都不合乎天體運行。我曾經觀測天象、測量日影,並用相關的渾儀、渾象去驗證,參考這些數據並操作刻漏,這般經歷了十幾年,才得到了初步的接近於真實的數據,並寫成了四卷書,稱為《熙寧晷漏》,都沒有沿襲前人的足跡。其中有兩件事比較精妙:第一,操作刻漏的人經常憂患於冬天水流遲緩、夏天水流滑利,並認為水性原本就是這樣;又懷疑是因為流水結冰後而堵住了漏嘴,想方設法地想要去調理,卻最終沒有達到要求。我根據理論對此進行了探討,冬至日時太陽的運行速度比較快,天象還沒有運行一個周期,而刻漏已經計時一晝夜,所以說一天已經超過了一百刻;夏至日的時候太陽運行速度比較慢,天象運行一個周期,而刻漏計時還沒有到一晝夜,所以說這一天還沒有到一百刻。既然得到了這些數據,然後再核對晷景、漏刻所得到的數據,沒有不吻合的,這一點是古人所不知道的。第二,太陽運行速度的快慢,都是逐漸增長和消減的,沒有一天是突然間變動的道理。曆法都是依據節氣中每天長短的平均值來劃分為刻和分,並將每日多餘和減少的累積起來,節氣剛開始的時候,每天的增長和消減量都是一樣的,到了下一個節氣,就會突然開始改變差量。所以黃道有了稜角而不再是圓形,即便勉勉強強用這些數據來進行推算,也並不是合乎道理的運算,而大多數都是和數值不相符的。但凡是物體都有明確的形狀,每一種形狀都有其實際的數值。方、圓、正、斜,都是明確的形狀;通過乘除等相關的推算,不會附加任何其他的東西,形狀和數值可以完全吻合的,就是和實際數值相符的。這一種運算方法只能在心中領會,而不可以言語相傳。黃道圍繞著天空為一個正圓,圓這個形體,天體圍繞它來運行時盈縮就會達到最為均等的狀態,不均等的話就不符合圓的量度;如若不沿著這個軌跡運行那麼就會有快有慢,沒有快慢也就無法有盈縮。以圓法法度來進行運算,得到的差額沒有不均等的;以盈縮的法度來進行運算,得到的差額則是有大有小。將其相乘而求得總值,相除以求得差額;將總值和差額匯總,則衍變成一種計算太陽運行的數學方法。從太陽的運行變化上來談論,那麼每時每秒之間,其增減都不一樣;從太陽運行的一致上來看,那麼只用一個差額,就可以不停地循環,終始如貫,不能找出其中間斷的地方。這一種圓形法度的精微之處,是之前談論運算的人所不知道的事情。以日差來求得日積差,然後又得到了日差,如此反反覆覆地運算,賓主交替。順應著計算就能夠得到每日長短的變化,差別推算就可以得出太陽在黃道時距離北極的度數,不管是合算還是分開來算都沒有任何的破綻,就好比用圓規畫圓一般吻合。如若不是精通推算的人,是無法知道其中的精微之處的。其詳細的內容都已經記錄在了我的《奏議》中,並被史官所收藏,而且在我所寫的《熙寧晷漏》四卷中也記載了這些內容。 我編校昭文館中的書籍時,曾經參與過渾天儀的詳細審定工作。長官問我:「二十八星宿之間的距離,多的有三十三度,少的只有一度,這般不均勻,為什麼呢?」我回答說:「天體的事情原本就沒有度,推算曆法的人沒辦法使用他們的推算數據,所以只能運用太陽運行的軌道而將周天劃分為三百六十五度多一點點。(太陽的運行周期平均為三百六十五天多一點,所以周天便以太陽一天所運行的距離作為一度。)既然要劃分周天,那麼就必須要有參照物來記述,然後才可以去測量和計算,於是便以正在黃道周圍的星體作為分度界點的標誌。遵循著黃道,太陽運行一周,那麼能夠作為分度界點的也只有二十八星宿而已。(分度界點如同傘的弓形架條,所謂當度是正好處於傘的弓上。所以車蓋會有二十八個弓架,以象徵二十八個星宿。就是我在《渾儀奏議》說的『度是不可以看到的,可以看到的是星星。』日月五星所經過的地方,也有很多能夠看到的星星。而可以作為分度界點的大概只有二十八星宿的星官,稱為『舍』。『舍』能夠提攜分度,又能夠生度數的。)而今所謂的『距度星』說的就是這種星。並不是天文家不想將它們均勻劃分,而是在太陽所運行的黃道上能夠當作分度界點的,也就只有這些而已了。」 長官又問我說「太陽和月亮的形狀是像個球呢,還是像把扇子呢?如果像個圓球,那麼它們相遇的時候,豈不是要相互妨礙?」我回答說:「太陽、月亮的形狀猶如圓球,是從何知道的呢?通過月亮的盈虧便可以驗證。月亮原本是沒有光的,就好比一個銀球一樣,太陽照射它時它才會發光。月光初生時,太陽在它的旁邊,所以光源在它的一側,人們所見到的月亮就如同一個彎鉤;太陽漸漸遠離月亮,光源斜照過來,那麼月光就開始變得圓滿。猶如一個圓球,用粉塗抹它表面的一半,從側面看它,那麼塗粉的地方就好比彎鉤;和它對視,那麼就是一個正圓,由此可以知道太陽、月亮都是一個圓球。太陽、月亮,是氣體的凝結,有形狀而沒有實質,所以在相遇的時候也不會相互妨礙。」 又問我說:「太陽和月亮的運行,每個月都會發生一次會合、一次正對,有時會發生日食、月食,有時又不會發生,這是什麼原因呢?」我回答說:「黃道和月道,就好比兩個圓環相互重疊而又相互有所偏差。但凡太陽和月亮在同一個經度相遇的時候,那麼就會出現日食;在同一個經度正對的時候,就會發生月食。雖然在同一個經度,如若月道和黃道不相近的話,太陽和月亮自然也就不會相互侵犯;在同一經度而又接近於黃道、月道的交點,太陽和月亮相遇的時候,就會互相侵犯遮掩。當它們正好在黃道、月道的交點相遇時,就會發生日全食或者月全食;如若它們在相遇的時候沒有在這個交點上,那麼就會隨著它們相互侵犯的深淺而發生偏食。凡是日食,月亮通過交點自黃道以南而進入黃道以北,那麼日食就會在交點的西南方向出現,太陽則在交點的東北方向;如若月亮通過交點自黃道以北而進入黃道以南,那麼日食就會在交點的西北方向出現,而太陽則位於交點的東南方向。太陽如果在交點的東面,那麼日食便會在交點的北面出現;如果太陽在交點的西面,那麼日食就會出現在交點的南面。如果是日全食,那麼就會在交點的正西面出現,而太陽又在交點的正東方向出現。凡是月食,月亮從黃道以南進入到黃道以北的時候,那麼月食就會出現在交點的東南方向,月亮則在交點的西北方向;如若月亮是從黃道以北而進入到黃道以南,那麼月食則會在交點的東北方向出現,而月亮則又復原於交點的西南方向。月亮在交點的東面,那麼月食就會出現在交點的南面;月亮在交點的西面,那麼月食就會發生在交點的北面。月全食,則是交點的正東方向,而月亮則又在交點西面復原。每月黃道和白道的交點都會西退一度多,但凡二百四十九次交會時為一個周期。所以在西天印度曆法中,羅睺、計都兩星都是依據其逆行來設定運算的,此二星便是我們現在的黃道和白道的兩個交點。交初點稱為『羅睺』,交中點稱為『計都』。」 慶曆年間,有一個姓李的術士,善於巧思。曾經雕刻了一個木頭人「舞鍾馗」,高二三尺,右手拿著狹長的鐵板子,鍾馗的左手放著很香的餌料。老鼠順著香味去吃餌料的時候,那麼它的左手便會抓住老鼠,右手會用鐵板將老鼠打死。這個術士將它獻給了荊王,荊王便讓他當了自己的門客。恰逢太史說黃昏時候發生了月食,李姓術士自己出來回答:「有方法可以消除。」荊王讓他試著去消除月食這一現象,當天晚上果然就沒有發生月食了。荊王感覺很是神奇,當天便將這件事情上奏給了皇帝,皇帝下詔交給內侍省詢問這件事情的來龍去脈。李姓術士說:「我原本就擅長曆法、法術,知道《崇天曆》的月食食限很弱,這次的月食,應該是在地平線以下。以我自身的卑微而無法上奏給官府,所以開始才會用一個小木頭人投機取巧於荊王的府邸,而今又假借去除月食的事情來吸引朝廷的注意而已。」於是皇帝詔令將他送往司天監以驗證他的說法。李姓術士和判監楚衍推算日食和月食,隨後在食限上又添加了兩刻,李姓術士便被授予司天學生。到熙寧元年七月,根據推算日食應該會在東方出現,卻沒有應驗。這是因為食限過強的原因,各位曆法官員都遭到了貶謫。皇帝命令監官周琮重新修訂曆法,又減去了慶曆年間所加上的二刻。這樣一來想要算清熙寧年間的這次月食,那麼慶曆年間的那次月食便是不準確的了,對此爭論很多,最終也沒有得出一個巧妙的算法,於是便廢除了《明天曆》,又推行《崇天曆》。到了熙寧五年,衛朴編制出了《奉元歷》,才開始知道舊時推算日食月食的方法僅僅使用了太陽運行時的平均速度,所以太陽運行快時就會超時,運行的慢時便會不足。對《崇天曆》《明天曆》兩種曆法所使用的加減食限的方法,都不曾考究過其中真正的原因,直到現在才算是知道了其中失誤的地方。