16世纪著名的教科书《算法通宗》的首页插图。书中的“难题之师徒问答”一章在数学计算中使用了计算盘。
中国文明起源于公元前2000年长江和黄河两岸的夏朝。商朝从公元前1520年延续到公元前1030年 ,后来被周朝取而代之。公元前8世纪起,周朝逐渐失去它的领地。大约在公元前400年到公元前200年这一期间,出现了诸侯割据、战火不断的局面。这就是战国时代。我们找到的第一本纯数学教科书《周髀算经》就是这一时期的产物。这一时代是孔子的时代。他与其他的学者一样周游列国,过着四处游说、动荡不安的生活。在此之后,秦始皇统一中国,重新修建长城,并开始了焚书坑儒。到了约公元前200—公元200年间的汉朝,学者们开始寻找没有被烧毁的文献,并经常凭着记忆进行转抄。刘徽 的具有深远影响的《九章算术》评注及赵爽等人对《周髀算经》的评注,就是这一时代的产物。下一部重要著作出现于隋唐统治下的7世纪。这时,一场教育改革使得数学成为翰林院的正式科目。当时使用的教科书是《算经十书》。该书汇集了包括《周髀算经》和《九章算术》在内的所有重要著作。直到很多世纪后该书仍有着深远的影响。同一时期,连接长江和黄河的大运河的开凿是一个史无前例的巨大工程。运河的开凿给人民带来了苦难的生活,隋朝遭到了人民的反抗,短命的它很快就被唐朝取而代之。唐朝的首都长安高度发展,成了中国与中亚的文化桥梁。它就像远在西方的国际都市巴格达一样起着重要的作用。在唐朝统治的300年间,有两项伟大的发明:火药和印刷术。我们对中国的历史考察到宋朝为止。宋朝一直持续到13世纪末。下面,我们来看一下《九章算术》。
中国人对幻方的兴趣,似乎主要是因为它与占卜有关,而不是因为它和数学有关。传说公元前3000年,大禹得到了两个幻方(纵横图表)。一个得之于从黄河腾飞出来的龙马,马背上画有从一到十组成的方阵,古人称之为“河图”。另一个得之于黄河支流的洛河里浮出来的神龟,龟壳上有由1到9的点组成的三行纵横图,古人称之为“洛书”,又称之为“九宫图”。幻方的第一个实例出自公元10世纪。到13世纪为止,对幻方的研究局限于3×3以下的方阵。从那时起,没有人再提及幻方的占卜功能。而杨辉致力于研究各种数字方阵及圆阵的数学性质。事实上,阿拉伯人从第9世纪以后开始研究幻方。最近西安出土了元朝时期(1279—1368)所做的阿拉伯幻方。
在中国数学史上,《九章算术》一直保持着重要的地位。原始的《九章算术》已经和后来加入的大量评注融为一体。3世纪的评注家刘徽就曾经提到了当时《九章算术》的内容已经被大量改写,删去了一些多余的内容并加入了新的材料。《九章算术》现存的最古老的版本写于13世纪,但这只是该书的一部分,更完整的版本写于18世纪。这与我们缺乏希腊原始资料的情况类似,只是这里的时间间隔更长。《九章算术》包括246个问题。每个问题由陈述、数值答案及解题方法三个部分组成。这里没有理论解释和证明。大部分问题来自现实生活。例如土地分割、财物分配、大型建筑物的营造等。下面我们将看一看开平方根和解方程的方法。
当时,计算主要是通过在筹算盘上放置算筹来进行的。有时筹算盘是一种带格子的板,但有些著作提到可以使用任何物体的表面做筹算盘。计算过程中主要的工作是排列算筹,这样的做法使我们可以在中断的地方继续进行计算。当计算复杂时这一点特别重要。计算结果就是筹算盘的最终模样。计算结果是用十进位值制来表示的,而数字的表示则使用了另外一种进位制:每根竖着的算筹表示1,每根横着的算筹表示5。(据史料记载)在有些资料中显示算筹的方向是可变的,但5和1总是互相垂直。这样无疑有助于使计算形象化和提高计算速度。中国人把用特殊符号表示数字5的方法沿用到算盘上。但直到16世纪,算盘的使用仍没有实现大众化。同巴比伦人一样,中国人似乎没有表示0的符号。在排列算筹时,出现零的位置应该留出一个空格,但是在写答案时似乎并没有留出空格。所以我们只有通过前后关系判断正确答案,例如是18、108还是1800。公元8世纪前后,在一本印度著作的翻译本中出现了用点表示数字0。圆形的零出现于很久以后的13世纪。同时还出现了一个适用于用算筹组合出来的“方形”零。
杨辉的《详解九章算法》(1261年)中的“断竹问题”。该书详尽地解说了《九章算术》中的计算方法。书中断竹形成的直角三角形,被用于解决与毕达哥拉斯定理相关的许多问题。
朱世杰的《四元玉鉴》(1303年)中的一页。该页说明了用矩阵寻求代数问题的数值解的方法。
开平方根和立方根(开方术),从估算根的所在区间和位数开始,然后从高位到低位逐位求值。例如在《九章算术》中计算了71824的平方根,可以看出根在200与300之间。因此,根是3位数字abc,而a等于2。剩下的工作是求b和c的值。刘徽给出了平方根的几何求法,在此方法中用特殊方法分割正方形。根的百位上数是2,从面积为71824的正方形的一个角出发,扣除一个边长为200的正方形,得到一个“曲尺形”图,然后找到与该“曲尺形”相配的最可能的10的倍数。在此例中,我们得到60。这样b就是6。从面积为71824的正方形的一个角开始,重新扣除一个边长为260的正方形,得到一个新的“曲尺形”。这一过程持续下去,直到求出所需的结果。如果答案不是整数,则持续这一过程直到得到满意的精确度。用类似的方法切割立方体,可以求得立方根。
这一几何方法实际上等价于二项式展开方法。二项式展开式的系数构成帕斯卡三角形 。在11世纪前或更早些时候起,中国人就把这一代数方法明确地作为一种计算方法加以运用。从此中国人可以求任何需要的n次根。我们不清楚帕斯卡三角形是中国人独立发现的,还是从印度文献中学来的。开平方根的每一个步骤,都需要解二次方程,同样开立方根需要解三次方程。因此,求根的方法可以用于解高次方程,而不需要通过构造“曲尺形”的几何方法。与其他的文明社会一样,当时只需求一个根即可。并且我们不清楚当时中国人是否知道高次方程有多个解,他们不是用像x这样的变量来表示方程的,而是仅仅通过数值系数来表示。他们没有考虑解的小数位数是有限的还是无限的:求解过程对两种情况同样有效,当得到满意的精确值时就结束计算。
《九章算术》还包含了多元一次方程组的求解问题。刘徽在评注中提到不借助特定的例子难以解释一般的求解方法。这一求解方法首先在筹算盘上用多元方程组的系数作矩阵,然后通过对矩阵中的系数进行处理来消去某些系数,从而得到方程组的解。这与现在所使用的以高斯命名的消元法一样。但是当时中国人没有发明矩阵和行列式的概念,所以把这些系数的排列称为阵列可能更贴切。
在《九章算术》中还有关于不定方程的重要研究。此类方程有多个解,有时有无穷多个解。书中有两类这样的问题,主要的一类是剩余问题,另一类是“百禽问题”。百禽问题频繁出现在中世纪的欧洲、阿拉伯和印度的文献中。例如在《算经十书》中有这样的问题:公鸡值5钱,母鸡值3钱,3只小鸡值1钱。如果用100钱买100只鸡,问公鸡、母鸡、小鸡各有几只。这一问题有三个答案,其中一个答案是4只公鸡、18只母鸡和78只小鸡(当时遗漏了25只母鸡、75只小鸡和0只公鸡的解)。给出的解是正确的,但解释却似是而非。
3世纪《九章算术》的评注家刘徽研究了求π的近似值的穷举法。这是由学者戴震(1724—1777)所给出的刘徽求π的方法的图解。这一张图表明如何使用内接多边形来逼近圆。
关于剩余问题,书中给出了结果和一般方法,但没有给出证明。正如在《九章算术》所述的一个问题:被3除余2;被5除余3;被7除余2,求满足这些条件的值。该书中给出了求解过程,解这一问题的关键是求3、5、7的最小公倍数。奇怪的是直到13世纪,这些问题才在秦九韶的著作中再次出现。
秦九韶出生在四川省境内的安岳县。秦九韶的父亲担任多项官职,其中做过宫廷藏书房的副主管。秦九韶在当时的国都杭州司天监学习,于1234年参加了反抗蒙古侵略者的战争,度过了10年艰苦的生活。1244年他又在建康即现在的南京任职。但就在这一年他辞去了职务,为其母亲服丧3年。可能就是在这一时期,他写了《数书九章》,该书的结构与《算经十书》类似,但比《算经十书》要精练得多。
在《数书九章》中,秦九韶给出了同余式和同余式组的解法(盈不足术)。同余式在模数计算中经常遇到。同余式的解法就是现在所知道的中国的剩余定理。秦九韶说他在杭州司天监工作期间从历法制作工匠那里学到了同余式的求解方法。但是,那些工匠只是使用了这一规则,并没有理解它。这一规则被用来解决不同循环周期的问题,例如像朔望月、回归年以及人为认定的60年的循环周期(甲子)等。事实上,即便是在5个世纪后重新发现了这一方法的高斯,也是运用了历法的循环问题的例子。我们不清楚秦九韶从哪里得到的这一规则。总之,这一工作已经超出了评注的范畴,是一个一流数学家才能做出来的开创性的工作。长期以来,中国有用计算来解决现实问题的传统,秦九韶成了革新这一传统的范例。
朱世杰的《四元玉鉴》(1303年)的首页插图。展示了所谓的帕斯卡三角形的模样。该书写于帕斯卡出生之前3个世纪。