Muḥammad ibn Mūsā al-Khwārizmī · 约780–约850

花拉子米

代数与算法这两个词,一个来自他的书名,一个来自他的名字

x2+10x=39x^2 + 10x = 39
《还原与对消之书》里的头一道题 · 他没有符号可用,只能把它摆成一个正方形

他的名字里,「花拉子米」是个地名:花拉子模,咸海南边的一片绿洲,今天在乌兹别克斯坦。关于他本人的记载少得可怜,生卒年都是「约」。可以确定的是他在巴格达工作,供职于哈里发马蒙的「智慧宫」——九世纪那里正把希腊、波斯、印度的典籍成批译成阿拉伯文,是当时世界上最大的一处知识集散地。

约 820 年,他写下《还原与对消计算概要》。书里没有一个符号:没有 x,没有等号,连数字都是用词写出来的,「一个平方加它的十个根等于三十九迪拉姆」——这就是 x² + 10x = 39。他给出解法的步骤,然后画一个正方形来证明这步骤为什么对。书名前半的 al-jabr(还原)指把负项移到等号另一边补回成正的,后半的 al-muqābala(对消)指两边消去同类项;前一个词经拉丁语进入欧洲,成了 algebra。他还写过一本讲印度数字的书,阿拉伯文原本失传,只剩十二世纪的拉丁译本,开头第一句是「Dixit algorizmi」——花拉子米说。中世纪的欧洲就把「按位值制照步骤算」这整套做法叫 algorism,几百年后写成 algorithm。一个人的书名和名字,变成了两门学科的名字。

花拉子米肖像
《印度数字算术》拉丁译本首页,剑桥大学图书馆 MS Ii.6.5,十二世纪 · Wikimedia Commons,公有领域。花拉子米没有画像传世,这本书的阿拉伯文原本也已失传;页面第一行写着「Dixit algorizmi」——花拉子米说。algorithm 这个词就是从这里长出来的。

生平

  1. 约780
    约生于花拉子模一带

    咸海以南,今乌兹别克斯坦希瓦附近。生平记载极少,生卒年都只能推。

  2. 约813–833
    在巴格达的智慧宫

    哈里发马蒙在位期间。他在这里做天文、地理与计算,序言里说是马蒙对学问的爱好鼓励他写那本书。

  3. 约820
    《还原与对消计算概要》

    代数的第一本系统著作。全书无符号,方程用日常语言叙述,解法用几何图形证明。书的后半是遗产分配的算题。

  4. 约825
    《印度数字算术》

    把印度的十进位值制与零介绍进阿拉伯世界。阿拉伯文原本已佚,只存拉丁译本。

  5. 约830
    《地球形貌》

    修订托勒密的地理:重定了两千余处地名的经纬,把托勒密多算的地中海长度改了回来。

  6. 约850
    约卒于巴格达

    无确切记载。

  7. 1145
    《代数》译成拉丁文

    切斯特的罗伯特在西班牙译出。algebra 一词从此进入欧洲各语言。

  8. 1202
    斐波那契《计算之书》

    把印度—阿拉伯数字带进欧洲商界。此后三百年,欧洲一直在为「算盘派还是笔算派」争吵。

展品厅

绝大多数展品都可以亲手把玩——这是本馆的立馆之本;少数以叙述为主的,做成故事展签。

镇馆之宝 · 亲手玩

把 x² + 10x = 39 摆成一个正方形

「配方法」这个名字不是比喻——他真的在配一个方。

x2+bx=c    (x+b2)2=c+b24x^2 + bx = c \;\Rightarrow\; \left(x + \tfrac{b}{2}\right)^2 = c + \tfrac{b^2}{4}

没有符号的时候,怎么证明一条解方程的步骤是对的?花拉子米的办法是画出来。「一个平方加它的十个根等于三十九」:画一个边长 x 的正方形,那是「平方」;在它的两条邻边上各贴一个宽 5 的长方形,两块合起来是 10x,那是「十个根」。现在这个 L 形的面积等于 39,而它缺一个角——边长 5 的小正方形,面积 25。把角补上,整个图形成了一个边长 x+5 的完整正方形,面积 39 + 25 = 64。于是 x + 5 = 8,x = 3。他在书里写的步骤和这张图逐字对应:「把根的数目折半,得五;自乘,得二十五;加到三十九上,得六十四;开方得八;减去根数之半五,余三。」这就是今天中学课本里的配方法,一路整理下去就是求根公式。他只解出正根——负数在他的世界里还不存在,一个负的边长没法画。

拖动系数,看那个缺角怎么被补上

默认那组数就是他书里的头一道题:「一个平方加它的十个根,等于三十九迪拉姆」, 答案是三。「配方法」不是比喻——他真的在配一个方: L 形的面积是 c,缺的那个角是 (b/2)²,补上就成了边长 x + b/2 的完整正方形。 右边五步是他书里的原话,与这张图逐字对应;一路整理下去,就是今天的求根公式。 他只给正根:负数在他的世界里还不存在,一个负的边长没法画出来。

数字变成可以照着做的步骤

同一道乘法,罗马数字要另想办法,位值制只要一张九九表。

1947=1×103+9×102+4×101+7×1001947 = 1 \times 10^3 + 9 \times 10^2 + 4 \times 10^1 + 7 \times 10^0

印度数字真正的发明不是那十个字形,而是位值制加上零:同一个符号放在不同的位上代表不同的量,空位用 0 占住。它带来的东西是决定性的——计算可以被拆成一串固定的、机械的小步骤,谁都能照着做,不需要懂原理,也不需要一副算盘或一把算筹。罗马数字做不到这一点:MCMXLVII 加 DCCCLXV,没有可以逐位对齐的竖式,得靠算板或者记忆一堆特例。花拉子米那本讲印度数字的书,教的正是这套「照着做」的加减乘除开方。它的拉丁译本第一句「Dixit algorizmi」把他的名字带进了欧洲,而这套逐位照做的方法被叫作 algorism——今天这个词是 algorithm。计算机能算数,前提是算法可以被写成一串不必理解的指令;这件事第一次成立,就在位值制上。

印度数字真正的发明不是那十个字形,而是位值制加上零: 同一个符号放在不同的位上代表不同的量,空位用 0 占住。 它带来的东西是决定性的——计算可以被拆成一串固定的、机械的小步骤, 谁都能照着做,不需要懂原理,也不需要一副算盘。花拉子米那本讲印度数字的书教的正是这个; 它的拉丁译本第一句「Dixit algorizmi」把他的名字带进了欧洲, 这套逐位照做的方法于是被叫作 algorism,后来写成 algorithm。 计算机能算数,前提正是算法可以写成一串不必理解的指令。

一个没有负数的世界,要把二次方程分成六类

写不出 ax² + bx + c = 0 —— 因为系数不许是负的,也不许是零。

今天一条求根公式管住所有二次方程,靠的是允许系数取负、取零。花拉子米两样都没有:他的「数」只能是正的,方程的两边也必须都是实实在在的一堆东西。于是同一件事必须拆成六类分别处理——平方等于根、平方等于数、根等于数、平方加根等于数、平方加数等于根、根加数等于平方。前三类是简单情形,后三类各有一套步骤和一张几何证明图;而「平方加数等于根」这一类还要分情况讨论,因为它可能有两个正根、一个、或者一个也没有。这不是笨,是缺工具:负数在印度已经被婆罗摩笈多写进算法(628 年),但要被普遍当成合法的数、能当系数用,欧洲还得等八百年。看这六类怎么在负号出现之后塌缩成一条公式,大概是理解「记号也是一种发明」最快的路。

故事展签故事展签:六类方程各有各的图;把负数放进来,六张图合成一张。

algebra 与 algorithm

一个来自书名,一个来自他的名字——而 al-jabr 的本意是接骨。

al-jabr 的字面意思是「接回去、复原」。在方程里,它指把一个负项从这边挪到那边、补成正的:3x − 2 = 10 变成 3x = 12。这个词的日常用法是接骨——直到近代,西班牙语里的 algebrista 还同时指代数学家和接骨师,塞万提斯笔下就出现过。al-muqābala 是「对置、对消」,两边同类项抵消。1145 年切斯特的罗伯特把这本书译成拉丁文,书名的前半留了下来,成为 algebra。另一条线来自他的名字:他讲印度数字那本书的拉丁译本,开头第一句是「Dixit algorizmi」——「花拉子米说」。中世纪欧洲于是把用印度数字逐位照做的算法叫 algorism,与用算板的 abacism 相对,两派吵了三百年。algorism 后来受希腊语 arithmos(数)影响,写成了 algorithm。九世纪巴格达的一个人,一本书的名字给了代数,他自己的名字给了算法——这两个词今天每天被念上千万遍,而念的人大多不知道那是一个地名和一个人。

故事展签故事展签:一个地名变成一个人名,一个人名变成一门学科。

传承

他的工作没有留在十八世纪——每条链的终点,都是你今天正在使用的东西。

《还原与对消》与配方法求根公式与符号代数今天每一本代数课本
Dixit algorizmialgorism:按位值制逐位照做algorithm 与计算机科学
把印度数字带进阿拉伯世界斐波那契《计算之书》带进欧洲全世界通用的 0–9

语录

真主赐予信士的长官马蒙的那份对学问的爱好……鼓励我写一部关于「还原」与「对消」的简明之作,只收算术里最简易、最有用的那部分——人们在继承、遗产、分割、诉讼与贸易中,在彼此的一切往来中,在丈量土地、开凿沟渠与几何计算中,时时需要的那些。

—— 《还原与对消计算概要》序言,约820 · 据罗森 1831 年英译本转译。代数最初是为分遗产和量土地而写的

花拉子米说:让我们向我们的主宰、我们的护佑者,献上应得的赞美。

—— 《印度数字算术》拉丁译本开头第一句(Dixit algorizmi: laudes deo rectori nostro atque defensori...),剑桥大学图书馆 MS Ii.6.5 · 阿拉伯文原本已佚;这一句里的 algorizmi,就是 algorithm