139-2217-0856
 
客服微信

zhuxinsuanjieshao

珠心算介绍

华夏数学文化的明珠 ──中国古代算法体系与珠算
时间:2024-04-30 22:42:50 点击:
 

来源:《珠算与珠心算》

李文林

我国著名数学家吴文俊院士首先明确提出:“从历史上来看,数学的发展有两条路线。一条是以希腊为主的路线,通过阿拉伯世界影响到欧洲;还有一条从我们中国起源,通过印度进而影响到世界数学的发展。”这是吴先生第一次明确提出数学发展的两条主线。

20230116220521-1-1740.png

吴文俊院士在他的第一篇数学史论文中,画了上面这张图来表示数学史发展的两条路线。希腊的路线,数学主要是证明定理,逻辑推理,我们今天把它叫做演绎倾向;而中国古代数学是以创造算法,特别是解各种方程的算法为主要活动的。因而我进行了如下概括:一个是演绎倾向,主要是证明定理;另一个是算法倾向,主要是创造与诠释算法。

中国古代数学有比较明显的算法化、机械化的特征。这里所说的算法,不只是简单的加减乘除运算,还包括各种算法的创造,它们是为了解决一整类实际或科学问题而概括出来的、带有一般性的计算程序,并且通常力求程式化,就是说便于机械化地实施。

什么叫机械化?在数学中,机械化有三个特性:一是明确性,就是说完成一步,下一步怎么走,是非常确定、没有二义性的;第二是有限性,就是说有限步内必能获得确定的结果;第三是可迭代性,即可以重复迭代进行。

古代与中世纪中国数学的这种算法倾向,与欧几里得几何演绎的倾向并不是绝对矛盾的,它们相辅相成,在数学发展史上是缺一不可的。东方的数学在文艺复兴前夕,通过阿拉伯地区传播到了欧洲,跟希腊式的数学交汇融合,孕育了近代数学。

以上是我讲的第一点,也就是中国古代的数学与希腊数学本来就是两个体系。下面我要讲第二个部分,中国古代的算法体系。中国古典数学算法发自秦汉,至宋元于高峰,并形成了强大的算法体系。

我提出的“算法体系”这个概念,我认为主要应该包括三大要素:第一就是各类算法;第二就是计算工具;第三是计算技术。这里的“计算技术”不是指硬件的计算技术,而主要是指计算方法、语言等等,对应今天我们所说的“软件”。下面将对三大要素依次展开论述。

首先是“各类算法”:秦汉以后,中国数学家创造了一系列先进的算法(中国古代数学家称之为“术”)。以下简单列举:

一是方程术。《九章算术》(约公元前2世纪)卷8的“方程术”,是解线性联立方程组的算法。“方程术”的关键算法叫“遍乘直除”,是高度机械化的。这一方法以前在西方文献中被称为“高斯消去法”,但近几年西方学者也开始改变称谓,比如我去苏黎世大学做访问教授时,法国科学院院士、原苏黎世大学数学系主任P.Gabriel送给我一本他编的书,书中提出,西方数学家所说的“高斯消去法”应该称作“张苍法”(张苍参与了汉朝《九章算术》的编订),这说明我们中国的算法传统在西方的影响是越来越大的。二是宋元时期求解高次多项式方程的“正负开方术”即秦九韶程序(1247年),这也是高度机械化的算法,它对应西方的“霍纳算法”(1819年)。三是解多元高次方程组的朱世杰“四元术”,西方到18世纪末法国的别朱等才开始系统研究这方面的问题。四是解一次同余方程组的“中国剩余定理”,在西方,到18世纪才由欧拉与高斯分别独立重新获得。五是插值法与元初朱世杰的“招差术”,对应西方的牛顿—格列高里公式。

这里不可能一一列举和详细说明中国古代数学家的所有算法,但仅从以上介绍不难看到,古代与中世纪中国数学家创造的算法,符合“确定性”“有限性”和“可迭代性”的机械化特征,其中有许多算法即使按现代标准衡量也达到了很高的水平。这些算法所表达的数学真理,有的在欧洲要到18世纪以后依赖近代数学工具才能重新获得。而这些算法的结构,其复杂程度也是惊人的。如对秦九韶“大衍求一术”和“正负开方术”的分析表明,这些算法的计算程序,包含了现代计算机语言中构造非平易算法的基本要素与基本结构。吴文俊院士对“中国剩余定理”进行过编程,我本人对刘徽割圆术也进行过编程,在编程过程中我们不得不感叹中国古代算法的机械化程度。总之,中国古代算法的繁荣构成了数学发展的主流。所以,有了这样丰富而又复杂的算法,势必呼唤出计算工具的改进。

第二是“计算工具”:从春秋战国时代起,中国人长期使用算筹计算,但同时也在不断寻求新的计算工具。仅甄鸾《数术记遗》中记载的算具就有14种之多。直到珠算盘的现代形式,即有梁穿档珠算盘出现并在明代规范化以后,它便成为了中国古典算法体系中稳定有效的计算工具。

第三是“计算技术”:也许是因为语言特点的关系,中国从很早就开始使用运算歌诀。早在战国时代就有了乘法口诀,在筹算体系中作为乘、除运算的语言(相当于运算软件)。从中唐开始,各种口诀盛行,逐步形成了适合于珠算体系四则算术运算及更高阶运算的机械化语言。

以上就是中国古典算法之所以成为体系的三个要素。

最后我们来探讨一下,为什么说珠算盘是中国古典算法体系的独特产物。我个人认为,产生珠算盘有三个必要条件:一是对计算工具的需求;二是十进位值制,特别是十进小数的计数系统;三是计算过程的机械化。具体论述如下:

其一,对于计算工具的需求,体现在数学与实际两方面。一是已经具有了发达的算法,客观上对于改进计算工具提出了需求;二是唐中叶到宋元经历了前所未有的发展,商业经济非常繁荣,这在《清明上河图》等作品中也都有体现。

其二,十进位值记数制是对人类文明不可磨灭的贡献,很难想象没有十进位值制,我们今天的数学会是什么样子。法国大数学家拉普拉斯曾盛赞十进位值制的发明,认为它“使得我们的算术系统在所有有用的创造中成为第一流的”。中国古代数学家正是在严格遵循十进位值制的筹算系统基础上,建立起了富有算法化特色的东方数学大厦。在世界古老文明中,只有中国与印度使用了十进位值制。古代埃及和古代希腊,其计数制是十进而非位值;古代巴比伦则是位值而非十进。中国古代的十进位值制出现很早,在春秋战国时代的刀币上就已经出现了筹算十进位值制记数符号,《孙子算经》中更是给出了具体明确的十进位值记数规则。印度也是世界上较早使用十进位值制记数的国家,但印度出现十进位值制记数的时间要晚于中国,根据《巴克沙利手稿》,印度出现整数十进位值制应该在公元3到4世纪。另外,古代印度的十进位值制使用点号表示“零”,这比古代中国使用空位表示“零”要更加先进一些。

然而对于珠算而言,仅有十进位值制的整数表示是不够的,还需要十进位值制的小数表示。在中国,早在刘徽时代已有完整的十进位值制的小数表示。刘徽《九章算术》“少广”章“开方术”注:“……其一退以十为母,其再退以百为母,退之弥下,其分弥细,则朱幂虽有所弃之数,不足言也。”说的是如果需要表示一个无理数,整数不够表示,就添加小数点后一位来表示,再不够的话就继续后移一位……直到最后,虽然丢掉了一部分,但所丢掉的只是微不足道的很小一部分。刘徽的思想超前了时代,十进小数的表示经历了一个长期的发展过程,但至唐代,十进小数逐渐获得了普遍应用,这也为珠算盘的最终发明创造了条件。而在欧洲,直到16世纪,荷兰数学家史蒂文在他的《十进算术》中才首先倡用十进小数,这是欧洲数学史上的一件大事。由于欧洲的记数法是经由印度和阿拉伯传入,我们不禁产生这样的疑惑,即如果印度已经产生十进小数,为什么没有在文艺复兴初期传到欧洲,而是到了16世纪才由史蒂文重新发明呢?一个可能的原因就是印度并未产生十进小数。为此,我查阅了相关资料,在我看到的印度数学、天文著作中并未有使用十进小数的记录。在美国数学史家卡兹的《数学史通论》中我们就可以看到这样的结论。因此,对比之下,可以说我国对十进小数的使用是非常先进的。

其三,是计算过程的机械化。前面已介绍过各种算法的机械化性质,为了能更加清晰地说明问题,以下以割圆术为例来说明中国古典算法的机械化特性。刘徽的割圆术从六边形出发,到十二边形、二十四边形……随着圆内接正多边形的边数越来越多,它的面积和周长就越来越接近于圆。刘徽在192边时得到圆周率3.14,在3072边时得到圆周率为3.1416。刘徽的算法很简单,他应用勾股定理,不断逼近更为精确的圆周率;这一算法程序特点鲜明(参见下图)。很多中学教科书都以刘徽割圆术为例来帮助学生理解“算法”这一概念。

20230116221323-1-1941.png

除了算法的机械化,还有基本运算的机械化,具体表现为歌诀化。特别是专用于除法口诀的产生,使除法运算由估商转为口诀定商而实现了机械化。至元明时期,加减乘除实现了全面口诀化,即全面机械化。以上就是我的关于中国珠算盘出现的几个要素和条件的观点。

在当代,我们已经由珠算进入到珠心算的新时期。而在珠算产生的时期,估算和心算是不具有机械化特性的。为了能够更好地了解古印度计算中的心算成分,我考查了古代印度的计算方法。日本一位专家在其著述中提到,印度人早期曾有过珠算术,但后来没有发展;在印度的一座石窟中找到这样一幅画,记述了印度人计算的画面——他们使用一块木板(有时包有皮革),用一种类似粉笔的东西在上面书写,书写内容可以擦掉,其中有许多心算的成分。印度人笔算加心算加减速度可能较快,但乘除的速度就比不上珠算盘了。

经过比较我们认识到,珠算盘是中国古典算法体系的独特产物。中华文明是唯一延续几千年而未有间断的文明,而珠算、珠算盘是伴随着这一悠久的文明传承至今并且仍有生命力的文化遗产之一。我们要珍视这一遗产,保护这一遗产,并在中国特色的社会主义现代化事业进程中利用好这份遗产。

作者:中国科学院数学与系统科学研究院研究员


 

上一篇:对深化珠心算教育发展的初步思考

下一篇:加强国际传播能力建设 推动中国珠算全球发展