数学史概述
《梦溪笔谈》
《梦溪笔谈》,或称《笔谈》,是中国北宋沈括所作的笔记体著作,原有 26 卷,分 17 门,题材广泛,记录作者所见所闻及研究心得,当中有三分一以上的内容,叙述有关科学技术的各方面先进成就,涉及天文、数学、物理、地理、医药和乐律等各范畴,使本书成为中国科技史研究的重要著作和珍贵资料。
梦溪笔谈卷十八技艺
《梦溪笔谈》中卷十八技艺中研究了“隙积术”和“会圆术”。隙积术是一种计算有空隙物体的体积的技术,计算在一种特定堆栈法下,酒瓮的总数目:以长方形为底,平铺一层酒瓮,再层层上堆,依次缩小每层的堆栈数,使成为类以跺的平头截体 。隙积术属于高阶等差级数求和问题,是求解垛积问题,具体提到累棋、层坛及酒家积罂等的垛积问题。会圆术是已知弓形的圆径和矢高求弧长的问题,书中推导得求弓形弧长的近似公式。
算术求积尺之法,如刍萌、刍童、方池、冥谷、堑堵、鳖臑、圆锥、阳马之类,物形备矣,独未有隙积一术,古法:凡算方积之物,有立方,谓六幂皆方者。其法再自乘则得之。有堑堵,谓如土墙者,两边杀,两头齐。其法并上下广,折半以为之广以直高乘之,以直高以股,以上广减下广,馀者半之为勾。勾股求弦,以为斜高。有刍童,谓如覆斗者,四面皆杀。其法倍上长加入下长,以上广乘之;倍下长加入上长,以下广乘之;并二位,以高乘之,六而一。隙积者,谓积之有隙者,如累棋、层坛及洒家积罂之类。虽似覆斗,四面皆杀,缘有刻缺及虚隙之处,用刍童法求之,常失于数少。馀思而得之,用争童法为上位;下位别列:下广以上广减之,馀者以高乘之,六而一,并入上位。假令积罂:最上行纵横各二罂,最下行各十二罂,行行相次。先以上二行相次,率至十二,当十一行也。以刍童法求之,倍上行长得四,并入下长得十六,以上广乘之,得之三十二;又倍下行长得二十四,并入上长,得二十六,以下广乘之,得三百一十二;并二位得三百四十四,以高乘之,得三千七百八十四。重列下广十二,以上广减之,馀十,以高乘之,得一百一十,并入上位,得三千八百九十四;六而一,得六百四十九,此为罂数也。刍童求见实方之积,隙积求见合角不尽,益出羡积也。履亩之法,方圆曲直尽矣,未有会圆之术。凡圆田,既能拆之,须使会之复圆。古法惟以中破圆法拆之,其失有及三倍者。馀别为拆会之术,置圆田,径半之以为弦,又以半径减去所割数,馀者为股;各自乘,以股除弦,馀者开方除为勾,倍之为割田之直径。以所割之数自乘倍之,又以圆径除所得,加入直径,为割田之弧。再割亦如之,减去已割之弧,则再割之弧也。假令有圆田,径十步,欲割二步。以半径为弦,五步自乘得二十五;又以半径减去所割二步,馀三步为股,自乘得九;用减弦外,有十六,开平方,除得四步为勾,倍之为所割直径。以所割之数二步自乘为四,倍之得为八,退上一位为四尺,以圆径除。今圆径十,已足盈数,无可除。只用四尺加入直径,为所割之孤,凡得圆径八步四尺也。再割亦依此法。如圆径二十步求弧数,则当折半,乃所谓以圆径除之也。此二类皆造微之术,古书所不到者,漫志于此。
在算术中计算体积和尺寸的方法,例如刍萌(底面为矩形的楔形体)、刍童(上下底均为矩形的棱台)、方池(方形水池)、冥谷(倒方锥形的地窖)、堑堵(底面为直角三角形的直棱柱)、鳖臑(四个面皆为直角三角形的四面体)、圆锥、阳马(底面为矩形且有一侧棱垂直于底面的四角锥)等,物体的形状分类已经很完备了,唯独缺少一种叫“隙积”(有空隙的堆积物体)的计算方法。
古代的方法是:凡是计算方形体积的物体,有一种叫“立方”,指的是六个面都是正方形的立体。它的算法是将边长连续自乘两次(即边长的三次方)即可得出。有一种叫“堑堵”,就像是夯土墙一样,两边倾斜缩小,两头平齐。它的算法是将上下底的宽度相加,折半作为平均宽度,乘以直高;(求斜高时)再以直高作为“勾”,用下底宽减去上底宽的差作为“股”,运用勾股定理求出弦,以此作为斜面的高。有一种叫“刍童”,指的是像倒放的量器“斗”一样的物体,四面都向上倾斜缩小。它的算法是:将上底的长乘 2 加上下底的长,再乘以上底的宽;将下底的长乘 2 加上上底的长,再乘以下底的宽;把这两个数值相加,乘以高,然后除以 6(注:原文“六而二”系古书传抄错误,实际运算和古法均为“六而一”,即除以 6)。
所谓“隙积”,是指堆积起来但中间有空隙的离散物体,比如堆叠的棋子、层层垒起的祭坛以及酒家堆放的酒坛等。这类物体虽然看起来像倒置的斗(刍童),四面倾斜缩小,但因为它们是由个体堆成的,边缘有阶梯状的缺口且内部有虚位空隙,如果直接用计算连续体积的“刍童法”来求,得出的数量往往比实际偏少。我反复思考后得出了新的算法:把用“刍童法”算出的结果作为“上位”(第一部分);在“下位”(第二部分)另外列式:用下层底面的宽度减去上层顶面的宽度,余数乘以高,再除以6,最后将这个结果并入刚才的“上位”之中。
丈量土地的方法,对于方形、圆形、弯曲、笔直的形状都已经囊括尽了,但唯独没有“会圆”的算法(即已知圆的弦长和矢高,求弧长)。凡是圆形的田地,既然能将它分割开,也就必须能使它重新合算为原本的圆弧。古法只是用从中间切开圆的简单折算方法,其误差有时能达到实际数值的三倍。我另外创立了“割会”的方法:假设有一块圆田,把直径的一半(即半径)作为“弦”(直角三角形的斜边),用半径减去被割去部分的宽度(即矢高),剩下的部分作为“股”;将它们各自平方,用弦的平方减去股的平方(运用勾股定理),将剩下的数字开平方得出“勾”(即半弦长),把它乘 2 就是被割下田地的直线弦长。接着,把割下部分的宽度(矢高)自乘然后再乘 2,除以圆的直径,将得到的结果加上刚才算出的直线弦长,就是割下田地的真实弧长。如果还要在剩下的圆里再割,也是用同样的方法,用算出的新弧长减去已经割去部分的弧长,就是再次割出的弧长。
假如有一块圆田,直径 10 步,想要割下宽度(矢高)为 2 步的一块田。以半径 5 步为“弦”,自乘得到 25;又用半径减去割下的 2 步,剩下 3 步作为“股”,自乘得到 9;用弦的平方减去它(25-9),剩下 16,开平方,得到 4 步作为“勾”,乘 2 得到 8 步,这就是被割下部分的直线弦长。以割下的宽度 2 步自乘得到 4,乘 2 得到 8,因为要除以直径 10,相当于向后退一位,变成 4 尺(注:宋代 1 步 =5 尺,8 除以 10 等于 0.8 步,恰好等于 4 尺),这就是用圆的直径来除的意思。现在圆的直径是 10,刚好满足十进制计算,不需要再复杂相除,直接用这 4 尺加上直线弦长(8 步),就得出了割下部分的弧长,总共为 8 步 4 尺。再次切割也依照此法。如果圆的直径是 20 步要求弧长,那么得出的第二部分数字就应当折半,这就是所谓“除以圆的直径”的普遍规则。
这两类算法都是极其精妙高深的,是古代数学书中没有记载的,我在这里将其漫笔记录下来。
数学原理解析与西方现代数学接轨
沈括在《梦溪笔谈》中记载的“隙积术”和“会圆术”,是中国古代数学(特别是宋元数学高峰)的重大突破,它们分别代表了高阶等差数列求和以及微积分思想中的高次近似展开。
隙积术与高阶等差数列求和:在西方数学中,直到 17 世纪(如詹姆斯·格雷果里、牛顿等人),才系统性地掌握了高阶等差数列(有限差分)的求和公式。而沈括在 11 世纪便给出了极为精准的离散级数求和解法。
传统连续体体积(刍童公式):古法计算连续的平截头四角锥(Frustum)的体积公式为:
V = \frac{h}{6}[(2a + a')b + (2a' + a)b']
其中 a, b 为上底长宽;a', b' 为下底长宽;h 为高。这个公式与现代微积分得出的台体体积公式
V = \frac{h}{3}(S_{top} + S_{bottom} + \sqrt{S_{top}S_{bottom}})
在代数上是完全等价的。
离散叠加求和(隙积术):当堆放酒坛时,物体是离散的,形成了一个二阶等差数列求和的问题:
\sum_{k=0}^{n-1} (a+k)(b+k)
沈括敏锐地发现,直接用连续公式算会有误差(“常失于数少”)。他引入了一个补偿项(羡积):\frac{n}{6}(b' - b)。他的最终公式相当于:
S = \frac{n}{6} [(2a + a')b + (2a' + a)b'] + \frac{n}{6}(b' - b)
将沈括的例子代入现代求和公式校验:
\sum_{k=2}^{12} k^2 = 2^2 + 3^2 + ... + 12^2 = \frac{12 \times 13 \times 25}{6} - 1 = 649
沈括的公式得出的正是 649,这表明他准确找出了离散积分与连续积分之间的转换差值(即 Euler-Maclaurin 公式的一种早期特例表现)。
会圆术与泰勒展开的几何近似:已知圆的直径 D,割下的矢高 v(Sagitta),求对应的弧长 s。
沈括的会圆公式:先用勾股定理求出弦长
c = 2\sqrt{\left(\frac{D}{2}\right)^2 - \left(\frac{D}{2} - v\right)^2}
然后得出弧长近似公式:
s \approx c + \frac{2v^2}{D}
与现代微积分的联系:如果用现代数学的方法来解,弧长的精确解涉及反三角函数:s = D \arcsin\left(\dfrac{c}{D}\right)。在微积分中,我们将反三角函数进行泰勒展开(Taylor Expansion)或麦克劳林级数(Maclaurin Series)展开,取其前几项。根据几何关系近似,弦长 c 与弧长 s 的差在矢高 v 较小时,其第一阶非零修正项恰好与沈括给出的 \dfrac{2v^2}{D} 高度吻合。这相当于沈括在没有任何微积分工具的情况下,利用几何与代数直觉,找到了弧长的二次多项式逼近(抛物线逼近)。这种通过增加修正项来逼近曲线真实长度的思想,比欧洲类似近似公式的出现早了数百年。