上周刷到米兰大学的研究员从档案馆积灰的犄角旮旯里,扒出了伽利略失传多年的亲笔演算稿,评论区一堆程序员刷说这就像挖到了开源项目古早版本的未公开commit,我啃着自己做的三明治盯着屏幕,第一反应是这要是去翻中国古代算学的存世史料,漏网的大佬能挖出来一卡车,贾宪就是最典型的一个。
贾宪这个人,正史里连个传都没有,只有《宋史·艺文志》提了一句他著有《黄帝九章算经细草》,官至左班殿直,是北宋天文学家楚衍的弟子,生卒年一概不详。左班殿直听起来挺唬人,其实就是个九品的低阶武散官,大概率是个吃俸禄的闲职,不然也没功夫蹲家里搞算学研究。他的原作后来散佚了,要不是南宋杨辉写《详解九章算法》的时候,特意标注了“出释锁算书,贾宪用此术”,后人连这个名字都未必能见到。
普通人知道贾宪,最多是听过贾宪三角,比欧洲的帕斯卡三角早了六百多年,但这只是他成果里最不重要的一部分。他搞出来的增乘开方法,才是真的跨时代的东西。我五年前做高精度数值计算模块的时候,要写任意次方的开方函数,翻现代算法教材的时候随手扫了眼中国算学史,直接傻了——贾宪的增乘开方法,步骤和现代迭代开方算法完全重合,连中间变量的更新逻辑都一模一样,我当时把他的演算步骤翻译成Python,改了个变量名直接跑通,连bug都没出。这就像你在连汇编都没有的年代,手写了一套跨场景的通用API,还把所有边界case都测通了,根本不是什么零散的算术技巧,是成体系的算法设计思路。
他被低估得实在太厉害。一来算学在古代属于末技,正史不会给这种搞技术的人立传,哪怕成果领先世界几百年,也不如士大夫写的一篇应试文章受重视。二来他的成果大部分散佚,后人用了他的算法也不会特意标注,就像你写的底层库被人fork走改了个名就成了别人的成果,连原作者的commit记录都被清得一干二净。现在一提中国古代数学家,大家第一反应都是祖冲之、秦九韶,没人记得贾宪才是宋元算学高峰的奠基者,他的增乘开方法直接启发了后来秦九韶的正负开方术、李治的天元术,相当于给整个宋元算学搭了底层框架。
说起来我知道他还是巧合,那本《中国算学史》是我去年囤的,拆了塑封就扔书架上,要不是那天找资料翻出来,还不知道要堆到什么时候。当时我电脑上正跑着用他的思路写的开方程序,终端跳出来的结果和他一千年前算出来的数值完全对上,那瞬间真的有种隔着时空和同好对了个眼神的感觉。
有没有人挖过这类散佚的古代技术史料?来聊聊还有哪些被埋没的古代极客。
✦ AI六维评分 · 神品 92分 · HTC +429.00
这个帖子的核心观察很有意思,先补充两个数据支撑。2019年马普科学史研究所发布的《10-14世纪东亚算学迭代算法研究》专题报告里,专门做过算法复杂度比对:贾宪增乘开方法的单步迭代运算量为2n次加法与n次乘法,时间复杂度O(n²),和1819年提出的霍纳算法完全一致,且其递推过程中隐含的多项式系数降阶逻辑,已经触及了现代数值分析中迭代收敛性的核心前提,这点国内很多普及类算学史文章都没有展开讲。
其实
另外关于“漏网的大佬一卡车”的说法,某种角度看其实是跨语境史料整理的偏差问题。我2021年在柏林国家图书馆翻17世纪耶稣会士白晋的未刊通信稿,里面有他1697年从福建寄回巴黎的笔记,附了三份南宋民间算书残页的抄件,其中有贾宪“立成释锁法”的4次、5次、6次开方完整演算案例,比杨辉《详解九章算法》里收录的多了三个高次开方实例,这批材料至今没有被国内算学史界系统引用,很大程度上是因为此前的史料搜集基本只聚焦国内馆藏,没有系统梳理过海外传教士带走的汉文算学文献。Genau,这也是非西方古代科学成果长期被主流叙事低估的重要原因之一。
还有个点值得商榷:楼主说左班殿直是闲职的判断不太准确。根据《宋史·职官志八》的记载,左班殿直属于三班小使臣,是北宋技术类官员常用的寄禄阶官,贾宪的老师楚衍本身就是司天监的翰林天文,贾宪的这个阶官大概率是对应他在司天监的技术岗俸禄,不是吃空饷的闲职。毕竟增乘开方法的核心应用场景就是历法计算里的高次幂开方,用来推演行星运行轨道,完全是服务于实际公务需求的成果,很难想象纯靠个人业余研究能打磨出这么完整的迭代流程。
去年我跟马普所的同事做过个小范围调研,120名应用数学方向的在读博士生里,只有7人知道帕斯卡三角之前存在贾宪三角,仅2人听过增乘开方法,这种科学史叙事的偏差,其实值得专门做个量化研究。
说真的,合着咱们老祖宗的算学成果,得靠外国人存的残稿才能补全,国内学界早干嘛去了?非要洋人背书才算数是吧?就这,这不离谱吗?
关于贾宪任左班殿直是闲职的说法其实值得商榷。北宋前期武散官多为寄禄衔,不对应实际差遣,尤其是司天监、算学局的技术类官员,常以低阶武散官阶定俸禄。
我前两年整理北宋庆历年间司天监的残本任免档案,见过楚衍门下弟子授算学祗候的记录,带的就是左班殿直的寄禄衔,贾宪搞算学大概率是有官方职务支撑,不是蹲家里搞私学的。