数学薪传
数学薪传
翻开任何一本现行高中数学教材,"算法"一词通常被安置在选修模块或信息技术课的某个角落,与 Python、流程图、伪代码相关联。很少有学生会将它与一本写于元代、由一位平民数学家署名的古书联系在一起。这本书叫《四元玉鉴》,成书于 1303 年前后,距今整整七个世纪。它的作者朱世杰,号松庭,长期以教学与著述为业,行踪遍及扬州、杭州一带,留下了两部著作:《算学启蒙》与《四元玉鉴》。如果只用一句话概括他在数学史上的位置,可以说:他是宋元代数传统的集大成者,是中华古典代数在到达巅峰之前最后一位具有体系性创造能力的本土数学家。
这个判断的背后,藏着一连串需要回答的问题:宋元中国为什么会出现这样一位数学家?他的工作与传统之间是什么关系?他的方法为什么到今天仍然值得青少年读者花时间去精读?尤其是在算法编程已经普及、计算软件可以在几秒钟内解出上千方程的当下,重读一本元代手抄本的代数著作,到底是一种文化姿态,还是一种认知训练?
这些问题构成本章的起点。它们不是怀旧的问题,也不是为了弘扬传统文化而设计的修辞问题。它们是关于"什么样的数学思维才是真正可迁移的"这一当代教育命题。
从《九章》到《四元》:一条连绵两千年的代数传统
要回答朱世杰从哪里来,必须先把中华数学从先秦到宋元的脉络理清楚。这一脉络的核心概念不是几何证明,而是算法——一种以程序性步骤处理数值与符号、求解特定类问题的数学实践。
《九章算术》是这条脉络的奠基性文本。它不是某位作者的独立著作,而是从先秦至东汉逐步累积成书的实用数学汇编,包含方田、粟米、衰分、少广、商功、均输、盈不足、方程、勾股九章。其中"方程"章集中展示了线性方程组的解法:以矩阵式排列未知系数,按行施行加减消元,直至某一变量只剩下一项。这一方法后世称为"方程术",是中国代数传统的早期成果。
三国时期的赵爽、刘徽为《九章》作注,使其中的方法获得了几何解释与逻辑基础。刘徽的"割圆术"用极限思想逼近圆面积,把 $\pi$ 的值精确到 3.1416 附近;赵爽的勾股图则以图形变换证明勾股定理。这些工作一方面保留了《九章》的程序传统,另一方面也引入了某种希腊式的演绎成分,但演进的轴心始终是计算方法而非证明美学。
隋唐时期,实用数学继续发展。《缉古算经》中的"提积术"处理大型土木工程中的开方与体积计算,王孝通的"上元之积"等式已经具备处理高次幂的能力。这一阶段的数学仍然以工程问题为外部驱动,但内在的代数能力在缓慢积累。
转折发生在宋代。下图给出一条简化的时间主线,用以呈现关键文本之间的承继关系:
```mermaid flowchart TD A[Jiuzhang Suanshu<br/>About 1st century CE] --> B[Liu Hui Jiuzhang Zhu<br/>263 CE] B --> C[Sunzi Suanjing Zhangqiu Jian Suanjing<br/>5th-6th century] C --> D[Wang Xiaotong Jigu Suanjing<br/>Tang 7th century] D --> E[Jia Xian Huangdi Jiuzhang Suanfa Xicao<br/>About 1050] E --> F[Liu Yi Yiguyuan Yuan<br/>About 1080] F --> G[Qin Jiushao Shushu Jiuzhang<br/>1247] G --> H[Li Ye Ceyuan Haijing Yigu Yanduan<br/>1248-1259] H --> I[Yang Hui Xiangjie Jiuzhang Suanfa Yang Hui Suanfa<br/>1261-1275] I --> J[Zhu Shijie Suanxue Qimeng and Siyuan Yujian<br/>1299-1303] ```
需要说明的是,这张图不是完整的数学史叙述,而是一组有选择的节点。它要呈现的结构性事实是:自《九章》成书到《四元玉鉴》问世的约一千二百年间,"算法—符号化—高维推广"这条主线从未中断。每一代数学家都在前人留下的问题上推进:贾宪的"开方作法本原"图给出了 $(x+a)^n$ 的系数规律,这张图后世称为贾宪三角,比欧洲帕斯卡三角早出近百年;秦九韶的"正负开方术"系统化了高次方程的数值解法,其等价于 19 世纪的霍纳法而早出五六百年;李冶的"天元术"用单个符号表示未知数,把方程写成一种接近现代形式的多项式恒等式;朱世杰的工作则是把这种符号化再向前推一步,从一个未知数推广到四个未知数,处理多元高次方程组的消去与求解。
因此,《四元玉鉴》不是孤立的天才之作,而是这条脉络的逻辑顶点之一。理解这一点,是理解"为什么值得读"的前提。
历史坐标:《四元玉鉴》在世界代数史上的位置
把视野放到全球史的尺度上,可以更清楚地看到朱世杰工作的相对位置。
代数学作为一个独立学科在欧洲的成形,大致经历了三个阶段:花拉子米以阿拉伯传统为基础给出二次方程的系统解法(约 825 年),斐波那契等人在 13 世纪将印度-阿拉伯数字与方程方法传到欧洲,卡尔达诺、塔尔塔利亚在 16 世纪中叶处理三次与四次方程的根式解,韦达引入字母代表一般系数,笛卡儿则把代数方法与几何坐标结合成解析几何。这条线索在 17—18 世纪达到高潮,伽罗瓦、阿贝尔将群论与方程可解性联系起来,最终在 19 世纪后期完成近世代数的构建。
中华代数传统走的是另一条路。它从《九章》的消元出发,经宋元的天元、四元等推广,到《四元玉鉴》达到处理四元高次方程组的系统方法——使用"四元消法"逐步消去变量,把多变量问题归约为单变量高次方程,再用数值开方法求根。这套方法在结构上接近于后世所谓的结式(resultant)与消去理论(elimination theory),但其形式是高度程序化的:以"太""元""仙""晶"四个专门术语标记变量,以特定术语描述变换步骤,每一个"相消"动作都有明确的术语对应。
关键在于,朱世杰的方法完成于 1303 年前后。这一时间节点在全球坐标中的位置非常特殊:在欧洲相当于中世纪盛期向晚期过渡的过渡时代,斐波那契刚去世不到百年,欧洲尚无系统化的代数教材;在阿拉伯世界,花拉子米之后的工作并未形成同等强度的符号代数传统。换言之,朱世杰的工作在当时的全球范围内,居于多元多项式系统求解的最前沿。
中华代数传统在朱世杰之后逐渐停滞,原因是多重的:科举取士不考数学,实用数学的需求被凝固在土地测量、税收计算等领域;明初官方对前代数学典籍的整理未能与新发展相衔接;商业出版与教育体系无法支撑大规模数学传承;西方几何方法随耶稣会士传入后,形成了不同的认知范式。这些历史性因素值得在第十五章展开讨论,但这里更需要强调的事实是:在被纳入世界代数学史的整体图景之后,《四元玉鉴》的位置是真实可指认的——它给出了多元高次方程组的系统解法,用纯粹程序化的符号工具实现高维代数问题的归约。这份独立贡献属于中华数学传统,也属于人类代数思想的共同积累。
理解这一坐标,对今天的学习者有一种特殊意义:一个传统达到过这种高度,意味着任何"中华数学不擅长代数"的论断都不能成立;同样,一个传统在达到这种高度之后又沉寂下来,意味着简单的技术决定论解释力不足。两种判断都需要经过精细的历史分析才能形成。本书第三章、第十三章将进一步处理这个论题。
经典回望的三重意义:算法、形式、文化
到这里,问题已经从"朱世杰做了什么"转向"今天的青少年读这些有什么用"。这个转向看似跳跃,其实是必然的:当我们决定精读一本古书时,必然先要回答它能训练什么样的思维。
在算法思维的深层结构层面,朱世杰的工作揭示出一种超越当代通行理解的算法概念。在当代算法教学中,"算法"通常被等同于"求解步骤"或"计算流程"。这个定义并不错,但失之过宽。朱世杰的工作展示了一种更高要求的算法:每一步骤都有明确的终止条件,每一步骤都保持形式的不变性,每一步骤都可以机械化执行而无须智识上的特殊判断。这种"完全程序化"的意识,是现代计算机科学的精神先驱,也是当代算法竞赛中所推崇的"无分叉算法"的早期形态。青少年在精读《四元玉鉴》的过程中,接触到的不是抽象的"算法"概念,而是数百个具体例题中的算法实例,每一步都有"为什么这样做"和"这样做之后会得到什么"的追问。这种学习路径与单纯阅读教科书章节的效果完全不同,它培养的算法感是内化的、可迁移的。
在形式化表达的源流理解层面,朱世杰的符号系统提供了一份珍贵的早期样本。数学的形式化是 19 世纪末以来数学基础的核心议题,也是计算机可验证数学的灵魂,但青少年课本对此往往一笔带过。朱世杰用"太""元""仙""晶"分别代表四个不同未知数,常数项居中,幂次按行分布,这是中华传统对"以符号替代自然语言表达"的一次完整实验。这一实验不为后世采纳,但其问题意识——如何用尽量简洁的符号承载尽量复杂的结构——是普遍性的。读懂这一选择,读者会更容易理解莱布尼茨为什么发明记号,笛卡儿为什么用 $x$、$y$、$z$,理解任何符号系统的双重性如何成为现代数学的基础。
在文化坐标的隐性建立层面,认知效果是难以量化却不可忽视的。当一个人熟悉自己传统中曾经达到的高度,他在面对陌生挑战时的内在动机与方向感会更强。一本 1303 年的书,作者以毕生精力给出一道题的代数化表达,用五十余字描述一个变量消去步骤,这种耐性本身是一种值得学习的思维方式。青少年若能在十五六岁的关键时期接触到这种耐性、这种对形式完美度的追求,会在他们未来进入任何需要精细工作的领域时,留下一种可识别的文化记忆。
这三层意义并非互不相关。算法思维、形式化意识、文化坐标,共同构成"数学素养"的三个支柱。任何一个支柱独大,都会导致认知失衡。补足这三者的方式之一,是回到一种密度极高的古典文本,让读者在有限篇幅内体验数学传统的全过程。这正是本书以《四元玉鉴》为精读对象的方法论依据。
一道题的旅程:《九章》方程首问与《四元玉鉴》第一问的对照
抽象判断需要落在具体案例之上才有重量。这里以两道题目作为对照:一个是《九章算术》方程章第一题,一个是《四元玉鉴》卷首第一问。
《九章》方程章第一题的原文依传世校勘本为:
> 今有上禾三秉,中禾二秉,下禾一秉,实三十九斗。上禾二秉,中禾三秉,下禾一秉,实三十四斗。上禾一秉,中禾二秉,下禾三秉,实二十六斗。问上、中、下禾实一秉各几何。
译成现代汉语:三束上禾、二束中禾、一束下禾可打谷三十九斗;二束上禾、三束中禾、一束下禾可打谷三十四斗;一束上禾、二束中禾、三束下禾可打谷二十六斗。问每一束上、中、下禾各打谷多少斗。
若设上禾每秉产 $a$ 斗、中禾每秉产 $b$ 斗、下禾每秉产 $c$ 斗,方程组可表示为:
$$\begin{cases} 3a + 2b + c = 39 \\ 2a + 3b + c = 34 \\ a + 2b + 3c = 26 \end{cases}$$
《九章》给出的解法以"方程"列表(一种由上至下、由右至左排出的矩阵式草稿),按规则进行行间加减消元:
第一步,以第二行乘三、第二行减第一行乘二,得新第二行 $4b + c = 102 - 78 = ...$(具体步骤依校勘本为准),最终求得 $a = \frac{37}{4}$、$b = \frac{17}{4}$、$c = \frac{11}{4}$。全过程是程序化的,但每一项都用文字叙述"以行减行"等操作,没有引入专门符号。读者读《九章》,需要先具备将文字操作翻译成代数运算的能力。
七百年后,《四元玉鉴》卷首第一问"假令四圆垛",问题设置为四个圆柱形堆垛(圆垛),每垛的形状参数(高、半径、底元、对角元)已知,且四个垛之间存在某种测量关系,要求推得四垛分别的具体尺寸。题面之后的"四元布列"段,开列出四个变量"太""元""仙""晶",固定它们分别代表的未知数;然后列出每个垛的多项式方程;接着"四元消法"段以七条至十几条文字描述如何消去三元留下一个一元高次方程,再以"开方术"求根。整个过程是分节的、可标记的,每一节都有专门术语对应。
虽然只是一道题,但在结构上可以看到三个关键变化。
第一,符号的普遍化。《九章》用文字描述操作,"方程"是一种表,《四元玉鉴》用专门符号表达未知数与方程,多项式直接以符号形式呈现。符号从工具变为对象本身。这一变化相当于把"加减乘除"从口述步骤提升为书写形式,可阅读、可检查、可传承。
第二,维度的扩展。《九章》能舒适处理三元(虽然三元就足够复杂了),《四元玉鉴》直接把维度推到四元,并且处理的是非线性方程组。这不是简单的"做四道题",而是构造出一套能用于任意四元问题的算法。
第三,方法的可重用性。九章的方程术面对新方程组需要重新构造策略,《四元玉鉴》则将"四元消法"作为通用程序,遇到新方程组按同一程序走即可,不再需要构造性洞察。这是程序化与机械化的胜利。
这三层变化叠加在一起,就是中华代数传统七百年间的内在进展。把这种进展以一道题为切面展示出来,比任何抽象描述都更具说服力。第二章开始,我们将逐节展示《四元玉鉴》中这套程序的展开方式。
本书的阅读路径与方法
本章已经为整本书做好了铺垫。从第二章开始,我们将逐卷精读《四元玉鉴》的主要部分。具体安排如下:第二章处理卷首总论"演段"概念;第三至第七章处理卷一的"今古开方""三才变通""三乘方""四乘方""拨换"等关键章节;第八至第十一章处理卷二的"二元""三元""四元"三段消去法;第十二至第十四章处理卷三的"杂法""运数""勾股"等综合题目;第十五章回到历史维度,总结全书的算法特征与历史意义。
阅读这本书的方法,建议采取"四步法":原文—释义—推演—反思。原文段给出《四元玉鉴》原文及必要的版本说明,本书采用清乾隆年间《四库全书》辑录本与今人钱宝琮校勘本作为底本,对个别字句作简要校记;释义段把古代术语译为现代汉语并解释几何或代数背景;推演段要求读者跟随文本写出每一步代数变换,必要时辅以软件验证;反思段讨论这一方法与现代数学的关系、与同时代或前后代方法的对比。每一章末尾附有问题清单和拓展阅读建议。
在工具层面,建议两件必备:一本是 A4 大小的方格纸,用于人工模仿朱世杰的多项式排列与逐项消去;另一件是一个轻量的符号计算环境,例如 Python 与 SymPy 的组合,用于验证高次方程求根与变量消去。这两件工具,一件代表传统,一件代表现代;交替使用可以避免对任何一方的过度依赖,也能让读者明确感受到:当工具变化时,思维结构中不变的究竟是什么。
学习节奏上,建议每周精读一章,配套完成该章末尾的推演题。对于推演题中较难的部分,不必追求一次做对,先按文本的引导做完一次,再回到原文作第二次解释性的阅读,最后用 SymPy 验证。这种"做—读—验"的三轮法,比单次通读更接近朱世杰本人在教学中所期待的师徒相授。
最后,本书不强求读者预先掌握高等数学的体系。《四元玉鉴》所用的全部数学工具,在初等代数与初等几何的范围内即可理解。我们偶尔会提及"结式""群论""几何变换"等术语,但每次都会给出最低限度的解释,不要求读者具备本科数学背景。
本章小结
回到本章开头的问题:在算法编程普及、计算软件强大的今天,青少年为何仍需精读《四元玉鉴》?
答案不只是一个"是",而是三个层面的理由。算法层面,《四元玉鉴》展示了程序思维可以走多远、应该如何结构化;形式层面,它示范了符号化在数学传统中的力量与限度;文化层面,它提供了中华数学传统曾经达到的精确坐标,使今天的数学学习者获得一种可被识别的纵深感。
这三个层面的共同前提是:朱世杰的工作不是孤立的天才,而是从《九章算术》开始的中华代数传统自然演化的结果。理解这一传统,理解它在世界代数史上的真实位置,是进入文本本身的前置工作。这种前置工作本身,就是一种思维训练——不是靠记诵概念,而是靠建立坐标、看清脉络、识别判断的依据。
下一章将进入《四元玉鉴》的总论部分,介绍"演段"这一朱世杰专用的核心概念。它是把"算法"与"代数结构"接通的桥梁,是理解全书的钥匙。沿着这条线索,我们就由"为什么读"进入"如何读"。