数学史专题
1899年,在河南省安阳地区小屯村的考古遗址有了重大发现。那里发现了数千片刻有古代中国文字的骨头和龟甲。该遗址曾是公元前14世纪起晚商(晚商又称殷)诸王的都城。商朝最后十二位君王在此统治至约公元前1045年,那里发现的骨头和龟甲曾被用作宗教仪式的一部分。问题被刻在龟甲的一面,然后将龟甲的另一面置于火上加热,出现的裂纹被解释为来自古代祖先对问题的回答。
插图:oracular.gif ↗
就了解古代中国数字系统而言,这些发现的重要性在于,许多铭文包含有关战死人数、战俘人数、祭祀次数、狩猎所杀动物数量、天数或月数等的数字信息。用于表达这些数字信息的数字系统基于十进制,本质上兼具加法性和乘法性。以下是所用符号的部分选录。
所谓具有乘法性质,是指200由2的符号和100的符号表示,300由3的符号和100的符号表示,400由4的符号和100的符号表示,等等。类似地,2000由2的符号和1000的符号表示,3000由3的符号和1000的符号表示,4000由4的符号和1000的符号表示,等等。还有一个表示10000的符号,我们未在上图中包括,但它呈蝎子形状。然而,尚未发现更大的数字,商代骨头和龟甲上发现的最大数字是30000。
这个系统的加法性质是,符号并置表示加法,因此4359由表示4000的符号后接表示300的符号,后接表示50的符号,后接表示9的符号来表示。4359会这样出现:插图:4359.gif ↗
现在这个系统不是位值制,所以它不需要零。例如,数字5080表示为:插图:5080.gif ↗
因为我们在上面没有举例说明许多数字,这里再给出一个中国甲骨文数字的例子。这里是8873:插图:8873.gif ↗
关于这套数字系统,有许多引人入胜的问题值得我们思考。尽管数字1、2、3、4的表示几乎无需解释,但为何其他数位使用特定符号的问题却远不那么显而易见。人们提出了两种主要理论。
第一种理论认为这些符号是表音的。所谓表音,是指既然数字九看起来像一个鱼钩,那么古汉语中“九”这个词的发音可能接近“鱼钩”一词的发音。同样,1000的符号是一个“人”,所以古汉语中“千”这个词的发音可能接近“人”一词的发音。以英语为例,数字10读作“ten”。这听起来像“hen”,所以用母鸡的符号可能合适,或许加以修改,使读者知道该符号代表“十”而非“母鸡”。
关于这些符号的第二种理论源于这样一个事实:数字,实际上商代晚期的一切书写,都仅用作宗教仪式的一部分。我们已在上文解释了占卜者——当时的祭司——如何在仪式中使用这些刻辞。这一理论认为,数字符号具有宗教意义。当然,可能有些符号由第一种理论解释,而另一些则由第二种理论解释。再者,像蝎子这样的符号可能仅仅是因为成群的蝎子对当时的人来说意味着“大量”。也许100的符号代表一个脚趾(它确实看起来像一个脚趾),如果当时的人用手指计数到十,然后每个脚趾代表一百,再然后“人”代表一千,即数遍了身体的所有部位,或许就可以解释这一点。
我们所展示的这些符号随时间有所演变,但形式出奇地稳定。然而,从公元前4世纪起,随着算板的投入使用,第二种形式的中国数字开始被使用。算板由带有行和列的方格盘组成。数字用竹制或象牙制的小棍表示。数字在一行中形成,个位放在最右列,十位放在左边相邻列,百位再放在左边相邻列,依此类推。在算板上以这种方式表示数字的最重要特性是,它是一种自然的位值制。最右列的一根棍代表1,而左边相邻列的一根棍代表10,依此类推。
插图:counting_board.gif ↗
现在,从1到9的数字必须用算筹摆出,人们找到了一种相当自然的方法。
这里有两种可能的表示法:
这种记法最大的问题是可能导致混淆。||| 是什么?它可以是 3,也可以是 21,也可以是 12,甚至可以是 111。算筹沿行稍有移动,或者没有放在方格的正中央,都会导致表示出错误的数。中国人采用了一种巧妙的方法来避免这个问题。他们同时使用上面图示中给出的两种数字形式。在个位上使用下面一行的形式,而在十位上使用上面一行的形式,如此交替下去。例如 1234 在算板上表示为:插图:1234.gif ↗,而 45698 表示为:插图:45698.gif ↗
在算板上仍然不需要零,因为一个空位只需留空即可。数字的交替形式又有助于表明确实有一个空位。例如 60390 将表示为:插图:60390.gif ↗
古代算术文献描述了如何在算板上进行算术运算。例如孙子,在Sunzi suanjingⓉ(《孙子算经》)的第一章中,给出了使用算筹进行乘法、除法和开平方的说明。
Xiahou Yang的Xiahou Yang suanjingⓉ(《夏侯阳算经》)写于公元5世纪,其中指出,要将一个数乘以10、100、1000或10000,只需将算板上的算筹向左移动1、2、3或4个方格。同样,要除以10、100、1000或10000,则将算筹向右移动1、2、3或4个方格。这里重要的是,夏侯阳似乎不仅理解10的正幂,还理解作为10的负幂的小数分数。这说明了使用算板数字的意义。
如今,中国的算板数字不仅仅用于算板上,尽管这显然是它们的起源。它们被用于书面文本,特别是数学文本中,而位值记数法的力量促使中国取得了重大进展。特别是“天元”或“系数阵列法”或“天元术”是从数字的算板表示发展而来的。这是一种方程的记法,李冶给出了该方法的最早来源,尽管它必定在他之前就已发明。
大约在公元14世纪,算盘在中国开始使用。当然,这像算板一样,似乎是中国的发明。在许多方面它与算板相似,不同之处在于不是用算筹来表示数字,而是用滑动在金属丝上的珠子来表示。算盘的算术规则与算板类似(甚至可以计算数字的平方根和立方根),但看来算盘几乎只被商人使用,他们只使用加法和减法运算。
插图:abacus.gif ↗
这是一个算盘的图示,显示数字46802。
对于4及以下的数字,将下部所需数量的珠子向上滑动到横梁。例如,在最右边的金属丝上表示二。对于五或以上,将横梁上方的一个珠子向下滑动(代表5),并将1、2、3或4个珠子向上滑动到横梁,分别代表数字6、7、8或9。例如,在从右边数第三根金属丝上表示数字8(上方珠子代表5,下方三个珠子)。
人们可能会合理地问,为什么每根线上都有足够的珠子来表示15。这是为了使中间运算更容易,从而在计算过程中,实际上可以在单根线上存储大于9的数字,尽管到最后这样的“进位”必须转移到左边的线上。