Yang Hui · 约1238–约1298

杨辉

那张三角形的数表不是他画的,他只是抄了下来——原书后来失传,于是它叫了他的名字

1+3+6++n(n+1)2=n(n+1)(n+2)61 + 3 + 6 + \cdots + \frac{n(n+1)}{2} = \frac{n(n+1)(n+2)}{6}
三角垛 ·《乘除通变本末》,1274 ·「本位不加,中加一,下加二,取一位可以六除者六除讫,三位相乘为积」

杨辉字谦光,钱塘(今浙江杭州)人。关于他这个人,能确定的事少得出奇:正史无传,生卒年都只能推,通行的写法是约1238–约1298;一般说他在南宋做过地方官,足迹在苏杭一带,此外几乎一无所知。可他留下的书是同时代最多的——五种二十一卷,从 1261 年到 1275 年,十五年里一本接一本:《详解九章算法》十二卷(1261)、《日用算法》二卷(1262,已佚)、《乘除通变本末》三卷(1274)、《田亩比类乘除捷法》二卷与《续古摘奇算法》二卷(都是 1275)。后三种合称《杨辉算法》。最后两种的序署「乙亥德祐改元小暑节」——那是 1275 年夏天,第二年临安就降了。

宋元数学的四位大家里,秦九韶、李冶、朱世杰各有一门自己的发明,杨辉的位置不一样:他几乎不宣称什么是自己的。开方作法本源图注明出自贾宪的《释锁算书》,带从开方的那批题注明抄自刘益的《议古根源》,纵横图里的洛书是几千年的老图,垛积的源头是沈括的隙积术。他做的是另一件事——把这些东西说清楚,并且排出学的次序。《详解九章算法》的自序把办法一条条列了出来:「恐问隐而添题,解见法隐而续释」,「注刊大小字以明法草」,「凡题法解白不明者,别图而验之」;书后附《九章算法纂类》,把《九章算术》二百四十六问按方法重排成九类;《乘除通变本末》卷首那篇《习算纲目》,干脆排成一份带日程的课程表。他最爱说的一句是「算无定法,惟理是用」——法子没有一定的,看道理该用哪个就用哪个。这些书后来在东亚流传极广,朝鲜与日本都翻刻过;而他转录下来的那张表,今天在中文里叫杨辉三角。

杨辉肖像
《杨辉算法》宜稼堂丛书本,《算法通变本末》卷上第一页 · 浙江大学 CADAL 藏本,Wikimedia Commons,公有领域。杨辉没有画像传世,流传的像都是今人所绘,所以这里放他自己的那一页书。卷端首行题「算法通变本末卷上」,右起第二行是署名「钱塘 杨辉 编集」,接着就是《习算纲目》——已知最早的一份数学课程表。正文头一句「先念九九合数,一一如一到九九八十一,自小至大,用法不出于此」,下面几行已经在排日程:「学相乘起例并定位,功课一日」「温习乘法题目,功课五日」「学商除起例并定位,功课一日」。左边版心下端印着「宜稼堂丛书」,与馆里秦九韶那本《数书九章》同一套丛书、同一个刻书人。

生平

  1. 约1238
    约生于钱塘

    生卒年都没有确据,1238 与 1298 是从书的年代与序跋推出来的。字谦光。正史无传。

  2. 1261
    《详解九章算法》十二卷

    自序署「景定二年辛酉岁正月十七日己卯,钱塘杨辉谨序」。他的办法写在序里:问得不清楚就添一道题,解法说得不明白就再释一遍,还不明白就画图验它。

  3. 1261
    附《九章算法纂类》

    把《九章算术》二百四十六问按方法重排成九类:乘除、分率、合率、互换、衰分、叠积、盈不足、方程、勾股。原书按「田、粟、税、工」分,学的人却要按「用什么法」找。

  4. 卷五 少广
    转录开方作法本源图

    注明「出《释锁算书》,贾宪用此术」。贾宪的原书失传,这张表能留到今天,靠的就是这一次转录。

  5. 1262
    《日用算法》二卷

    给日常用的算书,已佚。《乘除通变本末》里讲三角垛时写着「日用有图」,说明那本书里画过果子堆的图。

  6. 1274
    《乘除通变本末》三卷

    卷上《算法通变本末》(含《习算纲目》)、卷中《乘除通变算宝》(加法五术、减法四术、求一、九归)、卷下《法算取用本末》(一至三百的乘除各三百题)。

  7. 卷上
    习算纲目

    一千多字,从背九九表排到《九章》二百四十六问,每一步都标着「功课几日」。全部加起来二百五十多天。

  8. 1275
    《田亩比类乘除捷法》二卷

    序署「乙亥德祐改元小暑节」。卷下抄刘益《议古根源》的题:同一块八百六十四步的田,换八种问法,列出八个不同的方程。

  9. 1275
    《续古摘奇算法》二卷

    卷上是二十来幅纵横图——三阶到十阶的幻方,外加攒九、聚五、连环这一类圆环上的图,并且给出了造法。

  10. 1276
    临安降元

    他最后两本书写完的第二年。此后再无关于他的记载。

  11. 1303
    朱世杰《四元玉鉴》

    同一张表以「古法七乘方图」之名重印,垛积也往上推了一层。中国的高阶等差级数求和到此成形。

  12. 1378
    余氏勤德堂刊《杨辉算法》

    洪武十一年。中国的本子后来亡了。

  13. 1408
    《永乐大典》抄存

    《详解九章算法》此时已散,卷一六三四三、一六三四四抄下了残存的部分——开方作法本源图就在其中。这一册今存剑桥大学图书馆。

  14. 1433
    朝鲜庆州府翻刻

    宣德八年,据洪武十一年余氏本翻刊。这一部反倒成了《杨辉算法》现存最早的本子。日本方面则说关孝和在 1661 年见到后亲手传写了足本。

  15. 1842
    《宜稼堂丛书》刻本

    郁松年刻,与《数书九章》同一套丛书、同一个刻书人。《详解九章算法》的残本与《杨辉算法》六卷,都由这一次刻印传下来。

展品厅

绝大多数展品都可以亲手把玩——这是本馆的立馆之本;少数以叙述为主的,做成故事展签。

镇馆之宝 · 亲手玩

九子斜排,上下对易,左右相更,四维挺出

十六个字,把洛书摆了出来——图是几千年的老图,做法是他写下来的。

1+2++n2=n2(n2+1)2n(n2+1)21 + 2 + \cdots + n^2 = \frac{n^2(n^2+1)}{2} \quad \Longrightarrow \quad \frac{n(n^2+1)}{2}

《续古摘奇算法》卷上开头是二十来幅「纵横图」,也就是今天说的幻方:数填进方格,每行、每列、每条对角线加起来都是同一个数。三阶那一幅就是洛书。它本身极古老,《大戴礼记·明堂》里已经写着「二九四、七五三、六一八」,汉代以来的书里也一再出现;可两千年传下来的只有这张图,没有人说它是怎么摆出来的。杨辉补上的正是这一步,而且只用了十六个字:九子斜排,上下对易,左右相更,四维挺出。照着做:一到九斜着排成一个菱形,是为九子斜排;把顶上的 1 与底下的 9 对换,是为上下对易;把左边的 7 与右边的 3 对换,是为左右相更;这时 2、4、6、8 四个正悬在四个角外,各自往里一挺,落进方阵的四角,是为四维挺出——洛书就成了,「戴九履一,左三右七,二四为肩,六八为足」。四阶那一幅他叫花十六图,做法同样是两句话:十六个数依次写成四行,先把外面四个角对换(1 换 16、4 换 13),再把里面四个角对换(6 换 11、7 换 10),四行四列加两条对角线,十个和全是 34。他的书里从三阶一路排到十阶,另有攒九、聚五、聚六、连环这一类摆在圆环上的图。要紧的不是图多,是他给了造法:一张图是一个答案,一条造法是一整类答案。欧洲要到 1612 年巴谢那本《有趣而好玩的数学问题》才有同一类的斜排构造,晚了三百三十多年。至于幻和为什么是那个数,一行就算得出来:1 到 n² 加起来是 n²(n²+1)/2,分给 n 行,每行 n(n²+1)/2——三阶 15,四阶 34,十阶 505。

照那十六个字走一遍:斜排、对易、相更、挺出;再看四阶的花十六图怎么两次换角就成

三阶那幅图就是洛书,它本身极古老;两千年里传下来的只有图,没有做法。杨辉补上的正是这一步,而且只用了十六个字:九子斜排,上下对易,左右相更,四维挺出。一到九斜排成菱形,顶上的 1 与底下的 9 对换,左边的 7 与右边的 3 对换,剩下 2、4、6、8 四个正悬在四角上,各自往外一挺,落进方阵——洛书就成了,八条线全是 15。四阶那幅他叫花十六图:十六个数顺着写成四行,先换外面四个角(一换十六、四换十三),再换里面四个角(六换十一、七换十),十条线全是 34。要紧的不是图多,是一张图只是一个答案,一条造法是一整类答案。欧洲要到 1612 年巴谢那本《有趣而好玩的数学问题》才有同一类的斜排构造。

不用乘法的乘法

把乘数凑成 1 开头,乘法就变成加法——他为这件事写了三卷书,末卷还列了六百道现成的。

a×9=10aaa×56=a2×112a \times 9 = 10a - a \qquad a \times 56 = \frac{a}{2} \times 112

1274 年的《乘除通变本末》三卷,讲的只有一件事:怎么少做乘除。算筹摆一次乘法要逐位相乘再相加,位数一多就容易错;他把常见的乘数除数分门别类,凑成「以加代乘、以减代除」。最基本的一档叫身外加:乘 1.3 就是把原数写下来,再在低一位上加三成。足钱九十六贯二百五十文折成七十七陌,本来是除以 0.77,他的做法是先加三得 125125,再「望贯除一」减掉千分之一,正好 125000——一次乘除都没有做。乘数不是 1 开头怎么办?那就「求一」:倍它或者折它,直到首位成 1,同时把另一个数反着折或倍。他为此编了一首歌诀:「五六七八九,倍之数不走;二三须当半,遇四两折纽……倍法必折实,倍实必折法,用加以代乘,斯数足可守。」237 乘 56:56 倍成 112,237 折成 118.5,再加一二,得 132.72,也就是 13272。反过来还有「损」:「九乘者损一,十去其一即九;八乘者损二……五乘者折半,四乘者损六,三乘者损七,二乘者损八」——乘 9 就是退一位再减去自己一遍,正是今天芯片里那句移位加法。除法那边对应的是九归,一位数的除法全部背成口诀;他还嫌当时通行的口诀只念四十五句,说「算家惟恐无数可致,岂得有数不用者乎」,把九九合数八十一句全收了回来。卷下《法算取用本末》把一到三百的乘与除逐条列成现成的办法,加因代乘三百题、归减代除三百题。这一套是算筹的最后一程,也是算盘的第一程:九归与求一的口诀后来原封不动进了珠算。他自己给这件事写了一句话:算无定法,惟理是用。

算筹摆一次乘法要逐位相乘再对位相加,位数一多就容易错。杨辉用三卷书讲的只有一件事:怎么少做乘除。法数在九九合数之内就拆成两遍「因」;不在的话就「求一」——把法倍它或折它,直到首位成一,同时把实反着折或倍,剩下的就只是「加」了。他为此编了一首歌诀:「五六七八九,倍之数不走;二三须当半,遇四两折纽……倍法必折实,倍实必折法,用加以代乘,斯数足可守。」最后一题干脆是除法:七十七乘一点三正好是一点〇〇一,所以「身下加三,望贯除一」,一次除也没有做。右边那两个数是本件自己的记法,不是史料里的数,只为把省下来的东西摆到台面上。

一堆果子有多少个

底面七个的三角垛是八十四个——他给的口诀是三个数相乘再六除,而那正是贾宪三角的第四条斜线。

12+22++n2=n(n+12)(n+1)31^2 + 2^2 + \cdots + n^2 = \frac{n\left(n+\frac{1}{2}\right)(n+1)}{3}

《乘除通变本末》里夹着两道看着不起眼的题:「三角垛底面七个,问积几何?答曰八十四个。」「四隅垛底层六个,问积几何?答曰九十一个。」三角垛是把果子摞成三棱锥,最上一个,第二层三个,第三层六个,第 k 层是 1+2+⋯+k;四隅垛是方底的,第 k 层 k 行 k 列。两样都不是等差数列,逐层加要加 n 次,而杨辉给的是一次就算完的口诀。三角垛:「置底面数张三位,本位不加,中加一,下加二,于内取一位可以六除者六除讫,三位相乘为积」——摊开就是 n(n+1)(n+2)/6。底面七个:摆出 7、8、9,其中 9 能被 3 整除、8 能被 2 整除,他取 9 先除掉六分之一得 1.5,7×8×1.5 = 84;底面四个那一题他顺手说了一句「遇六数不用」——4、5、6 里的 6 正好除尽,于是「直以五四相因」,5×4 = 20,连除都省了。四隅垛:「上不加,中加半,下加一,内取一位可三除者除讫」——n(n+½)(n+1)/3。底层六个:6÷3 = 2,2×6.5×7 = 91,也就是 1²+2²+⋯+6² = 91。这一路的源头是沈括:《梦溪笔谈》里那条隙积术问的是酒坛堆成的刍童垛,他说旧法算不了,于是自己造了一个;杨辉把它扩成一系列,朱世杰 1303 年再往上推一层。还有一件事值得并排看:三角垛的答数 1、4、10、20、35、56、84 正是贾宪三角第四条斜线上那串数,也就是 C(n+2, 3)——同一张表,一条斜线是开方要用的系数,另一条斜线是果子堆的个数。而那张表,也是靠杨辉的转录才留下来的。

果子摞成一堆,一共几个?逐层加是老实办法,底面 n 个就要加 n 次;杨辉给的是一次算完的口诀。三角垛:「本位不加,中加一,下加二,于内取一位可以六除者六除讫,三位相乘为积」——也就是 n(n+1)(n+2)/6。底面七个:摆出 7、8、9,取 9 六除得一个半,7 × 8 × 1.5 = 84,正是他书上的答数;底面四个那一题他顺手说了句「遇六数不用」,因为 4、5、6 里的 6 正好除尽,五四相因就是 20。四隅垛换成「上不加,中加半,下加一,内取一位可三除者除讫」,底层六个:2 × 6.5 × 7 = 91,也就是 1²+⋯+6²。这一路的源头是沈括的隙积术,往后由朱世杰 1303 年再推一层。还有一件事值得并排看:三角垛的答数 1、4、10、20、35、56、84,正是贾宪三角第四条斜线上那串数——同一张表,一条斜线是开方要用的系数,另一条是果子堆的个数。

同一块田,他问了八遍

长三十六步、阔二十四步、积八百六十四步——换八种问法,就得到八个不一样的方程。

x212x864=060xx2=8648x2312x+864=0x^2 - 12x - 864 = 0 \qquad 60x - x^2 = 864 \qquad 8x^2 - 312x + 864 = 0

《田亩比类乘除捷法》卷下抄的是刘益《议古根源》里的题。刘益是十二世纪的人,杨辉在《习算纲目》里写:「刘益以勾股之术治演段锁方,撰《议古根源》二百问,带益隅开方,实冠前古。」带益隅的意思是方程里允许出现负的二次项系数;一般认为这在中国数学里是头一回,比秦九韶的正负开方术还早。杨辉挑出的那一组题,来来回回都在说同一块田:长三十六步,阔二十四步,积八百六十四步。可问法一换,列出来的方程就全变了。「阔少长十二步,问长几步」:x² − 12x − 864 = 0,他叫益积开方;同一题换一条路走,把负从先减进方法里,叫减从开方,答数一样。「长阔共六十步,先求阔」:60x − x² = 864,二次项是负的,他叫益隅。同一个方程改问长,逐位商到三十的时候实数不够减、整个翻了号,他就管这一档叫翻积——正是秦九韶「翻法」的那个字。再往下:「三长五阔共二百二十八步」给出 5y² − 228y + 2592 = 0,「一长二阔三和四较共三百一十二步」先化成 8x + y = 312,配上 xy = 864 得 y² − 312y + 6912 = 0,两个根 288 与 24——另一个根对应的是一块长三步、阔二百八十八步的田,它同样满足题设,他取的是二十四。最后一题干脆换成一个方田加一个圆田共二千二百六十八步、方面等于圆径,按当时的古率(圆周取三)四因积步、七为隅算,开出来还是 36。每一题他都先画一幅演段图:把方程的每一项摆成一块矩形,看着图就知道为什么该添一块、该减一块——代数的每一步在图上都有一个对应的动作。这是一套教材的写法:换的不是题,是问法;要学的不是答案,是同一件事怎么化成方程。

《田亩比类乘除捷法》卷下抄的是刘益《议古根源》的题。杨辉在《习算纲目》里写:「刘益以勾股之术治演段锁方,撰《议古根源》二百问,带益隅开方,实冠前古。」带益隅的意思是方程里容得下负的二次项系数,一般认为这在中国数学里是头一回。他挑出的那一组题,来回都在说同一块田——长三十六步,阔二十四步,积八百六十四步——可问法一换,方程就全变了:益积、减从、益隅、翻积各配一档解法。「翻积」那一档最值得看:商到三十的时候,该减的九百比实有的八百六十四还多,实整个翻成正的三十六——秦九韶《数书九章》里那个「翻法」,用的正是这个字。每一题他都先画一幅演段图,把方程的每一项摆成一块面积:代数的每一步,图上都有一个对应的动作。这是一套教材的写法——换的不是题,是问法

一份八百年前的课程表

学乘法一日、温习五日,学除法一日、温习半月……已知最早的一份数学学习纲要,逐条标着功课几天。

《乘除通变本末》卷上开头有一篇《习算纲目》,一千多字,从头到尾在排课。第一句是「先念九九合数,一一如一至九九八十一,自小至大,用法不出于此」——九九表背熟,后面所有的法都出不了它。接着逐项写明功课几日:学相乘的起例与定位一日,温习乘法题目五日;学商除一日,温习半月;《五曹》《应用算法》两本书每天做两三问,两个月;加法一日、温习三日;减法一日、温习五日——他还顺手说了为什么减法要贴着加法学:「加法乃生数也,减法乃去其数也,有加则有减,凡学减必以加法题答考之,庶知其源。」九归本来要背四十四句口诀,「非五七日不熟」,他说照《详解算法》里的注文看一遍用意,一日可记。分数那一段最长:日习一法,不旬日而周知,再用两个月温习,因为「治分乃用算之喉襟也」。开方是大节目,例有七体——开平方、开平圆、开立方、开立圆、开分子方、开三乘以上方、带从开方——一日学一法,两个月演习,而且「须讨论用法之源,庶久而无失忘矣」。最后是《九章》二百四十六问:方田、粟米一日过一遍;衰分功在立衰,少广全类合分,商功皆是折变,均输取用衰分互乘,每章三日;盈不足、方程、勾股用法颇杂,每章四日。全部加起来二百五十多天,不到一年。这不是一张书单,是一张带工时的课程表——什么时候学新的、什么时候只是练熟、哪一步必须追问道理,都写了出来。十三年前编《详解九章算法》时,他已经做过同一件事的另一半:把《九章》那二百四十六问按方法重新分成九类(乘除、分率、合率、互换、衰分、叠积、盈不足、方程、勾股),附在书后叫《纂类》。理由是一样的:书原来按田、粟、税、工分,学的人却要按「用什么法」找。

这不是一张书单,是一张带工时的课程表。学相乘一日、温习五日;学商除一日、温习半月;《五曹》《应用算法》两本书每天做两三问,两个月。他还顺手写明了为什么减法要贴着加法学:「加法乃生数也,减法乃去其数也,有加则有减,凡学减必以加法题答考之,庶知其源。」分数那一段排得最长,理由是「治分乃用算之喉襟也」;开方是大节目,例有七体,一日学一法,再用两个月演习,而且「须讨论用法之源,庶久而无失忘矣」——练熟不算完,还得追问这个法子为什么行。最后是《九章》二百四十六问,按章排日:方田、粟米一日过一遍,衰分、少广、商功、均输每章三日,盈不足、方程、勾股用法颇杂,每章四日。日数都是原文里的,加起来 257 天;他自己没有加总过这个数。

这张表为什么没有失传

贾宪的开方作法本源图,原书早就没了——它留到今天,中间隔着一次转录、一部类书和一次朝鲜刻本。

今天中文里叫杨辉三角的那张表,杨辉自己说得很清楚不是他的:在《详解九章算法》里他把它抄了下来,注明「出《释锁算书》,贾宪用此术」。贾宪是十一世纪的人,一般说他是北宋天文学家楚衍的学生,做过左班殿直;《释锁算书》与《黄帝九章算经细草》都失传了,连生卒年都没有留下。所以这张表能到今天,靠的是一条极细的线:贾宪写下,杨辉 1261 年转录进《详解九章算法》;可这部书本身后来也散了,明初《永乐大典》卷一六三四三、一六三四四把残存的部分抄了进去;《永乐大典》大半毁于兵火与劫掠,而恰好留下的这一册今天藏在剑桥大学图书馆;清代从中辑出,1842 年郁松年刻进《宜稼堂丛书》。他的另外三种书走的是另一条路:1378 年余氏勤德堂刻过一次,中国的本子后来也亡了,1433 年朝鲜庆州府照着翻刻的那一部反倒成了现存最早的本子;日本方面则说关孝和 1661 年见到之后亲手传写了足本。一个人一辈子写了五种二十一卷,两条路各断过一次,两次都是靠别处的抄手接住的。他被记住的那个名字,其实是一次转录的名字。他自己大概不会太在意这件事。那部书的序里,他把自己做的事说得明明白白:恐问隐而添题,解见法隐而续释——题目问得不清楚就添一道,解法说得不明白就再释一遍;凡题法解白不明者,别图而验之。

故事展签故事展签:他被记住的那个名字,其实是一次转录的名字。

传承

他的工作没有留在十八世纪——每条链的终点,都是你今天正在使用的东西。

贾宪的开方作法本源图(原书失传)杨辉 1261 年把它转录进《详解九章算法》二项式系数与组合计数:抽样方案、纠错码里挑校验位,都要数这张表
沈括的隙积术三角垛、四隅垛:高阶等差级数一次求和今天的算法复杂度与数值积分里那句「n 立方除以六」
刘益的带益隅开方同一块田问八遍,八个方程配八种解法今天的求解器:先把问题化成方程,再逐位逼近——数值求根的日常
算筹的逐位乘除求一、九归、加减代乘除,六百道现成的题珠算口诀,以及芯片里用移位和加法代替乘法的器件设计
洛书二十来幅纵横图,以及它们的造法组合设计与实验设计:正交表排出质检与 A/B 测试的方案

语录

先念九九合数,一一如一至九九八十一,自小至大,用法不出于此。

—— 《乘除通变本末》卷上《习算纲目》开篇 · 肖像位那一页的正文头一句就是它

恐问隐而添题,解见法隐而续释……凡题法解白不明者,别图而验之。

—— 《详解九章算法》自序,景定二年(1261)· 他把自己的编书办法一条条写在了序里

矧此算无定法,惟理是用已矣。

—— 《乘除通变算宝》卷中《算无定法详说》 · 法子没有一定的,看道理该用哪个就用哪个

治分乃用算之喉襟也。

—— 《习算纲目》论分数 · 所以那一段他排了最长的课:日习一法,不旬日而周知,再用两个月温习