平地聚粟:一个数出现在术文里四次
下周三丈六尺,高四尺五寸,问粟几何?答曰一百斛。术文一路乘下来,中间那个「以三十六除之」最扎眼——周长自乘之后凭什么要先除以三十六?这一讲讲的就是它。
原典
今有平地聚粟,下周三丈六尺,高四尺五寸。问:粟几何?
答曰:一百斛。
术曰:置周三丈六尺,自相乘,得一千二百九十六尺,以高四尺五寸,乘之,得五千八百三十二尺,以三十六除之,得一百六十二尺,以斛法一尺六寸二分除之,即得。
白话翻译
平地上堆着一堆粟,底面的周长是三丈六尺,高是四尺五寸。问:这堆粟有多少?
答案是:一百斛。
术文给的算法是:拿三丈六尺自己乘自己,得一千二百九十六尺;拿这个数再乘四尺五寸,得五千八百三十二尺;拿三十六除它,得一百六十二尺;最后拿斛法一尺六寸二分除,就得到答案。
术文里有三个关键换算:一丈是十尺,所以三丈六尺是三十六尺;一寸是十分之一尺,所以四尺五寸是四点五尺;一尺六寸二分是 尺。
示意图
古人的算法
这道题的术文长得罕见,把每一步的中间结果都写了出来。这种写法在《孙子算经》里不多见——通常术文只说做什么,不说得到几。逐句读,能看清古人脑子里那条链。
第一句:「置周三丈六尺,自相乘,得一千二百九十六尺。」
三丈六尺,一丈十尺,所以是三十六尺。三十六自乘:
古人把这个数叫「尺」,它其实是平方尺。他们先把它当作一个面积放着,但紧接着要拿它去乘高,所以它眼下只是底面积的替身——一个等会儿要圆的底面积。
第二句:「以高四尺五寸,乘之,得五千八百三十二尺。」
四尺五寸,一寸是十分之一尺,所以高是四点五尺:
这个数不再是平方尺。三十六自乘是平方,再乘一个长度,成了立方。古人照样写作「尺」,因为这个数只是体积的原料。
第三句:「以三十六除之,得一百六十二尺。」
这是全题最要紧的一句,也最容易被囫囵读过。
为什么偏偏除三十六?因为三十六正是底面周长。这一步实质上是在把圆变成方。
周长三十六尺,在「径一周三」的约定下,直径是十二尺,半径六尺。圆面积取圆周率为三,得 平方尺,恰好是 ——外切正方形缩成十二分之一,剩下的就是圆。
再乘四点五尺的高,得 立方尺,这是同底同高圆柱的体积。除以三得圆锥的体积,。
看到了吗:三十六这个数,一来一回用了两次。第一次是把外切正方形面积换成圆面积,除十二;第二次是圆柱换圆锥,除三。十二乘三就是三十六,所以古人把两步合成一步,只写一个「三十六」。术文里那个孤零零的三十六,实际是「圆周率的约定」加「圆锥的公式」压在一起的一个数。
第四句:「以斛法一尺六寸二分除之,即得。」
一尺六寸二分,就是一尺加六寸加二分。一寸是十分之一尺,二分是十分之二尺——古人用的是十进制小数,所以这个数写作 尺:
除出来正好一百,一个零头都没有。「斛法」是容积与长度的换算标准:一斛粟占多少立方尺。这里的一尺六寸二分,正是本卷第 2 讲讲度量衡时打下的底子。
四步连起来,就是一条完整的换算链:
一百斛。术文说得一字不差。
现代数学视角
这道题的价值不在答案,在它把三个层次的问题叠在了一道题里。
第一层:单位换算。 三丈六尺、四尺五寸、一尺六寸二分,都是复合单位。今天的做法是先全部化成小数——三十六尺、四点五尺、一点六二尺——再一口气算完。古人不是这样,他们把「一丈十尺」「一寸十分之一尺」这些关系记在心里,算到哪一步换到哪一步。数学上等价,思维上不同:今天是先统一再运算,古人是边运算边统一。 前者更省心,后者对熟悉度量衡的人也更不容易串单位。
第二层:一个数里藏着两件事。 把术文翻译成今天的圆锥体积公式,古法相当于
分母上的三十六,一半来自「圆面积是外切正方形的十二分之一」,一半来自「圆锥是同底圆柱的三分之一」。今天把两件事分开写成两个公式,古人把它们压成一个常数。 常数的好处是算得快,坏处是看不出道理——不熟悉古法的人看到「除以三十六」,只会以为是三十六这个数有什么神奇,不知道它是两个约定叠出来的。
第三层:几何模型的抽象。 「平地聚粟」四个字,把一堆不定形的粟,抽象成了一个圆锥:忽略颗粒之间的缝隙,忽略堆顶不会是绝对的尖,忽略底边略有起伏,抓住「圆底、尖顶、均摊」这个主要特征。把现实里的东西换成一个算得出来的形状,这就是数学建模最初的那一步。 今天的学生学三视图、学「求不规则物体的体积」,做的是同一步工作,工具更精细,思路一模一样。
顺带一个测量误差的问题。改用今天的圆周率重算:半径 尺,圆锥体积约等于 立方尺,换成斛约等于 斛。古人给一百斛,高估了百分之四点七。一堆堆在地上的粮,底周长和高都是拿绳子量的,百分之五完全在测量误差之内,工程上无所谓。
高中课本关联
圆锥的体积:这道题就是公式 的一次古代演算。高中生会算这个公式,但值得知道:公式是结果,古人给的是从结果倒推回去的完整算法。 课本问「已知底面半径和高,求体积」,古人问「量得出周长和高,怎么算出多少斛」——同一个公式,两头对望。
立体几何里的「化圆为方」:卷中第 21 讲讲「圆田求积」,第 26 讲讲把圆转成方,跟这道题是同一族算法。用正方形逼近圆,是中国古算处理曲线图形的通用手法;今天对应的思路是极限与微积分里的「以直代曲」。
近似与误差:圆周率取三带来的百分之五误差,是近似计算的好例子。这里可以问的不是「保留几位有效数字」,而是另一个问题:近似到什么程度够用? 量一堆粮,百分之五不耽误事;算一条轨道,百分之五就是事故。工程上的判断标准从来跟用途绑在一起。
数列:如果改成「往上再垒第二层」——层层叠上去,每层都比下一层小一圈,总高度不变——粮堆就不只是一个圆锥,而是一串相似圆锥之和,这会变成一道数列求和题。堆粮的真实形状,本来就更接近这个模型。
思考与拓展
-
换一组数:若下周五丈四尺,高五尺,仍按古法,这堆粟多少斛?(提示:五十四尺自乘得二千九百一十六,乘五得一万四千五百八十;除以三十六是四百零五,四百零五除以一点六二是多少?)
-
反着问:若有粟二百斛,堆在地下周三十六尺,问这堆多高?(提示:二百斛乘一点六二是三百二十四立方尺,再倒着推回去。)
-
折算成圆柱:同样底周三十六尺、高四尺五寸,若堆成圆柱,是多少斛?圆锥只有它的几分之几?
-
改圆周率:改用今天的圆周率重算本题,答案是多少斛?与一百斛差多少?差出来的百分之几,是古人算错了,还是取值不同?
一句话总结
一堆粟一百斛——术文里的三十六不是凭空来的,它把「圆化方」和「圆锥是三份圆柱」两步合成了一步;这是古人省算筹的手法,也是后人读古算最容易看漏的一处。