九章格数学 PhiloMath · 数学家的故事绘本 · 第三辑

朱世杰 · 四元玉鉴

第 23 册 · 数学家的故事 · 第三辑 · 1249—1314 · 中国元 · 明线:天元与四元术 · 垛积 · 招差 暗线:没有符号的代数,靠位置记幂次
明线 · 四元术 · 垛积 · 招差暗线 · 没有符号的代数,靠位置记幂次1249—1314 · 中国元全龄通识 · 三层可读
题解这一册怎么读p.2

朱世杰,字汉卿,号松庭,燕山(今北京一带)人。关于他,史书里没有传——没有籍贯考、没有师承记、没有官职录。今人知道的一切,几乎全来自他自己两本书卷首的几篇序。

序里留下两句要紧的话。一句说他「周游湖海二十余年」,即以数学游学各地,靠授徒为生;一句说他讲学时「踵门而学者云集」,上门求学的人多得挤不开。这两句合起来,就是一个以教书为业、走遍南北的布衣算学家。

他留下两本书。《算学启蒙》(1299)三卷二十门二百五十九问,从九九歌诀一路教到天元术,是一本从零开始的教科书;《四元玉鉴》(1303)三卷二十四门二百八十八问,讲四元术、垛积与招差,是他一生的顶点。

本册分五幕:第一幕讲「一个未知数怎么写在纸上」(p.6—p.12);第二幕讲从一元到四元(p.13—p.19);第三幕讲数一堆东西——垛积(p.20—p.26);第四幕讲差分表——招差(p.27—p.33);第五幕讲这本书的身后(p.34—p.40)。暗线一句:没有符号的代数,靠位置记幂次。

三层读法照旧:故事层无需预备知识;数学层用到平方、开方与多项式乘法(p.7—p.9、p.14—p.16、p.21—p.23、p.28—p.30);注疏层给出卷次、门名与版本,逐页可查。

引子一座山与一片湖海p.3

元代的燕山,是旧金的中都、新元的都城。城里有官学、有书院、有算学,也有大量替衙门算钱粮、替商号算账目的识字人。算学在这座城里不是清高的东西,是一门手艺。

朱世杰从这里出发,往南往北走了二十多年。序里那句「周游湖海」,用今天的话说,是带着一本书和一肚子题,从一个城走到另一个城,收学生、讲算法、换盘缠。这种身份在元代有个名字,叫「游士」。

游士的学问有一个特点:必须能当场讲清、当场演算、当场让人学会。讲不清的,学生下一站就走了;算不出的,主家下次不请了。这种压力塑造了他的写法——他的书里题多、步骤细、口诀密,几乎每一门都从最笨的算法开始讲起。

也正因如此,他的两本书分工极清楚:一本给初学的人,一本给已经会算的人。前者是门槛,后者是屋顶。

引子一薄一厚的两本书p.4

《算学启蒙》成于 1299 年。全书三卷二十门,从「九九八十一」的歌诀开始,经过乘除、开方、面积体积、比例、堆垛,一直讲到天元术。这是一条完整的坡道:一个只认得字、不会算的人,跟着做完二百五十九道题,就能列方程。

《四元玉鉴》成于 1303 年,四年之后。三卷二十四门二百八十八问,开篇就是「四元细草」,直接上四个未知数。这两本书之间的落差极大——不是从浅到深,是从地到天。

为什么四年能跨这么远?因为他把二十年的游学所得,分成两份装:能教人的放前一本,自己想通的放后一本。教科书的写法是「把路修平」,专著的写法是「把路走到头」。同一个人,两种笔法。

《四元玉鉴》这个书名也有讲究。「玉鉴」是玉制的镜子,取「照见」之意;「四元」指天元、地元、人元、物元四个未知数。用四面镜子照一道题——这是他对这套方法的自我形容。

引子一张方阵,四个方向p.5

先看这张方阵。它是本册的枢纽,也是全书最难解释、又最容易看懂的一样东西。

把纸画成方格。正中一格写常数项,四个方向各管一个未知数:天元、地元、人元、物元。从中心往外走一格,幂次升一次;走两格,升两次。同一个方向上的一串格子,就是同一个未知数的各次幂。

换句话说:幂次不写在符号上,写在位置上。今天写 x2y,靠右上角一个小数字和两个字母并排;他那里没有字母、没有上标,只有一张方格纸上离中心两格、向东一格的那么一个空位。

这套办法的代价是:一张纸最多管四个未知数——因为纸只有四方。四个以上,位置就不够用了。这是四元术的天花板,也是它后来失传的原因之一。第一幕先从一个未知数讲起。

故事 · 第一幕「立天元一为……」p.6

十三世纪的中国算书里,几乎每一道列方程的题都从一个句子开头:「立天元一为某某。」

这句话的意思是:现在假定所求的那个量为未知,把它记作「天元」。「立」是设立,「一」是一个,「为」是作为。合起来是一句宣告——不是计算,是给一个还没算出来的东西先起个名字。

它的位置在整道题的最前面,甚至在写已知条件之前。这个次序很有意思:先有名字,再有条件。今天写「设所求为 x」,也是这个次序。八百年过去,这一步没变。

但名字只是名字,真正的问题是:这个名字写在纸上,长什么样?没有字母,没有上标,没有等号——「x2 加三倍的 x」这一串,要用什么形式落笔?

答案不是画一个符号,而是摆一个位置。下一面开始讲这件事。

数学 · 第一幕一层一格,越上越高p.7

天元术的写法和今天完全不同:它把一个多项式写成一叠横条,从下往上排,每一层管一个幂次。

以 2x3−3x2+4x−5 为例。它在一张纸上占四层:

最下一层记 −5,这一层叫「太」,即常数项。上一层记 4,这一层旁注一个「元」字,因为它管 x 的一次方。再上一层记 −3,管 x2。最上一层记 2,管 x3。

注意那个「元」字。它只在一层出现一次,标出「一次项在这里」,其余各层靠距离推算:往上走一格,幂次加一。所以整叠条子只需要一个标记,就能读懂全部幂次。

这套写法有个好处:乘一个 x,就是把整叠条子往上挪一格;除以 x,往下挪一格。多项式乘法变成「挪位置 + 逐层相加」,两步都能用手做,不需要记任何公式。

数学 · 第一幕把一句话摆成两层p.8

列方程的全过程,可以只用一道题看明白。原题是这样的:「今有直田,积八百六十四步,只云长阔共六十步,问长阔各几何。」

第一步,立天元。「立天元一为长。」——设长为 x。

第二步,把另一量用天元表示。长阔共六十,故阔为 60−x。在这一步,古人不用「代数式」这个词,只说「以减六十,余为阔」。

第三步,按题意写积。x(60−x)=864。乘开:60x−x2=864。

第四步,归于一边。把右边搬到左边,使一边为零:「x2−60x+864=0」。这一步古书叫「开方式」——不是「方程」,而是「可以开方的一个式子」。

答数:x=36 或 24。取长为 36,阔为 24。验:36×24=864,36+24=60。两道条件都对。

四步里最要紧的是第四步。把一切搬到一边、令另一边为零,这一步把「两个式子相等」变成「一个式子等于零」,从此只需要处理一个对象。今天的「移项归零」写法,源头就在这里。

数学 · 第一幕开方:一层一层剥p.9

式子列出来了,还得把根算出来。古法叫「开方」,宋元算书里的做法是「增乘开方法」——一层一层往下剥。

拿刚才的 x2−60x+864=0 试。先估十位:三十。代入得 900−1800+864=−36,小于零,说明根比三十大。四十:1600−2400+864=64,大于零,说明根在三十与四十之间。

再估个位。逐个试:三十一得 961−1860+864=−35;三十五得 1225−2100+864=−11;三十六得 1296−2160+864=0。正好为零,根是三十六。

这套「估值—代入—修正」的循环,和今天的竖式开方是同一件事,只是古人把它写成一列竖排的筹式,每一步减掉一层,剥到最后一层只剩一个数,那个数就是根。「增乘」二字,指每一步都在乘一个「从」数(即估出的那一位)。

开不尽怎么办?古人另有办法:不写小数,写「不尽」。比如 x2+5x=100,正根是 (−5+√425)/2≈7.81,古书会记作「七步八分有奇」——承认它开不尽,给出一个够用的近似,然后收笔。这不是偷懒,是对「答案要到什么精度」这件事有清醒的判断。

暗线 · 第一幕符号是纸上的事,位置是手上的事p.10

为什么中国算学家宁可摆位置,也不发明符号?这个问题看似已经有答案,其实还差一半。

上一个答案关于「读者」:符号对算账的人是门槛。这一册要补上第二个答案,关于手。

宋元算学家做运算,用的不是笔,是筹——一根根小竹棍摆在案上或纸上。摆筹这件事本身就是「用位置表数」:一根筹在个位是 1,挪到十位就是 10。位置表数,是他们从小学会的第一个动作。既然如此,位置表幂次就是顺水推舟:反正手已经在挪了。

而符号是另一路。写 x2,靠的是把一个小数字抬到右上角——这是笔的动作,不是手的动作。要用这套办法,先得有一张好纸、一支好笔、一种对「上标」的共识。这三样在十三世纪的中国都不缺,但都不在算学家的案头。

所以这不是聪明与否的差别,是工具路径的差别。走位置这条路的,运算快、上手快、但装不下太多未知数;走符号那条路的,起手慢、但可以无限延长。两条路各有各的尽头。

交汇 · 第一幕一种记法就是一种语法p.11

把上一面的话推到底,会得到一个不太直观的结论:一个记法系统,就是一种语法。

「2x3−3x2+4x−5」这一串,之所以能读,是因为有两条规则:字母表未知量,上标表幂次,加减号表连接。规则一改,这串就散架。它不是一个「东西」,是一句话。

天元式的四层横条也一样:位置表幂次,一个「元」字定基准,层间空白表「这一层没有」。规则同样严格,只是规则写在版面上,不写在字里。

两种语法的差别,可以一句话说清:字母记号是一维的,可以向左向右无限延长;位置记号是二维的,受纸的四边限制。一维可以写一百个未知数,二维最多写四个。

这就解释了本册后半的一切:为什么四元术止于四元,为什么它会失传,为什么后来的数学走回了符号那条路。不是位置记法不好,是它的版面用完了。

收束 · 第一幕这一幕在讲什么p.12

第一幕讲起点:一个还没算出来的量,怎样先有一个名字、再有一个位置。

起句。「立天元一为某某」——先起名,后列条件。

记法。一叠横条,最下为常数(「太」),上一层标一个「元」字;往上走一格,幂次加一。

列式。立元、表示、写积、归零,四步得开方式 x2−60x+864=0。

求根。增乘开方,估值、代入、剥层,得 36;开不尽则记「有奇」。

暗线。符号是笔的动作,位置是手的动作;位置装得下四个未知数,装不下第五个。

数学

天元式:把 2x3−3x2+4x−5 写成四层,自下而上为 −5|4|−3|2,第二层标「元」。

直田题:x(60−x)=864 ⟹ x2−60x+864=0 ⟹ x=36,阔 24。

验:36×24=864;36+24=60。

故事 · 第二幕四个名字p.13

天元术管一个未知数。一个问题里有两个、三个、四个未知数,怎么办?

朱世杰的答案是:给它们各起一个名字,各占一个方向。天元、地元、人元、物元——四元。这四个名字不是随便凑的:「天、地、人」是古书里现成的三才,「物」补上第四,凑成「万物」。一套宇宙论的名目,被借来当四个变量的标签。

《四元玉鉴》开篇就是四道示范题,编者称之为「四元细草」——细草是「详细演算过程」的意思。第一道叫「一气混元」,题面极短:「今有黄方乘直积得二十四步,只云股弦和九步,问勾几何。」

短到几乎看不懂。但把它翻成今天的语言,就是三个未知数、三个条件的方程组——一道真正的三元题,藏在一句二十九个字的古文里。这一册第三面会把它彻底拆开。

先要弄清的是:四个名字摆在纸上,究竟怎么摆。

数学 · 第二幕一张方格纸就是坐标系p.14

四元术的全部机关,可以一句话说完:把一张方格纸当成坐标系,格子的坐标就是各项的幂次。

中心一格写常数项。向东走一格,x 的幂次加一;向西走一格,减一。向北走一格,y 的幂次加一;向南走一格,减一。斜着走,两个幂次同时变。

于是每个格子有一个「坐标」,这个坐标就是一项的幂次对;格子里的数,就是这一项的系数。整个多项式不是写出来的,是「占地方」占出来的。

举一个二元的例子:x2y+3xy−2y+5。五个项,五个格子:5 在中心;−2 在中心正北一格(y 的一次);3 在东北斜一格(xy);1 在再往东两格、往北一格的交叉处(x2y)。

这就是为什么它装不下第五个未知数:一张纸只有四个方向,第五个元无方向可去。不是算法不够,是版面不够。

数学 · 第二幕互隐通分:一次消掉一个p.15

一个方程里有两个未知数,解不出来;要解,必须先把它变成只有一个未知数的方程。这个「变」的过程,朱世杰叫「互隐通分,剔而消之」——两句都是行话,意思是:让一个元在两式之间隐去,剩下的式子通分对齐,再剃掉一层。

最简单的做法是直接相减。看这两式:

x2+y=7 与 x+y=5。

两式都含一个 y,一减就没了:x2−x=2,即 x2−x−2=0,得 x=2 或 −1。取 x=2,代回第二式得 y=3。验:4+3=7,2+3=5。都对。

难处在于:两式里 y 的次数往往不一样。这时不能直接减,得先乘一个因子把它对齐。比如一式含 y2、二式含 y,就把二式乘一个 y,让两边都出现 y2,再相减——一次减掉一层,剩下的式子次数低了一级。反复减,直到 y 彻底消失。

四个元也是这样,只是要消三次:先消物元,再消人元,再消地元,最后剩一个天元的一元高次式。这就是「四元术」的全貌——一条把四个未知数逐个剃光的流水线。

数学 · 第二幕一气混元:二十七个字的三元题p.16

把这道题拆开。「黄方乘直积得二十四步,只云股弦和九步,问勾几何。」

设勾 a、股 b、弦 c。「黄方」是勾股形内切圆的直径,等于 a+b−c;「直积」是勾股相乘 ab。两条条件写成式子:

(a+b−c)·ab=24, b+c=9。再加上勾股关系 a2+b2=c2。

消元。由 b+c=9 知 c−b 与 b 同由 b 定;而勾股关系可写成 a2=(c−b)(c+b)=9(c−b)。令黄方为 k,则 c−b=a−k,故 k=a−a2/9。

再把 b 用 a 表示:b=(9−(a−k))/2=(81−a2)/18。代入 k·ab=24:

a2(81−a2)(9−a)=3888,去括号得开方式 a5−9a4−81a3+729a2−3888=0。

五次。开之得 a=3(代回验:243−729−2187+6561−3888=0)。于是 b=4,c=5。验题:黄方 3+4−5=2,直积 12,相乘 24;股弦和 9。全对。

二十七个字,消出一元五次式,答案是最小的那组勾股数。这道题是全书的第一道,也是全书的名片。

交汇 · 第二幕版面用完了p.17

四元术为什么停在四元?这个问题有两层答案,一层是技术的,一层是处境的。

技术的:一张纸有上下左右四方,每个方向对应一个未知数,于是最多四元。要五元,得再找一个方向——纸是平的,没有第五个方向。除非把纸折起来,或者叠成两层,而那就不是当时能操作的筹式了。

处境的:四元已经够用。宋元算学遇到的问题——田亩、赋役、营建、堆垛、测量——最多牵涉三四个量。为一个用不上的第五元去改造整套记法,不划算。

这两个答案放在一起,正好说明了本册的暗线:一套记法的形状,决定了它能装多少东西。位置记法的形状是二维的,所以它的容量是四;字母记法的形状是一维的,所以它可以一直往后排——今天的方程里有几十个未知数,靠的不是更聪明的脑袋,是更长的纸。

这不是说古人输了。一维记法写起来慢、读起来要靠约定;二维记法一眼就能看出各项的次数分布,看整式的「形状」比看一列符号快得多。两种记法各有所长,只是其中一个能长大,另一个长不大。

暗线 · 第二幕一本书合上之后p.18

《四元玉鉴》成书于 1303 年。此后一百多年,它还有读者;再往后,读者就没了。

明代最畅销的算书是《算法统宗》(1592),作者程大位。这本书把日用算题编成歌诀,销路极好,但天元术的细草被整段略去——因为编者看不懂,也因为买家不需要。同时代的顾应祥给《测圆海镜》作「分类释术」,干脆把「立天元一」那部分删掉,只留题目与答数。他不是删错了,他是诚实地承认:这一层我读不进去。

于是出现一个奇特的现象:书在,题在,答案在,方法没了。四元术成了一门「有答案没解法」的学问。清代学者后来把这段叫「绝学」。

恢复要到十九世纪。李锐、沈钦裴先后钻研,罗士琳在 1836 年完成《四元玉鉴细草》,把二百八十八问逐一补出演算过程。他靠的不是新发现的抄本,而是拿仅存的题目和答案反推方法——像看着一座空屋的梁柱痕迹,重新把屋顶架起来。

这就带出一个不太好受的结论:一门学问能不能传下去,不取决于它有多深,取决于有没有人能把它的「怎么算」复述一遍。

收束 · 第二幕这一幕在讲什么p.19

第二幕讲扩充:从一个未知数到四个未知数,靠的不是新算法,是新版面。

四元。天、地、人、物,各据一方;常数居中。

布算。格子的坐标就是幂次对;系数写在格子里,幂次靠距离。

消元。互隐通分、剔而消之:对齐次数,相减降层,逐个剃光。

一气混元。二十七个字的三元题,消出五次开方式,勾三步。

天花板。四方之限,故止于四元;明代失传,清代反推复原。

数学

布算:x2y+3xy−2y+5 占四格,坐标为 (2,1),(1,1),(0,1),(0,0)。

消元小例:x2+y=7、x+y=5 ⟹ x2−x−2=0 ⟹ (2,3)。

一气混元:(a+b−c)ab=24、b+c=9、a2+b2=c2 ⟹ a5−9a4−81a3+729a2−3888=0 ⟹ a=3。

故事 · 第三幕草垛、果垛、箭捆p.20

元代北方有一种常见的活计,叫「垛」。草要垛起来防雨,果子要码起来待售,箭要捆成束入库,粮要囤成堆点数。垛的形状有讲究:堆得太陡会塌,太缓占地方。

于是出现一类极实际的问题:给定底层的数目,这一垛一共有多少?

不许一个一个数——数起来太慢,而且垛里面数不到。必须从底层数目直接算出总数。这就是垛积术。

它看上去是一道算术题,实际上是一件更微妙的事:把「一层一层」的加法,压缩成「一步到位」的乘法。一垛十层,逐层加要加十次;有了公式,乘三次就完。

这类题在《四元玉鉴》里占了好几门:「茭草形段」讲草垛,「果垛叠藏」讲果垛,还有讲箭捆的、讲圆坛的。一个以「四元」闻名的人,花了大量篇幅讲堆东西——这本身就很说明他的兴趣在哪里。

数学 · 第三幕两种最素的垛p.21

先看两种最简单的垛。

一、茭草垛。草束一层层往上码,每层比下一层少一束,最上一层一束。第 k 层(自上往下数)有 k 束,共 n 层。总数是

1+2+…+n=n(n+1)/2。

十层得 55 束;六层得 21 束。这个公式中学生都认识,古书叫「茭草垛」,是全部垛积的起点。

二、三角垛。果子码成三角形:第 k 层排成一个边长 k 的正三角,共 k(k+1)/2 枚。总 n 层为

Σk(k+1)/2=n(n+1)(n+2)/6。

十层逐层是 1, 3, 6, 10, 15, 21, 28, 36, 45, 55,相加得 220;用公式:10×11×12/6=220。六层:6×7×8/6=56。

这里藏着一个很要紧的对应。茭草垛十层的总数是 55;而三角垛第十层恰好也是 55 枚。这不是巧合——三角垛的第 n 层,正是茭草垛前 n 层的总数。

换成一句话说:把茭草垛每一层的累计值,当成另一垛的一层,就得到三角垛。这个动作,古书里叫「垛上垛」。第三幕后面所有的公式,都是这一招的反复使用。

数学 · 第三幕方垛与岚峰垛p.22

三、四角垛。第 k 层排成边长 k 的正方形,共 k2 枚。总数为平方和:

Σk2=n(n+1)(2n+1)/6。十层:10×11×21/6=385。

四、岚峰垛。第 k 层为 k(k+1)(k+2)/6 枚——这是四面都成三角的堆法,从上往下看是尖顶。总数为

Σk(k+1)(k+2)/6=n(n+1)(n+2)(n+3)/24。十层:10×11×12×13/24=715。

十层逐层是 1, 4, 10, 20, 35, 56, 84, 120, 165, 220,相加正好 715。看出对应了没有?最后一层的 220,正是三角垛十层的总数。又是同一个动作:把三角垛的累计值当一层,再垛上一次。

把四个公式并排,规律就露出来了:

n(n+1)/2;n(n+1)(n+2)/6;n(n+1)(n+2)(n+3)/24。

后一个总比前一个多乘一个因子、多除一个数:先 ×(n+2)÷3,再 ×(n+3)÷4。往上叠一层,就多乘一项、多除一级。这条规律背后是一张数表,下一面讲。

四角垛的式子长得不一样(2n+1 而不是 (n+2)),因为它堆的是「方」不是「三角」,不在这一条链上。它可以由三角垛拼出来:k2=2·k(k−1)/2+k,即一个正方形点阵 = 两个三角点阵 + 一条线。

数学 · 第三幕古法七乘方图p.23

《四元玉鉴》卷首有一张图,叫「古法七乘方图」。图上是一列一列的数,排成三角形:

最上一行一个 1;第二行 1、1;第三行 1、2、1;第四行 1、3、3、1;第五行 1、4、6、4、1;往下依次是 1、5、10、10、5、1;1、6、15、20、15、6、1;1、7、21、35、35、21、7、1。

这就是今天说的二项式系数表。西方叫帕斯卡三角,中国叫贾宪三角或杨辉三角。朱世杰在书里明写「古法」二字——他知道这不是自己的发明,所以标了出处。这一点常被忽略:一个能开四次方、五次方的人,肯在一张图上注明「这是老法子」。

这张图和垛积的关系,藏在除法里。三角垛公式 n(n+1)(n+2)/6 的系数 1/6,正是图上第三行(1、3、3、1)之和除以 3!;岚峰垛的 1/24,是第四行之和 8 除以 4! 再折出的结果。垛积公式的分母,一个个都从这张表里来。

更直接的用法是「乘方开方」。用这张表,可以把 (a+b)4 一眼展开成 a4+4a3b+6a2b2+4ab3+b4;反过来,开四次方时也能照着表一层层剥。一张表,两用。

暗线 · 第三幕题是从路上来的p.24

垛积术不是坐在书房里想出来的。它的问题来自三个地方:驿站的草料场、码头的果行、兵营的箭库。

这三处有个共同点:东西堆得整齐,但不好数。草垛外面看得见,里面数不到;果行要按堆论价,不能拆开数;箭捆按束入库,束又按捆码放。谁能在不拆垛的情况下报出总数,谁就有用。

朱世杰走了二十多年,从燕山到江南,这类问题他一定见过无数次。他的书里题面写得极土——「今有茭草一垛」「今有果子一垛」——不用一个雅词。这不是文笔差,是他把问话的人原样写进了书里。

这一点与他讲四元术时的笔法形成对照:讲四元,他用「立天元一」「互隐通分」这类行话,读者是会算的人;讲垛积,他用「底阔几束」「高三层」这类市井话,读者是管事的人。同一个人,两副嗓子。

这也解释了为什么《四元玉鉴》里垛积占的篇幅那么大:四元术是给后人看的,垛积术是给当时人用的。

交汇 · 第三幕阶梯与曲线之间p.25

把四角垛的公式和一件后来的事放在一起看,会看见一条很长的线。

四角垛十层的总数是 385。而如果把 x2 从 0 到 10 连续地积起来,得到 1000/3≈333.33。两个数差 51.67。

差在哪里?垛是一格一格的,曲线是一寸一寸的。垛积算的是十个竖条的面积之和,每根竖条宽一格、高 k2,边缘是锯齿;积分算的是曲线下的光滑面积,锯齿被削平了。锯齿多出来的那一块,正是那 51.67。

这条差别在数学上有个名字:离散与连续。宋元算学家站在离散这一边——他们数的是实在的东西,一个一个,整整齐齐;三百年后的欧洲人站在连续那一边——他们量的是可以无限细分的东西。

但两边的公式长得几乎一样:Σk2 的主项是 n3/3,∫x2dx 是 x3/3。那个 1/3 是同一个 1/3。这不是巧合:把格子越分越细,垛积公式的「锯齿项」就越来越不重要,剩下的主项正是积分。

收束 · 第三幕这一幕在讲什么p.26

第三幕讲压缩:把一层一层的加,压成一次一次的乘。

四种垛。茭草、三角、四角、岚峰,各有各的公式。

一条链。后一个公式总比前一个多乘一项、多除一级。

一张表。古法七乘方图:垛积公式的分母从这张表里来,乘方开方也靠它。

题的来处。草料场、果行、箭库;题面用市井话,不用行话。

离散与连续。十层得 385,积分得 333.33;差的是锯齿,同的是 1/3。

数学

茭草:n(n+1)/2,十层 55。

三角:n(n+1)(n+2)/6,十层 220。

四角:n(n+1)(2n+1)/6,十层 385。

岚峰:n(n+1)(n+2)(n+3)/24,十层 715。

故事 · 第四幕如象招数p.27

《四元玉鉴》里有一门的名字很怪,叫「如象招数」。意思是:像招兵那样数。

招兵是怎样数?第一天来一批,第二天来的比第一天多,第三天比第二天再多,而且「多的那部分」本身也在增多。于是人数不是一个等差列,是一个「差又在变」的列。

这类数列在现实中到处都是:驿站逐年增加的驿马、河工逐年加派的夫役、仓廪逐月递减的存粮、按年累积的利息。它们都不是一次增长,是增长本身在增长。

要报出总数,光会等差求和不够,得有一件更锋利的工具。朱世杰的办法是:不看数本身,看数之间的差。第一层差、第二层差、第三层差——一直做到某一层差变成常数为止,然后用常数回头算出每一项与总和。

这套办法叫「招差术」。它是本册技术含量最高的一部分,也是后来最被低估的一部分。

数学 · 第四幕一层一层往下减p.28

招差术的全部操作,就是反复做减法。

取一串招兵的数:第一日 3 人,往后每日增加的人数本身每日多一人。于是十日的人数依次是

3, 7, 12, 18, 25, 33, 42, 52, 63, 75。

现在做第一层差(后项减前项):4, 5, 6, 7, 8, 9, 10, 11, 12。

不是常数。再做第二层差:1, 1, 1, 1, 1, 1, 1, 1。成了常数。

停。这一串数由三层信息完全决定:首项 3、第一层差的起点 4、第二层差的常数 1。三个数,定住了整串。

这不是巧合。「差分层层减到常数」这件事,正是「这个数列由一个多项式生成」的标志;减到第几层成常数,那个多项式就是几次的。上面这串减两层就平了,所以它是二次的。

古书把第一层差叫「上差」,第二层叫「二差」,第三层叫「三差」,第四层叫「四差」。「如象招数」的原题用到四差,即四次多项式。

数学 · 第四幕用三个数算出三百三十p.29

有了三个数,怎么求前 n 项的和?招差术给的公式是:

S(n)=n·Δ1+C(n,2)·Δ2+C(n,3)·Δ3。

这里 Δ1 是第一层差的首项,Δ2 是第二层差的常数,C(n,2)=n(n−1)/2 是从 n 个里取两个的取法数。系数不是凑出来的,是「垛」出来的——每一项前面的 C,正是三角垛、岚峰垛那些数。

代入本例:Δ1=4,Δ2=1,而首项 3 是 n 项各自的本底,故

S(n)=3n+4·n(n−1)/2+1·n(n−1)(n−2)/6。

取 n=10:30+4×45+120=30+180+120=330。

检验:把十项直接相加,3+7+12+18+25+33+42+52+63+75=330。对上了。

再看 n=4:12+4×6+4=40;直加 3+7+12+18=40。也对。

三个数,一条公式,任意层数。这就是招差术的本事:从有限几个观察值,推出整串数。今天把这个叫「插值」。

数学 · 第四幕四差:一直减到 24p.30

再看一个四差的例子,用最朴素的一串数:1, 16, 81, 256, 625——就是 14, 24, 34, 44, 54。

做差,一层层往下:

一层:15, 65, 175, 369。二层:50, 110, 194。三层:60, 84。四层:24。

减四层,得常数 24。这个 24 有个身份:4!=24。四次多项式的四阶差分恒等于「首项系数 × 4!」,首项系数是 1,所以是 24。差分层数、常数、阶乘,三样扣在一起。

现在把这套差数写成公式(Δ1=1, Δ2=14, Δ3=36, Δ4=24):

f(n)=n+14C(n,2)+36C(n,3)+24C(n,4)。

验 n=4:4+84+144+24=256,正是 44。验 n=3:3+42+36=81。两处都对。

再往前走一步,把公式求和(这一步是招差术与垛积术合流的地方):

Σk4=C(11,2)+14C(11,3)+36C(11,4)+24C(11,5),取到第十项得 55+2310+11880+11088=25333。

直加检验:1+16+81+256+625+1296+2401+4096+6561+10000=25333。四次方的前十项和,一个不差。

暗线 · 第四幕从数出发,不从式出发p.31

招差术和垛积术看起来是两件事,其实立足点完全不同。

垛积术从「形」出发:先知道垛是什么形状,再用几何直觉猜出公式,最后验证。招差术从「数」出发:先有一串实测的数,再层层做差,最后反推出公式。

这个区别在实用上极要紧。堆草的人知道垛形,所以能猜公式;记驿站账的人不知道「公式」,只有一本账。账上是逐年逐月的数,一串一串。要从这串数推出「明年该备多少」「这十年一共用了多少」,公式是推不出来的——因为根本不知道它是几次的。

差分行。做几层差,看哪一层平了,就知道它是几次的;平了之后,用那几个常数直接算出任意一项与总和。整个过程不需要先知道公式,只需要会减法。

这是本册暗线的又一面:没有符号的代数,把「表达」的活儿交给了版面,把「推理」的活儿交给了操作。招差术里没有一个字母,但每一步都是合法的代数运算——只是运算的对象是表上的数,不是纸上的式。

代价是:它只能处理「已经有的数」。要预测一个从未观察过的情形,它给不出保证;它给的是「按已观察到的规律外推」。这个界限,古人心里清楚。

交汇 · 第四幕加法与减法是一件事p.32

第三幕和第四幕讲的两套办法,其实是同一条路的两个方向。

向下走:给一串数,反复做差,减到常数为止——这是招差。向上走:给一串差数,反复累加,得到垛的总数——这是垛积。

拿三角垛验一次。向上:茭草垛的逐层数 1, 2, 3, 4, …,累加得 1, 3, 6, 10, …,这就是三角垛的逐层数;再累加得 1, 4, 10, 20, …,这就是岚峰垛的逐层数。每累加一次,垛就高一级。

向下:把岚峰垛的逐层数 1, 4, 10, 20, 35, … 做差,得 3, 6, 10, 15, …,再做差得 3, 4, 5, …,再做差得常数 1。每做差一次,垛就低一级。

两个方向互逆,正如加与减互逆。这不是本册的发明,而是这套算法本来的结构;朱世杰把两侧的公式都列了出来,却没有把它们写成一条「互逆定理」——因为那需要一种「以式写式」的语言,而他手里只有位置。

三百多年后,欧洲人把这件事写成了微积分基本定理:求和与求差互为逆运算。同一件事,两种说法;一个有定理,一个有表。

收束 · 第四幕这一幕在讲什么p.33

第四幕讲读取:一串数里藏着它的生成规则,反复做差就能读出来。

差分。一层层减,减到常数为止;平在第几层,就是几次。

公式。nΔ1+C(n,2)Δ2+C(n,3)Δ3+…,系数是垛数。

实算。招兵十日 330;四次方前十项和 25333。

四差。减四层得 24=4!。

互逆。做差降一级,累加升一级;与微积分基本定理同构。

数学

差分:3,7,12,18,25,33,42,52,63,75 → 一差 4…12 → 二差恒 1。

求和:S(10)=3×10+4×C(10,2)+1×C(10,3)=30+180+120=330。

四差:n4 的四阶差为 24;Σk4(10 项)=25333。

故事 · 第五幕六百年的三段路p.34

《四元玉鉴》的流传,大致分三段。

第一段,元代到明初。书成之后有人读,也有人续。明初编入《永乐大典》,算是进了国库。这一段的特点是:书在,读的人少。

第二段,明代中后期到清初。几乎断掉。顾应祥删天元细草,《算法统宗》不载四元。这一段的特点是:书难找,方法失传,只剩题目与答案在少数抄本里。

第三段,清中期以后。乾嘉学者重刊古算书,阮元编《畴人传》,把朱世杰列入。李锐、沈钦裴、罗士琳先后攻这部书;罗士琳 1836 年成《四元玉鉴细草》,逐题补出演算。这本书这才重新「会算」。

二十世纪又添两笔:钱宝琮、李俨等用现代语言整理,日本学者三上义夫把它介绍到西方;计算机代数兴起后,人们发现四元术的消元思想与格罗布纳基一脉相通,这部六百多年前的书,忽然有了一门新读者。

数学 · 第五幕消元这件事,后来变成了一个行列式p.35

四元术的核心动作是「消元」。这件事在现代数学里有名字,也有公式。

取一个小例。两式 x+y=5 与 xy=6。把两式都看成关于 y 的多项式:y+(x−5) 与 x·y−6。要消掉 y,可以排一个二行二列的行列式:

|1, x−5; x, −6|=1×(−6)−(x−5)×x=−x2+5x−6。

令它为零:x2−5x+6=0,得 x=2 或 3,对应 y=3 或 2。验:2+3=5,6=6。

这个行列式叫结式,是西尔维斯特 1853 年给出的。它的意思很直白:两个多项式有公共根的条件,就是它们的结式为零。四元术的「互隐通分、剔而消之」,做的就是这件事——只是没有行列式这座桥,靠一层层剃。

再往后一步是格罗布纳基(1965):给定一组多项式,自动算出一组「标准形」,使消元可以按固定顺序机械进行。把四元术交给机器做,得到的就是它。今天的符号计算软件里,解多元多项式方程组走的还是这条路。

数学 · 第五幕公式的层级p.36

把四道垛积公式的展开写全,会看见一条整齐的竖列:

Σk=n2/2+n/2

Σk2=n3/3+n2/2+n/6

Σk3=n4/4+n3/2+n2/4

Σk4=n5/5+n4/2+n3/3−n/30

每一项的头一个系数,是 1/2, 1/3, 1/4, 1/5——正好是「次方数加一」的倒数。而 ∫x4dx=x5/5,那个 1/5 就在这里。

后面的系数越来越怪:1/2、1/6、1/4、−1/30。这一串数在十八世纪被雅各布·伯努利系统算出,后世叫伯努利数。它们不是凑的,是从「求和」这个动作里必然长出来的。

朱世杰手里有四条公式,没有一般公式。不是他不够聪明,是缺两样东西:一是字母,没有字母就写不出「第 r 条公式」;二是幂级数,没有幂级数就管不住那一串怪系数。有工具才能有一般性——这句话在本册反复出现,此处是最硬的一例。

数学 · 第五幕同一个公式,两个名字p.37

第四幕那条招差公式,写全了是这样:

S(n)=nΔ1+C(n,2)Δ2+C(n,3)Δ3+C(n,4)Δ4+…

牛顿在十七世纪七十年代给出的前向插值公式,是这样:

f(a+nh)=f(a)+nΔf(a)+C(n,2)Δ2f(a)+C(n,3)Δ3f(a)+…

同一个式子。唯一的差别是:朱世杰的是「求和」版,牛顿的是「求值」版;朱世杰用汉字说「上差乘层数、二差乘三角垛」,牛顿用 Δ 与阶乘写。相隔三百六十余年,两套记号,一条公式。

再往前走一步,就是泰勒级数:把差分的步长 h 缩到无穷小,差分变成导数,二项式系数变成阶乘的倒数。于是

f(a+h)=f(a)+hf′(a)+h2f″(a)/2!+…

泰勒级数是招差公式的连续极限。这不是牵强的比附:两者的系数结构完全一致,只是把「差」换成了「导」。

这件事让人不太舒服,也让人清醒:一条公式可以在两个地方各自长出来,长得一模一样。数学的「发现」与「发明」之争,在这个例子上格外难答。

暗线 · 第五幕三样东西p.38

朱世杰留给后世的,其实是三样东西,不是一条定理。

一张方阵。四元布算——把方程摆成一张有方向的表,幂次靠位置。这是一个容器,装得下四个未知数的一切多项式。

一叠公式。垛积术——十几种垛形,各自的求和式。这是一批成品,拿来就能用,用完不必问为什么。

一张表。招差术——反复做差,减到常数,反推每一项与总和。这是一套工序,可以从任意一串数开始,不需要先知道公式。

三样东西的品性完全不同:容器求「装得下」,成品求「算得快」,工序求「接得住生数据」。一个人同时做出这三样,说明他不是在解某一道题,是在造一套工具。

这也解释了他的书为什么难读:容器那一半写给内行,成品那一半写给管事的人,工序那一半写给算账的人。三种读者,三种笔法,编在同一部书里。后人读不通,往往是因为拿错了钥匙。

交汇 · 第五幕位置退场之后p.39

位置记法退场了。今天的代数式里没有一个格子,全是字母、数字、上标与括号。那么四元术留下了什么?

留下了三件看不见的东西。

其一,消元的次序感。「先消哪个元、后消哪个元」会影响计算的难易,这件事今天的符号计算里叫「项序」,是格罗布纳基算法的核心选择之一。四元术早就在做这个选择,只是靠经验。

其二,把方程当对象的习惯。四元术不关心「这个 x 代表什么」,只关心「这一格该放几」。把式子本身当成可以搬运、可以相减、可以叠起来的东西——这是抽象代数的第一步。多项式环、理想、商环,都是从这个习惯长出来的。

其三,算到底的耐心。《四元玉鉴》里有些题的演算要几十步,一步错则全盘废。这种「长篇演算」的体例,在中国算学里是新的;它预示了一种后来才成为常规的工作方式:不靠灵感,靠一步一步推。

记法死了,习惯活着。这一册的暗线走到这里,可以收尾了:一套记法能活多久,看它是否被更好的记法取代;一种习惯能活多久,看它是否被后来的学问吸收。

收束 · 第五幕这一幕在讲什么p.40

第五幕讲身后:一本书怎样失传,又怎样被反推回来。

三段路。元明有人读,明代几乎断,清代反推复原,二十世纪有新读者。

消元。「互隐通分」后来成了结式与格罗布纳基。

层级。垛积公式的主项系数是 1/(r+1),正对积分;怪系数是伯努利数。

同形。招差公式与牛顿插值同形,其连续极限是泰勒级数。

留下。记法退场,次序感、对象感、耐心留了下来。

数学

结式小例:|1, x−5; x, −6|=−x2+5x−6,零点 2, 3。

层级:Σkr 的主项为 nr+1/(r+1)。

同形:nΔ1+C(n,2)Δ2+… ⟷ hf′+h2f″/2!+…。

收束回望:一条时间线p.41

约 1249 年生。籍贯燕山。生卒年均无确证,此年为后世推算。

13 世纪中期北方天元术成形。李冶《测圆海镜》(1248)系统使用「立天元一」,以「元」字标一次项。

约 1279—1299 年「周游湖海二十余年」,以数学授徒为业。莫若序称其「踵门而学者云集」。

1299 年《算学启蒙》成书(大德三年),三卷二十门二百五十九问,赵元镇作序。

1303 年《四元玉鉴》成书(大德七年),三卷二十四门二百八十八问,莫若、祖颐作序。卷首载「四元布算之图」与「古法七乘方图」。

约 1314 年卒(推算)。

1403—1408 年《四元玉鉴》收入《永乐大典》卷一万六千三百四十三、四十四。

1550 年顾应祥《测圆海镜分类释术》删去天元细草。1592 年程大位《算法统宗》不载天元术。四元术成绝学。

1799 年阮元《畴人传》为朱世杰立传。1836 年罗士琳《四元玉鉴细草》成,逐题补出演算。

1914 年三上义夫《中国算学之特色》向西方介绍四元术。1959 年李约瑟《中国科学技术史》第三卷设专节讨论。

1965 年布赫贝格尔提出格罗布纳基,多元多项式消元有了机械算法;四元术的思想在新的语言里重现。

收束他的书该怎么编p.42

两本书的关系,可以用一句话说清:《算学启蒙》是坡道,《四元玉鉴》是屋顶。

坡道那一本,编法极老实:从九九歌诀开始,一门一门往上加,每门先讲法、再给例、再出题。它不追求深刻,追求不留台阶——任何一步都不跳。这种编法在元代是新的:此前的算书多以「问题集」的形式出现,读者得自己从题里悟法。

屋顶那一本,编法相反:以题为准,不以法为准。二十四门,每门一类情境——田亩、仓窖、营建、堆垛、招兵、测望。同一门里可能用到天元、四元、垛积、招差中的几种;同一法也可能散在几门。读者若按「学法」的思路去读,会觉得杂乱;按「看题」的思路去读,就顺了。

这种「以题统法」的编排,好处是贴近实用,坏处是方法不成体系。后人要复原它,必须先把二百八十八题重做一遍,再从做法里反推出方法——罗士琳做的就是这件事,用了半辈子。

今天若要重编,多半会倒过来:先分方法,再挂例题。但那样编出来的,是一本教科书,不是朱世杰的书。

留问三个还没有答案的问题p.43

一、为什么停在四元?本册给的答案是「版面用完」:纸只有四方,第五元无处可去。但这个答案只解释了一半。为什么没有人试着把纸折起来、叠成两层?元代已有套印、已有复杂的版面设计。是没想到,还是想到了不划算?这个问题大概永远答不清。

二、一门学问为什么会失传?《四元玉鉴》的题目、答案、甚至部分细草,明代都还在;失掉的只是「怎么算」。顾应祥删细草,是看不懂,还是判断读者不需要?如果是后者,那他做的是一次理性的取舍——而这次取舍让一门学问断了两百多年。保存与普及,有时是冲突的。

三、一条公式在两处各自长出来,算发现还是发明?朱世杰的招差公式与牛顿的插值公式,形式几乎一样,相隔三百六十余年,中间没有可证的传递链。若数学是被发现的,那它本来就在那里,等人去取;若数学是被发明的,那两次独立发明出同一个东西,是极难解释的巧合。这个问题今天仍在争。

三个问题都不必急着答。它们的作用是:让这一册读完之后的安静,有一点内容。

动手做 一用硬币摆三种垛p.44

材料:硬币或围棋子若干(二十枚以上)、一张白纸、一支笔。

第一种,茭草垛。第一行摆 1 枚,第二行 2 枚(紧挨着排成一条),第三行 3 枚,第四行 4 枚。四行共用 1+2+3+4=10 枚。公式:4×5/2=10。

第二种,三角垛。第一行 1 枚;第二行 2 枚;第三行 3 枚;第四行 4 枚——但每行都居中排在上一行下面,摆成一个正三角。这时每一行的枚数是 1, 3, 6, 10(因为三角形状的一行是「前几行之和」)。四行共 1+3+6+10=20 枚。公式:4×5×6/6=20。

第三种,四角垛。每行摆成正方形:第一行 1 枚,第二行 2×2=4 枚,第三行 3×3=9 枚,第四行 4×4=16 枚。四行共 1+4+9+16=30 枚。公式:4×5×9/6=30。

第四种,岚峰垛。把三角垛的每一行「再垛一次」:第一行 1 枚,第二行 4 枚,第三行 10 枚,第四行 20 枚。四行共 1+4+10+20=35 枚。公式:4×5×6×7/24=35。

收尾一问:四种垛,四行分别是 10、20、30、35。为什么从三角垛到四角垛增加了 10,从四角垛到岚峰垛只增加了 5?摆一遍就看出来了:四角垛每一行比三角垛「多一排」,越往下多得多;而岚峰垛是「垛上垛」,增量被摊薄了。

动手做 二做一张差分表,猜下一项p.45

材料:一张纸、一支笔。不许用计算器。

第一步,写一行数。正方形点阵的枚数,从「零个点」开始:0, 1, 4, 9, 16。

第二步,做第一层差。后项减前项:1, 3, 5, 7。

第三步,做第二层差。再减一次:2, 2, 2。平了。

第四步,读三个数。第二层差的常数是 2;第一层差的首项是 1;首项本身是 0。三个数定住了整串。

第五步,写公式。f(n)=n×1+C(n,2)×2=n+n(n−1)=n2。正好是平方——本来就该是。

第六步,预测。第 10 个正方形点阵有多少点?f(10)=100。第 20 个?400。不用摆,算得出。

第七步,求和。前十项一共多少点?把公式累加:Σk2=C(11,2)×1+C(11,3)×2=55+330=385。这与第三幕的四角垛十层总数一致——同一件事,两条路。

换一串数自己试。写 1, 8, 27, 64(立方数),做三次差,会得到常数 6。用 6、首差、首项三个数写公式,看能不能预测 53=125。能,就说明这一套学会了。

小典 一术语 · 概念p.46
天元
第一个未知数。以「元」字标于一次项旁,是记法的标志。
地元
第二个未知数,与天元分据一方。
人元
第三个未知数。
物元
第四个未知数。天地人物合为「四元」。
太
常数项,居方阵中心。源自「太极」。
立天元一
列方程的开场语:设所求之量为未知。非计算,是命名。
开方式
化归后令一边为零的整式,其根即所求。
增乘开方
逐层剥减的求根算法,可解任意次数字方程。
互隐通分
让某元在两式间隐去,通分对齐次数。
剔而消之
相减降次,反复至该元消尽。
四元布算
以方阵方位表幂次、以格内数表系数的布式法。
垛积
由底层数目直接求堆垛总数。
垛上垛
把一垛的累计值当作另一垛的一层。
招差
反复做差、减至常数,据此求任意项与总和。
四差
第四层差分。四阶多项式的四差恒为「首项系数 × 4!」。
古法七乘方图
二项式系数三角形,列至七次。朱世杰标「古法」,明非自创。
小典 二人名 · 典籍p.47
朱世杰
(约 1249—约 1314)字汉卿,号松庭,燕山人。四元术、垛积、招差。
李冶
(1192—1279)《测圆海镜》(1248)与《益古演段》(1259),天元术的集大成者。
秦九韶
(约 1202—1261)《数书九章》(1247),增乘开方与「缀术」推历。
贾宪
(约十一世纪)「开方作法本源图」,二项式系数表之源。
杨辉
(约 1238—约 1298)《详解九章算法》(1261)载贾宪之图并注明出处。
沈括
(1031—1095)《梦溪笔谈》「隙积术」条,垛积术的早期形态。
刘徽
(约 263 年在世)《九章算术注》,勾股形内切圆诸关系。
莫若
(十三至十四世纪)《四元玉鉴》序作者,记朱世杰游学授徒事。
祖颐
(十三至十四世纪)《四元玉鉴》序作者,述四元之名与「玉鉴」之义。
赵元镇
(十三世纪)《算学启蒙》序作者。
顾应祥
(1483—1565)《测圆海镜分类释术》(1550),删去天元细草。
程大位
(1533—1606)《算法统宗》(1592),畅销算书,不载天元术。
阮元
(1764—1849)《畴人传》(1799),为朱世杰立传。
罗士琳
(1789—1853)《四元玉鉴细草》(1836),逐题补演算,复原四元术。
三上义夫
(1875—1950)《中国算学之特色》(1914),向西方介绍四元术。
《四元玉鉴》
1303 年成书。三卷二十四门二百八十八问。卷首载四元布算图与古法七乘方图。
延伸 一一个方法走了七百年p.48

四元术的三条支流,各自走了很远。

消元这一支:朱世杰的「剔而消之」→ 西尔维斯特的结式(1853)→ 布赫贝格尔的格罗布纳基(1965)→ 今天的计算机代数系统。每一次前进,都是把「靠经验选次序」换成「按规则定次序」。六百年前的难题,今天的机器几秒钟做完;但机器做的仍是同一件事:把多元化成少元,把少元化成一元。

垛积这一支:朱世杰的四条公式 → 伯努利数的求和公式(1713)→ 积分学 → 数值积分里的辛普森法则、欧拉—麦克劳林公式。「离散求和与连续积分差多少」这个问题,至今仍有人在算,因为工程上用它估误差。

招差这一支:朱世杰的差分表 → 牛顿前向插值(1670 年代)→ 泰勒级数 → 数值分析中的有限差分法。今天算天气预报、算结构受力,用的仍是把连续方程离散成网格、再用差分近似的办法。那套「减到常数」的思路,藏在每一台超级计算机里。

三条支流有一个共同点:都是从「把连续的弯东西,切成一段一段直的」这件事出发的。朱世杰的时代没有极限,也没有无穷小;他能做的,是把东西切成格子,然后精确地数格子。这不是退而求其次,这是另一条通往同一个答案的路。

延伸 二三桩公案与延伸阅读p.49
公案一 · 他活了多少岁
无墓志、无传记、无官职录。今人所有的只有两篇序,序里不记年岁。生卒年靠「周游二十余年」与两书的年款反推,误差可达十几年。有学者主张活动期主要在十三世纪后半,也有主张延至十四世纪初。本册取通行推算值,标「约」。
公案二 · 细草是谁删的、为什么删
通行说法是顾应祥看不懂而删。但另一种读法:他编的是给初学者的「分类释术」,删细草是体例决定,不是能力问题。两种读法都能从书里找到支持。这件事的要害不在谁对,而在一次取舍可以让一门学问断两百年。
公案三 · 招差与牛顿插值,同形是否同源
三上义夫、李俨、钱宝琮都指出二者形式相同;李约瑟认为可视为独立发展。反对「同源」的理由是缺传递链:元代算书没有可靠途径在十七世纪前进入欧洲。主张「同源」的理由是:阿拉伯世界的算书可能中介,而这条链尚未查清。本册只述形式相同,不断言影响。
延伸阅读 · 原典
《四元玉鉴》(《知不足斋丛书》本;郭书春等校勘本)·《算学启蒙》(同上)· 罗士琳《四元玉鉴细草》(1836)。
延伸阅读 · 研究
钱宝琮《中国数学史》· 李俨《中国算学史》· 李约瑟《中国科学技术史》第三卷 · 三上义夫《中国算学之特色》· 吴文俊主编《中国数学史大系》。
延伸阅读 · 对照
Cox、Little、O'Shea《Ideals, Varieties, and Algorithms》(格罗布纳基)· 任何数值分析教材的「有限差分」章。
导读 一给家长:这册在讲什么p.50

这一册的主角是一个没有传记的人。他留下的只有两本书和两篇序;序里说他走了二十多年,上门求学的人多得挤不开。他靠教数学为生。

全册骨架五步:燕山与湖海(引子)、一个未知数怎么写在纸上(第一幕)、从一元到四元(第二幕)、一堆东西怎么数(第三幕)、一串数怎么读(第四幕)、一本书的旅行(第五幕)。数学层集中在 p.7—p.9、p.14—p.16、p.21—p.23、p.28—p.30、p.35—p.37。

这册的数学比前两册杂:有方程、有多项式、有求和公式、有差分。但每一项的入口都很低——第二幕从一个二十七个字的古文题开始,第三幕从「堆草」开始,第四幕从「做减法」开始。难点不在算,在「为什么位置能代替符号」。孩子若卡住,可以只记住一句:他不用字母,用格子;格子离中心几格,就是几次方。

两页动手做都适合在桌上做:p.44 用硬币摆四种垛(四行分别是 10、20、30、35,孩子摆完会「啊」一声),p.45 做差分表猜下一项(只用减法,不用计算器)。摆与减,比记公式扎实。

导读 二给家长:可以一起聊的三件事p.51

一、没有字母怎么写代数?可以拿一张方格纸,让孩子把 x2y 画成一个格子:向东两格、向北一格。画出来之后,再问一句:如果要加第五个字母,往哪个方向走?孩子会自己发现「没有方向了」——这就是四元术的天花板,不用讲,画一遍就懂。

二、为什么要数一堆草?可以问:一垛草不拆开,怎么知道有多少?孩子多半会说「量体积再估」。这时告诉他:古人真的找到了精确公式,而且只用底层的数目。「不用数就能知道」这件事本身,比公式更值得惊讶。

三、一本会算的书为什么会失传?这个问题适合大一点的孩子。可以这样问:如果一本教科书只剩下题目和答案,没有解题过程,它还传得下去吗?答案是不传。进而可以聊:今天存下来的东西,有多少是「只有答案没有过程」的。

顺带一句:这一册里出现的所有人名,除了朱世杰本人,几乎都是「替他保存或复原」的人——李冶、罗士琳、阮元、三上义夫。数学史里有一半的角色是保管员,这一点值得让孩子知道。

版权版权与编目p.52
编目

《数学家的故事》第三辑 · 第 23 册
朱世杰 · 四元玉鉴

明线:天元术与位置记幂次 · 四元布算 · 互隐通分与消元 · 垛积术 · 招差术 · 增乘开方
暗线:没有符号的代数,靠位置记幂次 · 版面决定容量 · 记法会死,习惯不会

时代:约 1249—约 1314 · 中国元(下延至 1303 成书、1403 入《永乐大典》、1550 细草被删、1836 罗士琳复原、1965 格罗布纳基)
主典:《算学启蒙》(1299,三卷二十门二百五十九问)·《四元玉鉴》(1303,三卷二十四门二百八十八问)

体例:扉页与题解 2 页 · 引子 3 页 · 五幕 35 页(每幕:故事 1 · 数学 3 · 故事/暗线 1 · 交汇 1 · 小结 1)· 收束与留问 3 页 · 动手做 2 页 · 小典 2 页 · 延伸 2 页 · 家长导读 2 页 · 版权 1 页,共 52 页。

《数学家的故事》第三辑十册:欧多克斯 · 花剌子米 · 朱世杰 · 卡尔丹诺 · 纳皮尔 · 拉普拉斯 · 李善兰 · 威尔斯特拉斯 · 康托尔 · 哥德尔。本册为第三辑第三册。

正文中的年代、人物、文献均据 p.47 所列材料与各页注疏;数值例(直田开方、一气混元消元、四种垛积、招差求和、四阶差分、结式小例)均为本册实算。生卒年取后世推算,标「约」。插画为写意示意,不追求器物形制与历史场景的复原。