斐波那契 vs 花拉子密:东西方代数
体裁说明:本文是基于双方公开著作、论文与通信立场编写的虚构对话,用于呈现真实存在的思想分歧。文中台词并非史料记录的原话,请勿作为引语引用;双方的实际观点请查阅文末各自的原始文献。
对话背景
花拉子密(Muhammad ibn Musa al-Khwarizmi, 约780—约850)在巴格达智慧宫工作。著作《代数学》(al-Kitab al-Mukhtasar fi Hisab al-Jabr wal-Muqabala,约820年代)系统写出一元二次方程的解法。「代数」来自书名中的「al-Jabr」;拉丁文「algorismus」来自他的名字,后来才变成「算法」。
斐波那契是后人对比萨的莱昂纳多(Leonardo of Pisa, 约1170—约1250)的称呼,十九世纪才流行。1202 年的《计算之书》(Liber Abaci)把印度—阿拉伯数字写成拉丁文,1228 年左右修订。两人相隔约四个世纪。莱昂纳多去过贝贾亚、埃及、叙利亚、希腊、西西里和普罗旺斯,没有去过巴格达,也不曾与花拉子密会面。下面的对话是把两本书放在同一张桌上。
第一幕:九个印度数字
花拉子密:比萨的莱昂纳多,后人说你把印度数字带进了欧洲。在你之前,拉丁世界的账本多半仍用罗马数字。没有位值,连乘法都像在搬石头。
斐波那契:这要归功于印度的方法,以及把这套方法教给我的人。我父亲受比萨委派,在北非贝贾亚的海关为来往的比萨商人做公职。我少年时被送到他身边,在当地的算学馆里学了几天。老师用九个印度数字授课。那九个数字是:九、八、七、六、五、四、三、二、一;再加上阿拉伯人叫做「zephir」的记号零。有了它们,任何数都可以写出来。
后来为了生意,我又到埃及、叙利亚、希腊、西西里和普罗旺斯,听各处的争辩。我把当时的「algorismus」和所谓毕达哥拉斯弧线都看成一种错误,比起印度方法来。1202 年我把这本书写成十五章,几乎每一步都给出证明,好让拉丁人不再缺这门技艺。
花拉子密:我也写过一本按印度算法做加减的书。阿拉伯文原本没有留下来,拉丁世界后来把类似的传本叫做「花拉子密的印度数」。位值制的要点是:同一个数字,放在不同位置就表示不同的值。十个符号,加上位置,就够写任意大的数。
斐波那契:罗马数字没有这个。X 永远是十,放在左边或右边只改变加减关系,不改变它本身的权。用罗马数字做多位数乘法,是一场记忆的折磨;用印度数字,则是可以交给学徒的机械步骤。商人要的就是这种机械。
花拉子密:我在巴格达没有见过你,你也不曾到智慧宫来找我。数字系统是沿着商路和译馆走的,不是沿着一次会面。把我们写成同桌论学,是为了让两本书互相提问,不是改历史。
第二幕:还原与对消
花拉子密:让我谈《代数学》。哈里发要一本实用的计算书,处理遗产、土地测量、商业纠纷。我研究的是未知数及其平方如何与已知数相等。我不用字母。所有步骤都用句子说完。
例如:「一个平方加上它的十个根,等于三十九个迪拉姆。」问的是:怎样的平方,加上自己的十个根,会等于三十九。解法是:把根的数目取半,得五;五自乘得二十五;二十五加三十九得六十四;六十四的根是八;八减去五,余三。三就是所求的根,平方本身是九。
斐波那契:后人会把这句话写成 。您的时代没有这种写法。您的方法是修辞代数:运算发生在语言里。我在《计算之书》第十五章讨论「aljabr 与 almuchabala」的问题时,也仍用文字带未知数,只是数目已经改成印度数字。
花拉子密:「al-Jabr」是还原——把减去的项移到另一侧,使它重新出现。「al-Muqabala」是对消——把两侧相同的项削去。代数首先是修理等式的手艺,让方程回到我能够给出步骤的几种标准样子。
斐波那契:我把这些步骤用到汇票、合金、合伙和利润上。第十五章里大约九十道代数题,后人核对过:其中二十余道能在您的书里找到对应,五十余道更接近阿布·卡米尔的《代数学》。我不是从巴格达的书架上抄的,我是在地中海的算学传统里,读到已经译成拉丁文的您,以及仍在流通的埃及、叙利亚算法。
花拉子密:阿布·卡米尔比我晚一代,他把我的方法推到更复杂的系数和几何量。你站在他后面,不是站在我的门口。这正是代数的传播方式:一本书变成另一本书的例题库,中间隔着翻译、商路和几个世纪。
第三幕:六种标准型
花拉子密:因为我不承认负系数,方程必须先被说成六种正的标准型。平方等于根;平方等于数;根等于数;平方与根等于数;平方与数等于根;根与数等于平方。每一种都有自己的步骤。若允许负数,后人只需一种 。我不能那样写,因为「负的根」在我的读者那里不是数。
斐波那契:古巴比伦的泥板已经会用面积来解一类「平方加长方形等于已知数」的问题。您把零散的题目收成六格,并坚持每一种都可以用几何说完。这是系统,不是题解汇编。
花拉子密:就拿「平方与十个根等于三十九」来说。画一个边长未知的正方形,表示那个平方。把十个根对半,在正方形的两条邻边上各接一个长为五、宽为未知边的长方形。还缺一个边长为五的小正方形,才能拼成大正方形。三十九加上二十五等于六十四,大正方形的边是八,减去五,未知边是三。
我写过:数字上已经讲过的,还必须用图形证明它是真的。步骤让书吏会算,图形让人看见为什么补上二十五。
斐波那契:我在第十五章里把「census」读成正方形,顺序与您不完全相同,但能看见热拉尔译本的回声。我不是抄写员。我把欧几里得的几何补进去,让拉丁读者看见:这些步骤不是咒语。
花拉子密:图形也有边界。把三个多项式加在一起时,我承认有的运算「画不出图」,但句子里仍然需要它。代数开始从土地测量里探出头来,并不等于它已经变成符号游戏。
第四幕:商人要步骤,几何要理由
斐波那契:花拉子密先生,您给出步骤,几何证明却不是欧几里得那种公理链条。为什么够用?
花拉子密:因为读者是书吏、测量员和法官,不是雅典学园的学生。他们要能处理遗产份额和土地边界。证明若不能帮助人执行步骤,对我的委托来说就是奢侈。印度的计算传统给我数字和零;希腊的几何传统给我正方形。我更靠近前者,但没有丢掉后者。
斐波那契:我试图让意大利人也同时看见两面。《计算之书》前十四章是印度方法的算术、分数、比例和商业应用;第十五章才把代数和几何问题收在一起。我在序言里说,几乎每一步都给出确定的证明。商人可以只抄算法,学园里的人可以追图形。一本书要同时伺候两种读者。
花拉子密:这和我在智慧宫的工作并不矛盾。马蒙要的是能编历、定朝向、量土地的学问。翻译希腊手稿和编写实用算书是同一座宫殿里的两张桌子。把「东方只计算、希腊只证明」说成两个大陆的性格,是后来的简化。
斐波那契:我同意。我比较过当时能见到的各种方法,最后认定印度方法最好,并补上欧几里得的几何。桥梁不是把一边的货物原封不动卸到另一边,而是重新装箱。
第五幕:兔子只是第十二章里的一道题
花拉子密:后人提起你,常先提起一串数:一、一、二、三、五、八、十三……每一个是前两个之和。这串数在你的书里占什么位置?
斐波那契:它在第十二章,夹在分钱、分粮食一类娱乐题中间。题目是:有人把一对兔子关在某处,每对兔子一个月生一对,新生的要到第二个月才开始生育,兔子也不死。问一年能生出多少对。我把十二个月的对数逐月列出来,年底是三百七十七对。
我没有把这道题写成自然的秘密,也没有谈植物的螺旋。那些观察是我们两人都看不到的后世工作。递推本身并不神秘:这个月的对数,等于上个月的成兔加上这个月新出生的——也就是前两个月的对数之和。
花拉子密:阿拉伯和印度的算书里也有这类按月增长的应用题。它训练的是递推和列表,不是形而上学。把你的名字永远绑在兔子上,会让人忘记《计算之书》真正要推销的是九个数字和商业算法。
斐波那契:正是。兔子出名,是因为后来的人在这串数里看见了连分数、极限和比例。那些词不属于 1202 年。我的读者需要的是:如何把印度数字用到手,如何把合伙和利息算对。
第六幕:知识怎样走完四个世纪
斐波那契:花拉子密先生,您的数学站在哪几条路上?
花拉子密:三条。巴比伦的方程传统,印度的计算传统,希腊的证明传统。巴格达的智慧宫把它们译成阿拉伯文,再写成可以教授的书。我来自花剌子模,在巴格达写作。书比人走得更远。
斐波那契:而我是在贝贾亚的海关长大的,不是在您的宫廷里。十二世纪已经有切斯特的罗伯特等人把《代数学》译成拉丁文。我读到的是已经旅行过的文本,加上港口城市里口耳相传的印度方法。我添加的是意大利商人的问题:货币兑换、合金成分、合伙分红。核心步骤仍是还原与对消。
花拉子密:所以你不是「把东方发明搬进西方」的唯一驿卒,你是把已经在地中海流通的技术,写成一部拉丁文百科。把代数的故事说成欧洲在十六世纪突然醒来,会把巴格达、比萨和贝贾亚从地图上擦掉。
斐波那契:若只从后来的字母方程开始讲,读者会以为未知数是很晚才出现的私产。未知数在您的句子里已经工作了四个世纪。改变的是书写:从完全用词,到夹进数字,再到用字母同时表示未知量和系数。那最后一步,我们两人都没看见。
第七幕:代数当时是什么
花拉子密:让我问一个会被后人改写的问题:代数的本质是什么?
斐波那契:在 1202 年,它是一套把问题化成标准型、再按步骤求出根的技艺。给定「平方与根等于数」,代数告诉你取半、自乘、相加、开方、再减。它首先是算法。
花拉子密:我同意这个定义。algebra 来自 al-Jabr——恢复、修好。先把等式修干净,再执行对应那一型的步骤。结构——后人说的群、环、域——不在我的书里。我甚至没有一个可以同时容纳六种类型的符号框架。
斐波那契:我也不能假装自己看见了符号代数。我可以把您的步骤用于商业,可以把 census 画成正方形,可以把印度数字写进演算。我没有用字母同时标记未知数和变动的系数。那是十六、十七世纪的另一次书写革命,不该塞进我们的对话来给哪一方加分。
花拉子密:后人若问「算法还是结构」,那是拿十九世纪的抽象代数来回望九世纪的修辞代数。我们真正的分歧更窄:我为书吏写六种正系数类型,你为意大利商人把同一类步骤接到汇票和合金上。一个在巴格达系统化,一个在比萨传播并改写例题。结构是后来的人从符号里读出来的。
斐波那契:也许可以这样说:算法是我们交给读者的东西;结构是他们的子孙在符号稳定之后才问的问题。把后一个问题提前分配给我们其中一人,是历史错位。
第八幕:两本书留下什么
花拉子密:那么,若只谈我们能够负责的遗产?
斐波那契:您把一元二次方程收成可以教授的类型,并坚持用图形说明步骤为什么对。我把印度数字和这些步骤写成拉丁文,让不会阿拉伯文的书吏也能算。没有九个数字,欧洲后来的符号代数没有书写材料;没有还原与对消,字母方程没有可以操作的对象。
花拉子密:遗产也容易被说错。有人会把代数的起源直接写在后来发明系统字母的人名下。字母很重要。但它操作的对象——未知数的平方与根、还原和对消——是在巴格达已经写好的。也有人把数字系统写成「阿拉伯发明」,却不提印度的九个符号和零。两条简化都把中间的几个世纪变成空白。
斐波那契:兔子题会被印在儿童读物上。《计算之书》的十五章不会。若只记住一串整数,就丢掉了海关、汇票和那九个数字。若只记住欧洲的「发现」,就丢掉了您在智慧宫里写下的六种类型。
花拉子密:把我们放回各自的桌子:我在九世纪的巴格达写给测量员;你在十三世纪的比萨写给商人。对话是虚构的。数字、六种类型、三十九个迪拉姆、三百七十七对兔子,以及你没有到过巴格达这件事,不是。
分析
对话只能隔空进行。代数不是欧洲在近代的一次性发明。花拉子密把正系数的一次、二次方程收成六种类型,并用几何说明「配成正方形」为什么有效。斐波那契把印度—阿拉伯数字和已经译介的步骤,写成商人能用的拉丁文手册。
两人做的都是修辞代数:步骤在句子里。十六世纪以后,韦达和笛卡尔把参数也写成字母,代数才获得后人所谓的「结构」面孔。用「算法还是结构」来描述九世纪与十三世纪的对立,是把后来的分叉提前投射回去。更贴合文本的对立是:系统化的标准型与几何说明,对上商业现场的数字算法。
核心分歧
差异不在「谁更抽象」,而在读者和书写。花拉子密面向书吏与测量员,禁止负系数,坚持六种类型和几何核对。斐波那契面向意大利商人,用印度数字重写演算,并把步骤接到兑换和合金上。算法是双方共享的核心;结构是双方都未进入的后世问题。
当代启示
程序执行的是步骤;符号计算把化简和求解写成可自动跑完的手续。这更接近花拉子密交给书吏的承诺。抽象代数仍在描述这些规则依赖的结构。两种理解不再互相取消。把代数写成单一文明的专利,或把斐波那契写成巴格达的访客,都会让传播路径消失。
延伸思考
- 如果印度—阿拉伯数字没有经由北非港口进入意大利账房,欧洲数学会如何改写自己的符号?
- 计算机代数系统自动执行步骤之后,几何说明是否仍是理解方程的必要部分?
- 还有哪些非欧洲数学传统,像花拉子密的六种类型一样,被后来的教科书压缩成一个词源?
延伸阅读:花拉子密《代数学》(约820);斐波那契《计算之书》(1202);维克多·卡茨《数学史》(2009);乔治·Ifrah《数字的历史》(1998)