原来金庸的武侠江湖也有这么多数学故事
大师远去,再无大师,您一路走好
“飞雪连天射白鹿,笑书神侠倚碧鸳”
老爷子一生总共写了15本武侠小说,他是武侠小说的一代宗师,对诸子百家、佛经道藏、诗词歌赋、医卜星象等等都了然于胸,其作品也被认为是中国文化的瑰宝。
除去这些,金庸小说中亦包含了浓厚的数学文化
如《连城诀》中,将宝藏隐藏在一串数字里;
“九阴真经”“独孤九剑”“六脉神剑”这些绝世神功都含有数字9或者6;
《射雕英雄传》,瑛姑研究的算术题……
其实仔细研究,不难发现,数学和文学是相通的,而里面蕴涵的信息之精妙。
现在,我们以《射雕英雄传》瑛姑算算术这一小说情节为例,一起来探讨下,金庸的武侠江湖中的数学故事。
古人是如何开平方的
在《射雕英雄传》之中就有这么一段情节:
黄蓉坐了片刻,精神稍复,见地下那些竹片都是长约四寸,阔约二分,知是计数用的算子。再看那些算子排成商、实、法、借算四行,暗点算子数目,知她正在计算五万五千二百二十五的平方根,这时“商”位上已记算到二百三十,但见那老妇拨弄算子,正待算那第三位数字。黄蓉脱口道:“五!二百三十五!”
那老妇吃了一惊,抬起头来,一双眸子精光闪闪,向黄蓉怒目而视,随即又低头拨弄算子。这一抬头,郭、黄二人见她容色清丽,不过四十左右年纪,想是思虑过度,是以鬓边早见华发。
那女子搬弄了一会,果然算出是“五”,抬头又向黄蓉望了一眼,脸上惊讶的神色迅即消去,又见怒容,似乎是说:“原来是个小姑娘。你不过凑巧猜中,何足为奇?别在这里打扰我的正事。”顺手将“二百三十五”五字记在纸上,又计下一道算题。
这段故事当中,郭靖与黄蓉被铁掌派追杀,郭、黄二人无意中闯到瑛姑的小屋中,正巧撞见瑛姑正在算这样一道开平方的问题。
那么小说当中,宋朝人用来计算平方根的方法是什么呢?我们今天就来介绍一下。
增乘开方法
小说中所提到的这种计算平方根的方法叫做增乘开方法,是由我国古代数学家贾宪在十一世纪中叶所提出来的,其方法与意大利数学家鲁裴尼(P.Ruffini)和英国数学家霍纳(W.G.Horner)所提出来的高次方程数值解法相同,但比他们早了750年。
那么增乘开方法是如何来计算一个数的平方根的呢?
01
举个例子
我们就以小说中瑛姑所计算的求55,225的平方根这个问题为例(为了便于理解我们就直接用阿拉伯数字来表示,就不用算筹啦。
首先我们把55,225放入实这一行
1.由于55,225是一个五位数,因此我们估算商应当是一个三位数,并且由于万位上的数是5,所以估计商的百位数是2(200的平方是40,000,而300的平方是90,000,所以商的百位数一定是2)。
2.令借为1,法的值则为借乘商(1×2)。
3.更新实,使之为原实减去商乘法(5-2×2=1),则新实为1。
4.更新法为商乘借加到旧法上(2+2×1=4)。
5.将法后移一位,借后移两位。
02
再次重复1- 5的循环
1.估算商的十位为3(3×4,000=12,000<15,225)。
2.更新法,为原法加十位商乘借(4,000+3×100=4,300)。
3.更新实,使之为原实减去商乘法(15,225-4,300×3=2,325),则新实为2325。
4.更新法为商乘借加到旧法上(43+3×1=46)。
5.将法后移一位,借后移两位。
03
再一次重复这五个步骤
1.估算商的个位为5。
2.更新法,为原法加个位商乘借(460+5×1=465)。
3.更新实,使之为原实减去商乘法(2325-465×5=0)。
到这一步我们惊喜的发现,实的值为0了,也就是说我们最后解出来了55,225的平方根为235。
我们可以再验证一下,计算235的平方。
发现235的平方果然是55,225,也就是说我们的计算结果是正确的。
04
增乘开方法的步骤
总结一下,增乘开方法其实一共五个步骤:
估算商;
用商乘借加到法上;
实减去商乘法;
再用商乘借加到法上;
法后移一位,借后移两位。
然后只要不断地循环上述步骤,直到实为0,此时的商就是我们所求的平方根的值啦。虽然步骤比较抽象,但是对照着例子还是比较容易理解的。
如何用增乘开方法开更高次方
上面我们说到,郭靖黄蓉二人误打误撞来到了瑛姑的小屋,看到她正在计算一道开平方的问题,我们继续来看小说后面的案例:
这次是求三千四百零一万二千二百二十四的立方根,她刚将算子排为商、实、方法、廉法、隅、下法六行,算到一个“三”,黄蓉轻轻道:“三百二十四。”那女子“哼”了一声,哪里肯信?布算良久,约一盏茶时分,方始算出,果然是三百二十四。
接下来瑛姑又计算了一道开立方的问题,那么如何来开一个数的立方根呢?其实之前我们所讲的增乘开方法,不只能用来开平方根,还能用来开立方以及更高次方的根。我们接着介绍一下如何用增乘开方法开更高次的平方。
01
小说中的bug
书中所写故事的时代背景是写到成吉思汗去世为止,成吉思汗死于公元1227年,而关于贾宪的增乘开方法的提出时间,所能找到的最早的记载是杨辉的《详解九章算法纂类》,该书写于1261年。
也就是说,瑛姑所用的开平方的方法,如果按照时间关系上来看,所用的应该是时间更早的《九章算术》中的开平方的方法;
但如果根据书中所写的瑛姑把算筹摆成“商、实、法、借”四行的话,就应该用的是贾宪的增乘开方法了。
而瑛姑所用的开立方的方法,将算子摆为六行,又是《九章算术》的方法了,用增乘开方法的话只需要摆成五行就够了。
增乘开方法是贾宪在《九章算术》中开方的方法的基础上,对传统方法进行改进,并推广到了开更高次方的情况,因此,我们还是主要来介绍增乘开方法。
02
先复个习
我们先来复习一下,之前所讲的增乘开方法的五个步骤:估算商;用商乘借加到法上;实减去商乘法;再用商乘借加到法上;法后移一位,借后移两位。
只要不断循环这五个步骤,直到实变为0,所得到的商就是我们的结果啦。
开平方与开立方的方法是类似的,我们介绍完开立方的方法之后,再经过类比,推广出开任意次方的方法。
03
举个例子
接下来我们还是以小说中的这道题为例来计算,为了便于理解,我把每一步计算所变化的数框了起来~
先将被开方数放到实的位置上,并将1置于下法。
将下法的1每次向前移动两格,共移动了三次,说明商应当是一个三位数。
接下来正式开始计算啦~
1.估算商的值为3(3的三次方为27,小于34)。
2.用商乘下法置于廉(3×1=3),再用商乘廉置于方(3×3=9)。
3.实减去商乘方(34-3×9=7)。
4.商乘下法加到廉(3×1+3=6),商乘廉加到方(9+3×6=27)。
再用商乘下法加到廉(3×1+6=9)。
5.将方、廉、下法一次向后退1、2、3格。
然后我们就可以开始下一个循环啦。
1.估计商的十位为2。
2.商乘下法加到廉,商乘廉加到方。
3.实减去商乘方。
4.商乘下法加到廉,商乘廉加到方,商乘下法加到廉。
5.将方、廉、下法一次向后退1、2、3格。
第二个循环结束,开始第三遍啦~
1.估计商的个位为4。
2.商乘下法加到廉,商乘廉加到方。
3.实减去商乘方。
我们惊喜的发现,实变成了0,也就是说,我们所求的34,012,224的立方根就是324啦~
04
开立方的步骤
我们总结一下,开立方其实也是五个步骤:
估算商;
商乘下法加到廉,商乘廉加到方;
实减去商乘方;
商乘下法加到廉,商乘廉加到方,商乘下法加到廉;
将方、廉、下法一次向后退1、2、3格。
和开平方的步骤一样,接下来只要不断地循环以上步骤,直到实为0,此时的商便是所求的根啦~
05
推广到开任意次方的步骤
我们先把开平方和开立方的步骤放到一起来对比一下。
从这个表格中我们能够非常容易的找到规律,从而总结出用增乘开方法开任意正整数次方的方法。
假设我们要求一个数的n次方(n为正整数),那么我们共需要写出n+2行,前两行分别是商和实,其余的n行我们用N1、N2、···、Nn来表示。
将被开方数放入实这一行,在Nn上的最后一格放上一个1,将Nn上的1向左移动,每次移动n-1格,在下一次移动便会超出实的时候停止,此时1移动的次数便是商的位数。
接下来,我们就可以开始进行五个步骤循环的计算啦~
1.估算商。估计出一个商的第一位数的值,设它为a1,a1的n次方应当小于1上面的实的值,而a1+1的n次方是大于它的。
2.依次从下到上填入数字,Nn中已经填入了1,接下来
Nn-1=a1×1
Nn-2=a1×Nn-1
……
N1=a1×N2
3.更新实。新的实=原实-N1×a1
4.更新从N1到Nn。
第1轮:
Nn-1=a1×1+Nn-1
Nn-2=a1×Nn-1+Nn-2
……
N1=a1×N2
第2轮:
Nn-1=a1×1+Nn-1
Nn-2=a1×Nn-1+Nn-2
……
N2=a1×N3
如此不断循环下去,一直重复到第n-2轮,只剩下一步,Nn-2=a1×Nn-1+Nn-2为止。
5.将从N1到Nn上的数依次向后移动1、2、3、...n个格。
接下来只要重复上述几个步骤,直至实变为0为止。
如果是无法开出整数的情况的话,实便永远除不尽,便可以不断地重复上述步骤,得到后面无穷无尽的小数啦。
幻方、九宫八卦与河图洛书
接下来我们继续来看小说中的内容,情节并没有任何进展,郭黄二人还在瑛姑的小屋中,黄蓉和瑛姑开始讨论关于幻方的内容
说是讨论,其实是学霸黄蓉对学渣瑛姑的碾压
首先是瑛姑给黄蓉出了一道三阶幻方的问题,被黄蓉嘲笑说你这题太小儿科我根本不放在眼里,原文
那女子沮丧失色,身子摇了几摇,突然一交跌在细沙之中,双手捧头,苦苦思索,过了一会,忽然抬起头来,脸有喜色,道:“你的算法自然精我百倍,可是我问你:将一至九这九个数字排成三列,不论纵横斜角,每三字相加都是十五,如何排法?”
黄蓉心想:“我爹爹经营桃花岛,五行生克之变,何等精奥?这九宫之法是桃花岛阵图的根基,岂有不知之理?”当下低声诵道:“九宫之义,法以灵龟,二四为肩,六八为足,左三右七,戴九履一,五居中央。”边说边画,在沙上画了一个九宫之图。那女子面如死灰,叹道:“只道这是我独创的秘法,原来早有歌诀传世。”
那我们就来看一下瑛姑出的这道九宫图。
01
九宫图(三阶幻方)
瑛姑所出的题目呢其实就是,将1~9这9个数填入下面的三乘三的表格中,使得横、竖、斜相加之和都是十五。
可能很多同学觉得这个太简单了,我小学的时候就会做了,确实这个问题难度不大,不过黄蓉所说的口诀还是蛮有意思的,我们来看一下:
九宫之义,法以灵龟,二四为肩,六八为足,左三右七,戴九履一,五居央。
啥意思咧,意思是将这个九宫图当成一个龟,2和4放在龟的肩膀上,6和8放在龟的脚上,左边是3,右边是7,头上是9,尾巴是1,5在中间。
需要注意的是,古代写字是从右往左写的,所以“二四为肩,六八为足”也是要按照从右往左写的顺序来的。
我们按照口诀来画到龟龟上,就是这样了:
把它整理到表格上:
其实这个图形,就是我们古代所说的洛书,就是封面图的这个样子:
这个图中小圆圈的数量就分别代表了所对应的数字;
据传说,有神龟从洛水中出现,背上驮着的就是洛书,伏羲氏得到它据此画出了八卦(河出图,洛出书,圣人则之。)
下面这个图就是神龟背上驮着洛书的样子:
02
四四图(四阶幻方)
接下来,黄蓉又继续往下介绍了关于幻方的内容:
那女子面如死灰,叹道:“只道这是我独创的秘法,原来早有歌诀传世。”黄蓉笑道:“不但九宫,即使四四图,五五图,以至百子图,亦不足为奇。就说四四图罢,以十六字依次作四行排列,先以四角对换,一换十六,四换十三,后以内四角对换,六换十一,七换十。这般横直上下斜角相加,皆是三十四。”那女子依法而画,果然丝毫不错。
我们来按照黄蓉所说的方法来填一下:
首先把数字从一到十六顺次放入表格中,
接下来将四个角分别对换位置:
再将里面的四个角互相交换位置:
这样我们所得到的幻方的横、竖、斜相加都是34啦~
03
九宫八卦图
说完这些,黄蓉又继续介绍:
黄蓉道:“那九宫每宫又可化为一个八卦,八九七十二数,以从一至七十二之数,环绕九宫成圈,每圈八字,交界之处又有四圈,一共一十三圈,每圈数字相加,均为二百九十二。这洛书之图变化神妙如此,谅你也不知晓。”举手之间,又将七十二数的九宫八卦图在沙上画了出来。
这个九宫八卦图看起来有点难,其实呢只需要圈内的数字相加起来相等就好了,并不需要横、竖、斜相加相等,所以也不是很难啦~
这一题小说里没有说如何来解,那我们就一起来解解看好了。
先按照书中所说的内容把图画出来:
如图所示,八个数围成一个圈,九宫格的九个圈加上交界处的四个圈一共十三个圈,我们要在这十三个圈中填入72个数,使得每个圈中的数字之和为292。
仔细观察这个图,我们能够发现我们可以把每斜着的两个数看做一组,
这样这个图就可以简化成这样:
只要我们能让这个图中每个中的数字相等,也就是每两个数的和相等,就能够满足题里的要求啦~
想让各组数相等,可就简单的多了, 只需要把从1到72这些数首尾配对、两两一组,即1与72一组,2与71一组,以此类推,再把各组数分别填入就好啦,我们最后得到的答案是这样的:
04
总结一下
这次我们主要介绍了三阶幻方(洛书)、四阶幻方(四四图)以及九宫八卦图这三种幻方。
关于幻方,其实是有着通用的解法的,通常要分为奇数阶、单偶数阶和双偶数阶这三种情况来讨论,不过具体解法比较复杂篇幅有限,我们就以后有机会再来介绍好啦~
参考资料:
[1] 金庸. 射雕英雄传[M]. 北京: 生活·读书·新知三联书店, 1994.
[2] 梅荣照. 贾宪的增乘开方法——高次方程数值解的关键一步[J]. 自然科学史研究, 1989, (01)::1-8.
[3] 李兆华. 增乘开方法与贾宪三角形[J]. 中等数学, 1986, (1):44-45.
END
往期精彩回顾
数学家的怪癖程序员眼中的天龙八部
走进火山口,是惊吓还是惊喜?