文章
【戲說古早】古人多會算數?從《顯微鏡下的大明之絲絹案》一探究竟!
李開周老師一邊回顧現代網劇,一邊探討明朝的土地清丈和相關的數學技能。
一樁發生於萬曆年間的審判,掀起了一場震動江南的風波,還與朝廷即將全面推行的土地清丈和均平稅賦政策牽扯起來⋯⋯網劇《顯微鏡下的大明之絲絹案》除了講述江南絲絹案始末,其中,高效率的「推步聚頂之術」更展現算術之奇,距今百年前的明朝,數學水平真的如此高超嗎?
今年二月份,愛奇藝網劇《顯微鏡下的大明之絲絹案》首播,劇中多次呈現一種神奇的「推步聚頂之術」,用於測量那些形狀極不規整的「妖田」。面對妖田,常用的測量方法和面積公式都派不上用場,只有使出推步聚頂之術,才能又快又準地解決問題。
本劇以明朝為歷史背景,明朝真的有過推步聚頂之術嗎?我們不妨一邊回顧劇情一邊回看歷史,探討一下明朝的土地清丈和相關的數學技能。
明代數學家程大位©全景視覺
一場因絲絹引發的風暴
故事發生在明朝中葉,主角叫帥家默,金安府金華縣人,父母雙亡,性格自閉,絲毫不通人情世故,但卻極具數學天分,故此得名「算呆子」。
帥家默查閱官府檔案時,偶然發現金華百姓每年要繳納三千五百三十兩白銀的「人丁絲絹稅」,已經連繳一百多年,而在金安府治下八個縣當中,這筆稅賦只有金華一縣承擔,其他七縣均未分攤。帥家默向金華知縣揭露此事,知縣不理,他便去知府衙門和巡按衙門提告,卻掀起震動江南的一場風波,還與朝廷即將全面推行的土地清丈和均平稅賦政策牽扯起來⋯⋯
這段劇情是有歷史原型的,相關史事詳載於明朝萬曆七年(西元一五七九年)定稿的《絲絹全書》。編劇創作時,核心故事未變,但人名、地名和稅賦數目均有改動。在《絲絹全書》中,帥家默本名帥嘉謨,金安府本為徽州府,金華縣本為徽州歙縣,歙縣每年多繳的人丁絲絹稅並非三千五百三十兩白銀,而是八千七百八十匹絲綢,徽州府當時治下也不是八個縣,而是六個縣。劇中那位本來與帥家默對簿公堂、後來又從反派變成正派的訟師程仁清,在《絲絹全書》裡本名程任卿,是徽州府婺源縣的秀才。事實上,連《絲絹全書》這部文獻都是由程任卿編寫完成的。
明朝算術,好比藝術
有必要說明的是,本劇總編劇馬伯庸仔細研究過《絲絹全書》,他先根據《絲絹全書》創作歷史隨筆,使其成為《顯微鏡下的大明》一書的第一篇章,又在歷史隨筆的基礎上寫出這部同名網劇。
馬伯庸不僅擅長講故事,也擅長讀歷史,從劇中出現的計算道具和測量道具可以看出,他必定參考了明朝中葉最流行的數學書籍《算學寶鑑》和《算法統宗》。比如說,每集片頭都有一個鏡頭,用紅、黃、綠三色的小木棒和草莖組成「 」符號,其中小木棒是明朝及明朝以前數學家常用的算籌,而這組用小木棒和草莖組成的符號就相當於數字三五三〇。再比如第十集,主角帥家默使用一些奇怪的符號做計算,那些符號在明朝叫「賬碼」,是阿拉伯數字普及以前中國數學家普遍使用的數字系統。
又比如說,帥家默測量土地時,常用一種仿佛現代風箏線輪的放線工具,其樣式在《算法統宗》中繪有插圖,是明朝數學家程大位發明的「新丈量步車」。還有本劇第七集,帥家默與同樣愛好數學的鄧知縣探討土地丈量之術,提到「廣田」、「圭田」、「箕田」、「弧田」,這些術語在明朝數學書籍裡都很常見,分別指長方形地塊、三角形地塊、梯形地塊、扇形地塊。
©《顯微鏡下的大明之絲絹案》官微
©《顯微鏡下的大明之絲絹案》官微
帥家默與摯友豐寶玉一同提告人丁絲絹稅一案。其中,擁有敏銳經商嗅覺的豐寶玉姐姐豐碧玉,提供了諸多幫助。©《顯微鏡下的大明之絲絹案》官微
「妖田」難敵數學奇才
長方形、三角形、梯形、扇形,都有現成的面積公式,易於測量和計算,但如果遇到劇中所說的「妖田」,那就很難辦了。妖田這個詞,現存的明朝數學書籍裡並未出現,元朝《農書》裡倒是有,是指灌溉之後迅速乾涸的農田,與劇中涵義並不相同。編劇可能是從《農書》裡借用了這個詞,也可能是碰巧創造了一個同音但不同義的概念,表示形狀極不規則的多邊形地塊。
古人怎樣測量不規則地塊的面積呢?通常使用「割補之術」:先將地塊補成長方形,再切割成一個個三角形,匯總出所有三角形的面積,再減去所補圖形的面積,即是該地塊的真實面積。在第七集,帥家默與鄧知縣比賽計算同一塊妖田的面積,都不約而同地使用割補之術,而帥家默的心算能力更好,從速度而不是計算方法上擊敗了鄧知縣。有沒有比割補之術更好的方法呢?帥家默隱約記得,小時候曾聽父親帥敦誠講過一種無需割補、直接測量的技術,也就是貫穿本劇的推步聚頂之術,至於技術細節,他實在記不得了。直到第十四集,他突然想通父親當年的算法,還背誦出推步聚頂的口訣:「先牽經緯以衡量,再點原初標步長。田形取頂分別數,再算推步知地方。」
單憑這四句口訣,我們肯定搞不懂推步聚頂究竟是怎麼一回事,然而參照劇中的操作,就能看出端倪。劇中帥家默丈量一塊最難計算的妖田,他先在該妖田的每一個頂點打樁,接著橫平豎直地拉開繩尺,以繩尺左側交匯處為原點,分別測算各個頂點到原點的長寬步數,將這些數字成對排列,交叉計算⋯⋯
田野間的腦力激盪場
曾有觀眾為帥家默的計算過程提出解釋,說推步聚頂運用了微積分。其實,以上測量和計算過程使用的數學原理並非微積分,而是「鞋帶公式」。鞋帶公式是利用坐標計算不規則多邊形面積的法寶,簡單說,在測量地塊之前,先要建立一個平面直角坐標系,分別測量該地塊所有頂點的坐標,再沿著同一個方向(順時針或逆時針)為這些坐標依次編號,列成一張上下排列的數表,再像穿鞋帶一樣,將相鄰坐標的x值和y值交叉相乘,循環相減,將差相加,求得總和,將總和取絕對值,再除以二,即是該地塊的面積。
舉例說, 有一塊不規則五邊形農田,共有五個頂點, 順時針測量, 這些頂點的坐標分別是,4、5,11、12,8、9,5 、5,6 。依據鞋帶公式, 相鄰坐標交叉相乘, 循環相減:3×11-4×5,5×8-11×12,12×5-8×9,9×6-5×5,5×4-6×3 ;得到五個數:13、-92、-12、29、2;五數相加,總和是-60;取絕對值,得60;再除以二, 得30。所以,這塊土地的面積就是三十。如果測量各坐標時用的單位是丈,面積即為三十平方丈,明朝六十平方丈為一畝,這塊地的面積就是半畝。
現代公式,古代演繹
鞋帶公式是德國數學家德雷斯特(Albrecht LudwigFriedrich Meister) 在西元一七六九年提出的。幾十年後,另一位德國數學家高斯給出該公式的證明,並且用矩陣運算予以簡化,所以,這個公式又被稱為「高斯面積公式」。無論是德雷斯特提出鞋帶公式,還是高斯將該公式轉化為矩陣運算,其時間都晚於明朝,所以帥家默不可能未卜先知地使用這個公式。
那麼明朝數學家有沒有發明與鞋帶公式相近的測量術呢?沒有。從開國皇帝朱元璋開始,明朝就格外重視土地清丈,試圖查清全國每一塊農田的真實面積,從而制定出對全國農民都比較均平的賦稅政策。然而在測量技術上,明朝並沒有任何突破,採用的仍然是此前宋朝和更加久遠的漢唐時期的數學知識,只是將算盤給普及了而已。至於劇中呈現的推步聚頂,那是編劇對鞋帶公式的演繹,不是明朝已有的數學。
坦白說,從實際操作角度看,在電腦和全球衛星定位系統出現之前,用鞋帶公式測量面積只能是一種想像,因為它不僅需要建立坐標系,更需要地塊平整、無坡度、無坑窪、無視線阻隔,否則根本測不出各個頂點到坐標原點的真實距離。
****************************************
李開周
專欄作家,古代社會生活史研究者,擅長將生硬歷史以活潑生動方式呈現。出版書籍數十本,著作有《吃一場有趣的宋朝飯局》、《包公哪有那麼黑:你所不知道的包青天》、《千年房市:古人安心成家方案》與《誰說不能從武俠學數學?》等。
****************************************
延伸閱讀:〈【戲說古早】秦檜殺不死?看《滿江紅》功敗垂成!〉https://www.orchina.net/article/3505