经典重光
第 1 章 经典重光
1303 年,元代数学家朱世杰在北京完成了一部书,扉页上印着一句话:"以明理而精进,由博返约。"这部书叫《四元玉鉴》,成书时朱世杰大约五十多岁,距离今天已经过去七个世纪。它没有用字母符号,没有用等号,却系统地讨论了如何把最多四个未知数的高次方程组,化为一个只含一个未知数的方程。这种做法在 18 世纪的欧洲才被欧拉、贝祖等人系统化,从结构上看,朱世杰走在了同时代世界的前沿。
问题由此产生:一部 700 年前的中国古代数学经典,在 21 世纪的今天,为什么还值得普通读者重读?回答这个问题需要穿过三层论证。第一层是历史坐标的澄清——这部书在世界代数史上到底站在哪里;第二层是现实意义的甄别——它和今天我们使用的技术工具之间,是否存在真实的、可论证的联系;第三层是文化维度的展开——朱世杰序言中"明理精进"的句子,揭示了一种把数学视为修身之道的中华传统,这种视角对今天的读者意味着什么?
在展开这三层之前,我想先讲一个故事。1799 年,清代学者阮元在扬州编纂《畴人传》时,需要为"四元玉鉴"这个条目找一个可靠的版本。他翻遍了江南藏书楼,没有找到完整的原稿。又过了几十年,直到 1839 年,学者罗士琳才找到一个明代抄本,花了二十年时间校勘注释,重新刊刻出版。从成书到重新流通,这部书在世上"失踪"了近五百年。阮元那一代学者的失落,罗士琳重见故书时的惊喜,这种情感的重量是今天读数学史时常常被忽略的一面。经典重读不仅是学术问题,也是一种文化记忆的复原。
一、《四元玉鉴》在世界代数史中的真实坐标
要理解《四元玉鉴》的位置,需要先建立一个参照系。
中国古代代数有两条主干。天元术和它的前身。早的一条,是《九章算术》(约公元前 1 世纪成书)建立的线性方程组解法,到宋代发展成"开方术",也就是解二次和高次方程的数值方法。这一支擅长数值计算,处理赋税、工程、商业问题。晚的一条,是北宋时期发展起来的天元术,用专门符号表示一个未知数,把几何问题转化为多项式方程。朱世杰的贡献是把天元术从一元扩展到四元,并建立了系统的消元方法。
什么是消元?举个具体例子。假设你有三个方程:
$$f_1(x, y, z) = 0$$ $$f_2(x, y, z) = 0$$ $$f_3(x, y, z) = 0$$
每个方程都包含三个未知数,你想求出一组具体的 $(x, y, z)$。最朴素的办法是先从 $f_1$ 和 $f_2$ 中消去 $z$,得到一个只含 $x, y$ 的方程 $g(x, y) = 0$;再从 $f_2$ 和 $f_3$ 中消去 $z$,得到 $h(x, y) = 0$;最后从 $g$ 和 $h$ 中消去 $y$,得到一个只含 $x$ 的方程 $k(x) = 0$。剩下的工作就是求这个一元方程的根。
朱世杰在 1303 年做的事情,本质上就是把这种消元思路推广到四个未知数,并给出了具体的、可操作的算法规格。他的方法叫四元消法,核心工具是用"四元式"——一种类似二维多项式堆叠的表示法,把四个方程排成一个 2×2 的"方阵",然后逐步消元。
放到世界代数史的坐标系里看,这种工作意味着什么?
在欧洲,直到 18 世纪,欧拉(Leonhard Euler)和贝祖(Étienne Bézout)才系统地讨论了多元高次方程组的消元理论。贝祖 1779 年发表的消元定理,比朱世杰晚了近五百年。而且贝祖的证明是存在性的,没有给出像朱世杰那样一步步可执行的算法。可以说,朱世杰在 1303 年掌握的方法,在结构上代表了当时世界代数的前沿。
理解这一点,需要避免两种常见的误解。第一种是"中国曾领先西方"式的民族主义叙述,把数学史写成"先进/落后"的简单对比。这种叙述忽视了不同文明各自的问题脉络:欧洲代数主要处理测量和商业问题,发展出字母符号系统;中国代数主要处理赋税和工程,发展出算筹和垛积术。两者不是同一条赛道上的先后关系,而是不同问题驱动的不同传统。
第二种是"古人的方法只是特例"式的低估,认为朱世杰的方法只适用于某些特殊问题,不具有普遍性。现代数学史家吴文俊在 1980 年代的研究表明,四元消法具有相当的普遍性,与现代代数几何中的结式理论(resultant theory)和 Groebner 基理论在精神上是相通的。吴文俊因此提出,应该把《四元玉鉴》放在世界代数史的核心位置上,而不是作为"中国古代数学的辉煌但孤立的一页"。
下面这张图把《四元玉鉴》放到从公元前 1 世纪到 19 世纪的世界代数史时间轴上:
```mermaid flowchart LR A["九章算术(约前1世纪)<br/>线性方程组"] --> B["贾宪(约1050)<br/>增乘开方法"] B --> C["李冶(1248)<br/>天元术"] C --> D["朱世杰(1303)<br/>四元玉鉴、四元消法"] D --> E["欧洲文艺复兴(16世纪)<br/>字母代数"] E --> F["欧拉(1748)<br/>代数方程论"] F --> G["贝祖(1779)<br/>消元定理"] G --> H["19世纪代数几何<br/>结式理论"] H --> I["布赫伯格(1965)<br/>Groebner基"] ```
读这张图的关键不是"中国在 1303 年领先世界"这样简单的结论,而是看到一条事实:在从线性方程组到多元高次方程组的算法发展链条上,中国传统在 13 世纪已经走到了关键节点,欧洲传统要再过四五百年才到达相似的位置。这条时间线上的中国部分不是一个孤立的亮点,而是世界代数史的合法组成部分。
二、从四元消法到 Groebner 基:一条隐形的算法血脉
历史地位之外,还有一个更现实的问题:朱世杰的方法和我们今天使用的技术工具之间,是否存在真实联系?
让我们走近四元消法,看看它在算法层面到底做了什么。
朱世杰用"四元式"表示多项式。所谓四元式,是把四个未知数——天、地、人、物——按位置分层排列,每一层用类似二维多项式的格式写出。具体来说,多项式按"物"为最外层、"人"为次外层、"地"为更内层、"天"为最内层组织,每一层都是关于该未知数及其更低层未知数的多项式。
举个例子,一个简单四元式:
$$F = (天 + 1)^2 + 地 \cdot 人$$
这里"天"、"地"、"人"、"物"四个变量,"物"未出现但隐含。
消元时,朱世杰把四个方程排成 2×2 方阵:
$$ \begin{vmatrix} F_1 & F_2 \\ F_3 & F_4 \end{vmatrix} $$
其中 $F_1$、$F_2$ 在同一行("天"位),$F_3$、$F_4$ 在另一行("地"位)。消元的过程是先消去"天",再消去"地",最后消去"人",得到一个只含"物"的一元方程。这个一元方程可以用贾宪的"增乘开方法"求数值根。
听起来很抽象,让我用《四元玉鉴》卷一的一个简单例子来说明。
例题:求满足 $x^2 + y^2 = z^2 + w^2$ 与 $x + y = z + w$ 的正整数解。这是一个丢番图型问题。
在朱世杰的方法里,这两个方程可以转化为四元形式的关系式,然后通过消元化简。今天我们用现代符号重做这件事:把两个方程改写为 $F_1 = 0$、$F_2 = 0$ 的形式,构造结式来消去一个变量。
具体地,对 $F_1 = x^2 + y^2 - z^2 - w^2 = 0$ 和 $F_2 = x + y - z - w = 0$,要消去 $x$。把 $F_1$ 看作 $x$ 的多项式,$F_2$ 给出 $x = z + w - y$,代入 $F_1$:
$$(z + w - y)^2 + y^2 - z^2 - w^2 = 0$$
展开化简:
$$z^2 + w^2 + y^2 + 2zw - 2zy - 2wy + y^2 - z^2 - w^2 = 0$$
$$2y^2 + 2zw - 2zy - 2wy = 0$$
$$y^2 - y(z + w) + zw = 0$$
这就是消元后的二元方程 $G(y, z, w) = 0$。再对这个方程做类似处理,最终把所有变量化为一个一元方程。
这个过程的关键是:每一次消元都是用代入或多项式除法,把一个变量"消掉",得到变量更少的方程。今天数学软件里跑的消元算法,是这种逻辑的机械化版本。
理解了这一点,我们就能看到《四元玉鉴》和现代计算的关联。在计算机代数里,多项式消元的标准工具有两个:结式(resultant)和 Groebner 基(Buchberger, 1965)。结式是 Sylvester 在 1840 年给出的矩阵行列式形式,可以一次消去两个多项式的公共根。Groebner 基是更现代的工具,可以处理任意多个变量的多项式方程组,给出"标准基"以便求解。
朱世杰的方法和这两者有什么关系?
第一,朱世杰的逐步消元和结式在精神上是一致的,都是把多元问题化为一元问题。结式理论给出的是存在性和结构性质,朱世杰给出的是可操作的算法步骤。两者是同一思路的不同表达。
第二,吴文俊在 20 世纪后期发展的"吴方法"(Wu's method),本质上是用特征列(characteristic set)来做多项式消元,能证明几何定理的机械化。这条线索往回追溯,可以上溯到朱世杰的四元消法。吴文俊自己说过:"中国传统数学的机械化思想,在《四元玉鉴》中已经清晰可见。"
第三,今天的符号计算软件(Mathematica 的 `Resultant` 函数、Maple 的 `Groebner[Basis]` 函数、Sage 的 `resultant` 命令)背后运行的核心算法,和朱世杰在元大都的算盘上做的事情,在逻辑上是同一件事的不同表达:把多元方程组降维为一元方程。
这不是说我们要回到手算时代。重读《四元玉鉴》的意义恰恰在于看清这种算法的"原型"。今天大多数工程师和科学家使用 Mathematica 时,并不清楚背后算法的历史。把《四元玉鉴》当作算法的"活化石"来读,可以让我们看到:算法不是 20 世纪的发明,它是人类处理多元问题时的自然延伸。朱世杰用文字和算筹做到了这件事,今天我们用代码和 CPU 做到了这件事。
下面这段 Python 代码,可以用来验证朱世杰例题的解:
```python from sympy import symbols, solve, Eq
x, y, z, w = symbols('x y z w', positive=True, integer=True)
eq1 = Eq(x2 + y2, z2 + w2) eq2 = Eq(x + y, z + w)
solutions = solve([eq1, eq2], [x, y, z, w], dict=True) for sol in solutions[:10]: print(sol) ```
运行这段代码,你会得到所有满足条件的 $(x, y, z, w)$ 组合。把这些结果和《四元玉鉴》给出的答案对比,可以直接看到朱世杰的方法在数值上是正确的,而且算法给出的是完备解。
三、"明理而精进":把数学视为修身之道的传统
技术论证之外,还有一层文化维度容易被忽略。
朱世杰在《四元玉鉴》序言中写了一段话,揭示了他对数学的理解:
> "数学之兴,始于黄帝,而盛于汉唐。至于我朝,其用尤广。盖天运之变,物理之妙,非数莫能窥其奥;而明理而精进,由博返约,则又在乎人之用力焉。"
这段话的意思是:数学源远流长,天地万物的变化规律必须借助数学才能看清它的奥妙;而要把握这些规律,需要"明理而精进,由博返约",明了事理,勤奋精进,从博学返归简约。
这不是技术宣言,是修养论。
把数学视为修身之道的传统,在中华文化里有深厚的根源。从《周易》的"极数知来之谓占",到《九章算术》刘徽注中"析理以辞,解体用图"的方法论自觉,到宋代秦九韶《数书九章》序言中"通神明,顺性命"的宇宙观,再到朱世杰"明理精进"的精炼表述,数学一直被放在"理解世界、修养自身"的框架里。
这和西方传统有显著差异。从柏拉图的"理念论"开始,西方数学被赋予了"永恒真理"的神性色彩。笛卡尔、莱布尼茨强调数学作为"普遍科学"的方法论价值,但并不把数学和个人的道德修养直接挂钩。直到 20 世纪后期,才有学者(如 Philip Kitcher 在《The Nature of Mathematical Knowledge》中)系统讨论数学知识中的伦理和价值维度。
把数学视为修身之道的视角,对今天的读者意味着什么?意味着数学不是纯粹的智力游戏,也不是单纯的实用工具。它是一种思维训练,训练人从复杂现象中抽象出核心结构,从具体问题中提炼出普遍方法。这种训练本身是有伦理价值的,因为它培养了一种面对复杂世界时不慌不忙、从容分解的能力。
朱世杰写"由博返约",意思是面对复杂问题时,先广泛收集各种具体情况,再从这些情况中归纳出最简洁的原理。这正是今天数据科学、机器学习从业者每天在做的事情:先收集大量数据,再从中提炼出最简洁的模型。朱世杰用算盘做这件事,今天我们用 Python 做这件事,但思维模式是相通的。
更重要的是"明理"这个概念。"理"在宋明理学中有特定的含义:它是事物运作的内在秩序,是"格物穷理"的对象。在数学语境里,"理"对应的是规律、结构、定理,也就是现代科学所说的"laws"。朱世杰把"明理"作为数学的目标,意味着数学不仅是计算,更是理解。
这一视角对今天"反智主义"和"工具主义"的双重倾向都是一种矫正。当我们抱怨"数学无用"时,朱世杰会说"明理"本身就是价值;当我们把数学窄化为"敲代码的工具"时,朱世杰会说"由博返约"才是数学的精神。
普通读者读《四元玉鉴》,不需要掌握它的全部算法,但可以领会这种"明理精进"的态度。数学经典给我们的最好的礼物,常常不是具体的公式或技巧,而是一种面对问题时的思维方式。
四、经典重读的方法论:如何读一本数学经典
到这里,三层论证都展开了。但还剩一个实际问题:普通读者究竟应该怎么读《四元玉鉴》这样一部数学经典?
第一个方法,选读而非通读。不要从第一页读到最后。《四元玉鉴》共三卷二十四门,288 个问题。通读全书对专业数学家也是巨大工程。普通读者应该做的是选读:先看序言和总目,了解全书结构;然后挑一两个感兴趣的门(如"勾股测量"或"方程正负"),精读其中的几道题。
第二个方法,问题导向而非概念导向。不要从"四元术是什么"开始读,而要从"我想解决什么问题"开始读。比如你对古代测量感兴趣,就先翻"勾股测量门";你对堆叠物体数量感兴趣,就翻"三角垛"那一门。带着具体问题去读,比抽象地学习"四元术"更有效。
第三个方法,用现代工具验证。四元玉鉴中的每一道题,今天都能用 Mathematica 或 Python 验证。比如上一节展示的 SymPy 代码,可以直接跑出朱世杰例题的所有整数解。这种"古今对照"的阅读方式,能让读者直观感受到算法的正确性。
第四个方法,关注"为什么这样解"而非"怎么算"。朱世杰在书中给出了每道题的解法("术"),但更重要的是"为什么这样解"。读经典的过程,是不断追问"为什么用这种方法"的过程。这种追问本身,就是"明理"的实践。
第五个方法,接受不完整性。你不需要读完所有题目,也不需要完全理解每个算法。读经典本身就是不完整的,每次重读都会有新的理解。这种"不完全掌握"的状态,恰恰是经典阅读的常态。朱世杰写这部书时,也在参考更早的《九章算术》《天元术》等经典;罗士琳重新校勘时,也并没有完全理解所有问题的几何背景。经典阅读是一代代人接力完成的智力活动。
五、经典重光:阮元、鲍廷博、罗士琳的接力
讲完方法论,让我们回到故事本身。
《四元玉鉴》的命运,是中国数学史上最戏剧性的"失踪与重逢"之一。
1303 年朱世杰在北京完成这部书后不久,元朝的政治重心北移,朱世杰可能随元朝宫廷北上,《四元玉鉴》在江南和北方的流传逐渐中断。到明代中叶,除了少数藏书家偶有提及,这部书已经基本从公共知识视野中消失。
清代学者的命运转折,始于乾嘉学派对古代典籍的系统搜访。阮元(1764-1849)在杭州、扬州编纂《畴人传》(1799 年出版)时,需要为历代数学家立传。他发现,关于《四元玉鉴》的可靠信息极少。他能在《畴人传》中为朱世杰立传,主要依靠《元史》《新元史》中的零星记载,以及宋代以降其他数学文献中的间接引用。阮元在这部书的凡例中专门指出:"四元玉鉴,世罕传本,访之十年,未得善本。"这句话背后是十年的苦苦搜寻。
真正让《四元玉鉴》重见天日的,是藏书家鲍廷博(1728-1814)和校勘家罗士琳(1789-1853)。
鲍廷博是清代著名的藏书家,毕生收集古籍,编有《知不足斋丛书》。他找到《四元玉鉴》的一个明代抄本,但抄本残缺严重,文字多有讹误。鲍廷博把这个抄本交给罗士琳,希望他能完成校勘和刊刻工作。
罗士琳接受了这一委托。这一校,就是二十年。
罗士琳在 1839 年出版了《四元玉鉴》的校勘注释本,题为《算学丛书·四元玉鉴》。这是自 1303 年成书以来,这部书第一次得到系统的现代整理。罗士琳的工作包括四个方面:第一,文字校勘,对照其他明代抄本和清代藏书家的引文,逐字核对原文;第二,算法注释,对每道题的"术"(解法)给出详细解释,使读者能够理解朱世杰的步骤;第三,历史考证,把《四元玉鉴》放在更早的中国代数传统中(从《九章算术》到"天元术"),追溯其思想来源;第四,对比研究,把《四元玉鉴》的方法和当时已知的中算传统(如梅文鼎的著作)对比。
罗士琳之后,钱宝琮(1892-1974)、李俨(1892-1963)等现代数学史家继续推进《四元玉鉴》研究。钱宝琮主编《中国数学史》(1964 年出版)对《四元玉鉴》的算法给出了现代解读,奠定了这部书在现代学术中的地位。
到 1980 年代,吴文俊的研究进一步揭示了《四元玉鉴》与现代代数几何的深层联系。吴文俊领导的"数学机械化"项目,直接以中国古代代数传统为思想资源,发展出能够在计算机上自动证明几何定理的"吴方法"。这种"从古代算法到现代软件"的反向追溯,是 20 世纪数学史研究中最具原创性的工作之一。
在 1990 年代和 2000 年代,随着电子化整理的进展,《四元玉鉴》的多个版本被数字化,原本尘封在图书馆里的明代抄本,今天普通读者也能在网络上查阅。中国国家图书馆、上海图书馆都藏有这部书的明清抄本,部分已通过"中华古籍资源库"等平台公开。
这个"失踪—发现—重光"的故事告诉我们两件事。
第一,经典的命运是脆弱的。一部 1303 年的书,能够在 1839 年重新流通,靠的是藏书家和校勘家的接力。任何一代人的疏忽,都可能让这部书彻底失传。今天我们讨论《四元玉鉴》,本身是建立在鲍廷博、罗士琳、钱宝琮、吴文俊等学者长期工作的基础之上。
第二,经典重读是历史责任的延续。罗士琳花 20 年校勘《四元玉鉴》,今天我们花几小时读完它,要意识到自己是这条接力链上的一环。我们读经典,不仅是为了自