纳皮尔的骨头

纳皮尔的骨头(英语:Napier's bones)是苏格兰数学家约翰纳皮尔发明的一种用来计算乘法除法,类似算盘的工具。由一个底座及九根圆柱(方柱)组成,可以把乘法运算转为加法,也可以把除法运算转为减法。更为进阶的用法也可以开平方根

底座跟柱子

纳皮尔的骨头在清初传入中国,数学家梅文鼎在《梅氏丛书辑要》中最先介绍纳皮尔的骨头,梅氏称之为“筹算”。后来戴震著作《策算》也叙述了这种算法[1]

清代骨质算筹。中国财税博物馆藏。

简介

底座左边的数字由上而下是1-9。先将之称为n。

每根圆柱又分为十格,下面九格有自左下而右上的斜线。最上面的格子写着1-9的数字,姑且称为k,代表着这根柱子的编号。编号下面的数字则是由k乘上横排相对应的n得到的,十位数摆左上角,个位数摆右下角。

乘法运算

举例说明如何用纳皮尔的骨头进行乘法运算。

46785399乘以7

1.把编号4,6, 7,8, 5,3, 9,9的圆柱依序放入底座。

2.如下图将结果相加即得到乘积(记得要进位)。

 

46785399乘以96431

1.把编号4,6, 7,8, 5,3, 9,9的圆柱依序放入底座。

2.将46785399乘以9,6, 4,3, 1分别用上述方法一条一条算出来。

3.接着用直式加法把数字加起来。

 

除法运算

同样举例说明。

46785399除以96431

1.把除数(96431)编号的柱子摆入底座。

2.如下图所示把96431乘以1-9的结果写出来。

3. 46785399从左边六位开始看,下面写上小于467853但最大的96431k。

4.用467853去减96431k(此例中k=4),得到的数字写下面。

5.把上面的数字(9)移下来,如同长除法般重复进行此动作。

6.最后得到一个比96431还小的数,为余数。

7.如有需要,可以一直进行除法工作以得到小数点位数。

 

开平方根

用来开平方根的纳皮尔的骨头会用到第十根柱子,上有三个直排。第一排上有数字1-9的平方,第二排是数字2,4, ...,18,第三排则是1-9。

  1 2 3 4 5 6 7 8 9
1 0/1 0/2 0/3 0/4 0/5 0/6 0/7 0/8 0/9 0/1     2   1
2 0/2 0/4 0/6 0/8 1/0 1/2 1/4 1/6 1/8 0/4     4   2
3 0/3 0/6 0/9 1/2 1/5 1/8 2/1 2/4 2/7 0/9     6   3
4 0/4 0/8 1/2 1/6 2/0 2/4 2/8 3/2 3/6 1/6     8   4
5 0/5 1/0 1/5 2/0 2/5 3/0 3/5 4/0 4/5 2/5   10   5
6 0/6 1/2 1/8 2/4 3/0 3/6 4/2 4/8 5/4 3/6   12   6
7 0/7 1/4 2/1 2/8 3/5 4/2 4/9 5/6 6/3 4/9   14   7
8 0/8 1/6 2/4 3/2 4/0 4/8 5/6 6/4 7/2 6/4   16   8
9 0/9 1/8 2/7 3/6 4/5 5/4 6/3 7/2 8/1 8/1   18   9

求出46785399的平方根

1.把46785399分为两位两位一组,46 78 53 99。(如果奇数位数,如83559,写成8 35 59)

2.从最左边那组,46,开始。找出比这数最小的完全平方数,是在第六横排上的36。

3.因为是从第六横排上挑出来的,所以答案的第一位是6。

4.找到第十根柱子上的第六横排第二直排,12,然后把1跟2的柱子放在底座上。

5.用46减去36得到10,然后把上面下一组的78移到10的右边。

  1 2
1 0/1 0/2 0/1     2   1
2 0/2 0/4 0/4     4   2
3 0/3 0/6 0/9     6   3
4 0/4 0/8 1/6     8   4
5 0/5 1/0 2/5   10   5
6 0/6 1/2 3/6   12   6
7 0/7 1/4 4/9   14   7
8 0/8 1/6 6/4   16   8
9 0/9 1/8 8/1   18   9
         _____________
        √46 78 53 99    = 6
         36
         --
         10 78

7.找出比1078还要小但最大的数,在此第八横排的1024是最大的:

 0/8 1/6 6/4 → 1024

8. 8为答案的下一位数,写在6旁边,然后把1078减去1024得到54。

  1 2 (value)
1 0/1 0/2 0/1     2   1 121
2 0/2 0/4 0/4     4   2 244
3 0/3 0/6 0/9     6   3 369
4 0/4 0/8 1/6     8   4 496
5 0/5 1/0 2/5   10   5 625
6 0/6 1/2 3/6   12   6 756
7 0/7 1/4 4/9   14   7 889
8 0/8 1/6 6/4   16   8 1024
9 0/9 1/8 8/1   18   9 1161
         _____________
        √46 78 53 99    = 68
         36
         --
         10 78
         10 24
         -----
            54

9.把之前的12乘上10,再加上第十根柱子第八横排第二直排的数,16,得136。

10.重复上述步骤可得到结果:

  1 3 6
1 0/1 0/3 0/6 0/1     2   1
2 0/2 0/6 1/2 0/4     4   2
3 0/3 0/9 1/8 0/9     6   3
4 0/4 1/2 2/4 1/6     8   4
5 0/5 1/5 3/0 2/5   10   5
6 0/6 1/8 3/6 3/6   12   6
7 0/7 2/1 4/2 4/9   14   7
8 0/8 2/4 4/8 6/4   16   8
9 0/9 2/7 5/4 8/1   18   9
         _____________
        √46 78 53 99    = 68
         36
         --
         10 78
         10 24
         -----
            54 53

11.再次找到比5453还要小但最大的数,为4089。5453减去4089为1364,并把3写在68的旁边。

  1 3 6  
1 0/1 0/3 0/6 0/1     2   1 1361
2 0/2 0/6 1/2 0/4     4   2 2724
3 0/3 0/9 1/8 0/9     6   3 4089
4 0/4 1/2 2/4 1/6     8   4 5456
5 0/5 1/5 3/0 2/5   10   5 6825
6 0/6 1/8 3/6 3/6   12   6 8196
7 0/7 2/1 4/2 4/9   14   7 9569
8 0/8 2/4 4/8 6/4   16   8 10944
9 0/9 2/7 5/4 8/1   18   9 12321
         _____________
        √46 78 53 99    = 683
         36
         --
         10 78
         10 24
         -----
            54 53
            40 89
            -----
            13 64

12.把3乘2的结果加上之前136的十倍,得到1366。把1,3, 6,6的版子摆入底座。

13.再度重复上述步骤。现在比最底下的数小的数是第九横排的123021。

  1 3 6 6  
1 0/1 0/3 0/6 0/6 0/1     2   1 13661
2 0/2 0/6 1/2 1/2 0/4     4   2 27324
3 0/3 0/9 1/8 1/8 0/9     6   3 40989
4 0/4 1/2 2/4 2/4 1/6     8   4 54656
5 0/5 1/5 3/0 3/0 2/5   10   5 68325
6 0/6 1/8 3/6 3/6 3/6   12   6 81996
7 0/7 2/1 4/2 4/2 4/9   14   7 95669
8 0/8 2/4 4/8 4/8 6/4   16   8 109344
9 0/9 2/7 5/4 5/4 8/1   18   9 123021
         _____________
        √46 78 53 99    = 6839
         36
         --
         10 78
         10 24
         -----
            54 53
            40 89
            -----
            13 64 99
            12 30 21
            --------
             1 34 78

14.再把9加到答案当中,得到整数答案6839。

我们把题目给的数46785399用完了,但是底下还有余数13478。这意味着6839只是答案的整数部分, 的实际值应当比6839大,比6840小。如果有需要继续做下去以得到小数部分的话,下一组的两个数字就要用00:

  1 3 6 7 8
1 0/1 0/3 0/6 0/7 0/8 0/1     2   1
2 0/2 0/6 1/2 1/4 1/6 0/4     4   2
3 0/3 0/9 1/8 2/1 2/4 0/9     6   3
4 0/4 1/2 2/4 2/8 3/2 1/6     8   4
5 0/5 1/5 3/0 3/5 4/0 2/5   10   5
6 0/6 1/8 3/6 4/2 4/8 3/6   12   6
7 0/7 2/1 4/2 4/9 5/6 4/9   14   7
8 0/8 2/4 4/8 5/6 6/4 6/4   16   8
9 0/9 2/7 5/4 6/3 7/2 8/1   18   9
         _____________
        √46 78 53 99    = 6839.
         36
         --
         10 78
         10 24
         -----
            54 53
            40 89
            -----
            13 64 99
            12 30 21
            --------
             1 34 78 00

这些步骤可以一直重复使得到的答案无限逼近正解。

最后,如果要求平方根的数是小数的话,将数字分组的时候整数部分跟小数部分要分开分组;整数部分如常,小数部分则是方向相反。

例如数字54782.917的分组情况为:

5 47 82 . 91 7

接着便可开平方。

参考文献

  1. ^ 吴文俊主编<《中国数学史大系》第七卷 156-158页