夢溪筆談 · 技藝
譯文
算術中求物體體積的方法,如芻萌、芻童、方池、冥谷、塹堵、鱉臑、圓錐、陽馬等,各種形狀的物體都具備了,只是沒有隙積術。古代的算法:凡計算物體的體積,有立方體,是指六個面都是正方形的物體,其計算方法是把一條邊自乘兩次就可以求得了。有塹堵,是指有點像土牆形狀的物體,兩邊是斜的,兩頭的面是垂直的。它的截面面積的算法是:先把上、下底的寬相加,除以二,作為截面的寬,用直高與它相乘就求得了一個值;再將直高作為股,用上底面的寬減去下底面的寬,所得之差除以二作為勾,用勾股定理算出弦,就是它的斜邊長。有芻童,是指有點像翻過來的方斗形狀,四側都是斜面。它的計算方法是:將上底面的長乘二,與下底面的長相加,再與上底面的寬相乘;將下底面的長乘二,與上底面的長相加,再與下底面的寬相乘;把這兩個數值相加,與高相乘,再取其六分之一(就求得了它的體積)。隙積,是指堆累起來而其中有空隙的物體,像堆疊起來的棋子、分層建造起來的土壇以及酒館裡堆累起來的酒罈子一類的物體。它們雖像倒扣著的斗,四側都是斜面,但是由於邊緣存在著一定的殘缺或空隙,如果用芻童法計算,所得數量往往比實際的要少。我想出了一種計算方法:用芻童法算出它的上位、下位數值,另外單獨列出它的下底寬,減去上底寬,將所得之差乘高,取其六分之一,再併入前面的數目就可以了。假設有用酒罈子累成的堆垛,最上層的長、寬都是兩隻罈子,最下層的長、寬都是十二隻罈子,一層層交錯堆垛好。先從最上層數起,數到有十二隻罈子的地方,正好是十一層。用芻童法來計算,把上層的長乘二得四,與下層的長相加得十六,與上層的寬相乘,得三十二;再把下層的長乘二得二十四,與上層的長相加得二十六,與下層的寬相乘,得三百一十二;上、下兩數相加,得三百四十四,乘高得三千七百八十四。另外將下層的寬十二減去上層的寬,得十,與高相乘,得一百一十,與前面的數字相加,得三千八百九十四;取它的六分之一,得六百四十九。這就是這堆酒罈的數量。運用芻童法算出的是實方的體積,運用隙積法算出的是空缺部分拼合成的體積,也就可以算出多餘的體積。丈量土地的方法,方、圓、曲、直的算法都有,不過沒有會圓的算法。凡是圓形的土地,既能夠拆開來,也應該能讓它拼合起來恢復圓形。古代的算法,只用中破圓法把圓形拆開來計算,它的誤差有達三倍之多的。我另外設計了一種拆開、會合的計算方法。假設有一塊圓形的土地,用它的直徑的一半作為弦,再以半徑減去所割下的弧形的高,用它們的差作為股;弦、股各自平方,用弦的平方減去股的平方,將它們的差開平方後作為勾,再乘二,就是所割弧形田的弦長。把所割的弧形田的高平方,乘二,再除以圓的直徑,所得的商加上弧形的弦長,便是所割弧形田的弧長。再割一塊田也像這樣計算,用總的弧長減去已割部分的弧長,就是再割之田的弧長了。假如有塊圓形的土地,直徑是十步,想使割出的圓弧高二步,就用圓半徑五步作為弦,五步自乘得二十五;又用半徑減去弧形的高二步,它們的差三步作為股,自乘得九;用它與弦二十五相減得十六,開平方得四,這就是勾,再乘二,就是弧的弦長。把圓弧的高二步自乘,得四,再乘二得八,退上一位為四尺,用圓的直徑相除。現今圓的直徑為十,已經滿了整十數,不可除。只用四尺加下圓弧直徑,就是所割圓的弧長,共得圓弧直徑八步四尺。再割一塊圓田,也依照這種方法。如果圓直徑是二十步,要求弧長,就應當折半,也就是所說的要用圓弧的半徑來除它。這兩種方法都涉及精確的算法,是古書里沒有說到的,隨筆記錄於此。 關於屋舍的營造技術,有一部專門討論的書籍叫做《木經》,有的說是喻皓所撰。此書將屋舍建築概括為「三分」:自梁以上為「上分」,梁以下、地面以上為「中分」,台階為「下分」。凡是梁長多少,則梁到屋頂的垂直高度就相應地配多少,以此定出比例。如梁長八尺,梁到屋頂的高度就配三尺五寸,這是廳堂的規格。這叫做「上分」。柱子高若干尺,則堂基就相應地配若干尺,也以此定出比例。如柱子高一丈一尺,則堂前大門台階的寬度就配四尺五寸之類,以至於斗拱、椽子等都有固定的尺寸,這叫做「中分」。台階則有「峻」、「平」、「慢」三種;皇宮內是以御輦的出入為標準的:凡是抬御輦自下而上登台階,前竿下垂盡手臂之長,後竿上舉也盡手臂之長,這樣才能保持平衡的台階叫做「峻道」;(抬輦的共有十二人:前二人稱前竿,其次二人稱前絛;又其次二人稱前脅,其後二人稱後脅;再後二人稱後絛,最後二人稱後竿。御輦的前面有隊長一人稱傳唱,御輦的後面有一人稱報賽。)前竿與肘部相平,後竿與肩部相平,這樣才能保持平衡的台階叫做「慢道」;前竿下垂盡手臂之長,後竿與肩部相平,這樣就能保持平衡的台階叫做「平道」。這些叫做「下分」。其書共有三卷。近年土木建築的技術更為嚴謹完善了,已多不用舊時的《木經》,然而還沒有人重新編寫一部這樣的書,這也應該是優秀的木工信得留意的一項業內之事。 畢昇用雕版印刷書籍,唐朝人還沒有大規模採用。至五代時的馮瀛王才開始用雕版印製五經,從那以後的各種典籍和圖書都是雕版印刷本了。慶曆年間,有位叫畢昇的平民又創造了活字印版。他的方法是用膠泥刻字,字的厚薄像銅錢的邊緣一般,每個字製成一個字模,用火燒烤使它變得堅硬。先設置一塊鐵板,上面用松脂、蠟混合紙灰這一類東西覆蓋住。想要印刷時,就拿一個鐵框子放在鐵板上,然後密密地排列好字模。排滿一鐵框就作為一個印版,拿著它靠近火烘烤;等松脂等物開始熔化時,就拿一塊平板按壓它的表面,於是,排在板上的字模就平整得像磨刀石一樣。如果只印製三兩本書,(這種方法)不能算很簡便;如果印刷幾十乃至成百上千本書,(這種方法)就顯得特別快捷。印刷時通常製作兩塊鐵板,一塊正在印刷,另一塊已經另外排字模;這一塊剛印完,另一塊已經準備好了。兩塊交替使用,極短的時間就可以完成。每一個字都有好多個字模,像「之」、「也」等字,每個字有二十多個字模,用來防備一塊板裡面有重複出現的字。(字模)不用時,就用紙條做的標籤分類加以標示,每個韻部做一個標籤,用木格把它們儲存起來。遇到平時沒有準備的生冷之字,隨即把它刻出來,用草火燒烤,很快可以製成。不拿木頭製作活字模,是因為木頭的紋理有疏有密,沾了水就會變得高低不平,加上容易與藥物互相粘連,不能(重新把字模)取下來。不如用膠泥燒制字模,使用完畢後,再次用火烘烤,使藥物熔化,用手一抹,那些字模就會自行脫落,一點也不會被藥物弄髒。畢昇死後,他的字模被我的堂房兄弟和侄子們得到了,到現在還珍藏著。 淮南人衛朴精通曆法,在這方面是不亞於唐僧一行的人物。《春秋》一書中記載了三十六次日食,歷代曆法學者通加驗證,一般認為所記與實際天象密合的不過有二十六七次,只有一行證明有二十九次;而衛朴則證明有三十五次,只有莊公十八年的一次日食,與古今學者對日食發生日期的推算都不合,懷疑是《春秋》記錯了。從夏代仲康五年癸巳歲到宋代熙寧六年癸丑歲,凡三千二百零一年,各種書籍所記載的日食共有四百七十五次,以往各種曆法的推考檢驗雖各有得失,而衛朴所得出的合乎實際的結論要較前人為多。衛朴不用計算工具就能夠推算古今的日月食,加減乘除都只用口算,卻一個數都不會錯。凡是正式制定的曆法書,全都是一大堆計算程序和數字,衛朴叫人在耳邊讀一遍,就能夠背下來;對於歷表和各種年表,他也都能縱橫背誦。他曾讓人抄寫曆書,抄寫完畢後,叫抄寫的人貼著他的耳朵讀一遍,有哪個地方錯了一個數,讀到那地方時,他就說「某字抄錯了」,他的學問竟能精湛到這樣的程度。他用算籌運算時,很大數字的乘除都不用一步一步擺下去,只照著數位運籌如飛,人的眼睛都跟不上。有人曾故意移動了他的一隻算籌,他從上到下用手摸了一遍,到被移動的地方,又隨手撥正而離開。熙寧年間制定《奉元歷》,因為沒有實際的觀測記錄,衛朴未能全部發揮他的才能和知識,他自己也說這部曆法的可靠性大約只有六七成,然而已比其他曆法要精密一些。 錢氏王朝統治兩浙時,在杭州梵天寺修建一座木塔,才建了兩三層時,錢帥登上木塔,嫌它晃動。工匠說:「還沒有蓋瓦,上面輕,所以才會這樣。」於是在上面蓋了瓦,但是木塔還是像當初一樣晃動。實在沒有辦法了,工匠就暗地裡讓妻子去見喻皓的妻子,給她送了金釵,求她向喻皓打聽木塔晃動的原因。喻皓笑著說:「這個容易啊,只要逐層鋪上木板,用釘子釘牢,就不會晃動了。」工匠按他說的(去做),塔身於是穩定了。因為釘牢木板以後,各層上下更加緊密連接,上、下、左、右、前、後六面互相連接,就像一隻箱子。人踩上去,上下及周邊四面互相支撐,當然不會晃動。人們都佩服喻皓技藝精熟。