Brahmagupta · 598–668

婆罗摩笈多

他第一个把零当成一个数来算,也第一个让负数成为合法的数

S=(sa)(sb)(sc)(sd)S = \sqrt{(s-a)(s-b)(s-c)(s-d)}
圆内接四边形的面积,628 年 · 同一本书里,零第一次有了运算法则

婆罗摩笈多 598 年生于比拉马拉(今拉贾斯坦邦宾马尔),父亲名叫吉湿奴。三十岁那年,也就是 628 年,他写成《婆罗摩历算书》——书名的意思是「婆罗摩正确确立的教义」,全书二十五章,主体是天文,数学集中在第十二章「算术」与第十八章「碎片」。后来他主持乌贾因天文台,那是当时印度天文学的中心;665 年又写了一部更便于实用的《肯达克迪亚格》。他也是个尖刻的批评者,书里点名驳斥前人,包括阿耶波多。

数学上他做了三件此前无人做成的事。一是:印度数字里零早就作为占位记号存在,而他第一个把零当成一个可以参与运算的数,逐条写下它的加减乘除。二是负数:他用「财产」与「债」讲正负,给出完整的乘除法则——负负得正就在这本书里第一次被写下来——而且接受负数作为方程的根,这一点欧洲直到十七世纪还在争。三是那些至今叫着他名字的结果:圆内接四边形的面积公式、两平方和之积仍是两平方和的恒等式、以及对佩尔方程的攻法。书里也有错:他说零除以零等于零;正数除以零,他只说那是「以零为分母的分数」,没有再往下追。要到五百年后的婆什迦罗二世才说,除以零得到的是无穷。

婆罗摩笈多肖像
科尔布鲁克英译《婆罗摩历算书》第 339 页「算法」一节,伦敦,1817 · Wikimedia Commons,公有领域。婆罗摩笈多没有画像传世;梵文写本是贝叶式的横幅叶子,竖不起来。这一页上,零与正负数的加减乘除逐条列着——连那条著名的错误也在。印度代数正是从这本书进入欧洲语言的。

生平

  1. 598
    生于比拉马拉

    今拉贾斯坦邦宾马尔。父亲吉湿奴;他自称属于婆罗门家族。

  2. 628
    《婆罗摩历算书》成书

    时年三十。二十五章,数学在第十二章与第十八章。

  3. 628
    零的运算法则

    零加零是零,债减去零仍是债,任何数乘零得零——零第一次被当成一个数,而不只是一个占位的圈。

  4. 628
    财产与债

    以「财产」「债」讲正负,给出负负得正,并允许方程的根是负数。

  5. 628
    圆内接四边形的面积

    四边都给定时面积等于 √((s−a)(s−b)(s−c)(s−d))——海伦公式的推广,但只对四点共圆的四边形成立。

  6. 628
    x² − 92y² = 1 的挑战

    他写道:一个人若能在一年之内解出这道题,他就是数学家。答案是 x=1151、y=120。

  7. 665
    《肯达克迪亚格》

    一部更便于实用的历算书,其中用到了二阶插值。

  8. 668

    年七十。

  9. 771
    一部印度天文书到了巴格达

    被译成阿拉伯文,称《信德欣德》。此后阿拉伯天文学与算术在它之上起步。

  10. 约825
    经花拉子米西传

    《印度数字算术》把印度数字与零传给阿拉伯世界,再由拉丁译本传入欧洲。

  11. 1150
    婆什迦罗二世接着往下走

    补上循环法解佩尔方程,并第一个说明除以零得到的是无穷。

  12. 1817
    科尔布鲁克英译

    印度代数第一次进入欧洲语言——肖像位那一页就出自这一版。

展品厅

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

镇馆之宝 · 亲手玩

零第一次有了运算法则

在他之前零只是一个占位的圈;从他起,零是一个可以参与加减乘除的数。

0+0=0a0=aa×0=00 + 0 = 0 \quad a - 0 = a \quad a \times 0 = 0

印度数字里零早就有了,但那是个记号——用来说明「这一位上什么也没有」。婆罗摩笈多做的是另一件事:把零当成一个数,逐条规定它怎么参与运算。628 年那本书里写着:零加零是零;债减去零仍是债,财产减去零仍是财产;零减去债得财产,零减去财产得债;任何数乘零得零。这些今天看是废话的句子,当年是头一回有人把它们说出来——因为在此之前,「什么也没有」凭什么能当成一个东西来加减乘除,根本不是显然的。他也在这里栽了唯一一个跟头:除法。他说零除以零等于零;至于正数除以零,他只说那是一个「以零为分母的分数」,就没有再往下追。这个跟头要五百年后才被补上——1150 年婆什迦罗二世指出,除以零得到的是无穷大,而且他用了一个很现代的说法:分母越小,商越大,分母趋于零时商没有上限。

逐条点开他写下的法则,看哪一格与今天不同

印度数字里零早就有了,但那是个记号——说明「这一位上什么也没有」。 婆罗摩笈多做的是另一件事:把零当成一个,逐条规定它怎么加减乘除。 今天看这些句子像废话,可在此之前,「什么也没有」凭什么能被加减乘除,根本不是显然的。 八条里有六条与今天一字不差。出问题的是除法:他说零除以零等于零, 正数除以零则只写成「一个以零为分母的分数」,没有再往下追。 这个跟头五百年后才被补上——1150 年婆什迦罗二世指出,分母越小商越大, 除以零得到的是无穷。

财产与债:负数成了合法的数

负负得正这条规则,第一次被写下来是在 628 年。

(a)×(b)=ab(-a) \times (-b) = ab

希腊人不承认负数——丢番图遇到解是负数的方程,直接判为「荒谬」。婆罗摩笈多换了个说法:把正数叫「财产」,负数叫「债」。于是规则有了自然的解释:两笔债加起来还是债;从零里减去一笔债,得到的是财产;财产乘财产是财产,债乘债也是财产——负负得正就是这么第一次被写在纸上的。更要紧的是他允许方程的根是负数,并且给出了二次方程求根公式里带负号的那一支。这一步欧洲走了很久:十六世纪的卡尔达诺把负根称为「虚构的」,到十七世纪还有人在论证负数不可能存在,理由是「比没有还少的东西不存在」。今天温度计、账户余额、坐标轴上的负半轴都理所当然,而它们成为「数」的那一刻,是从一句关于债的比喻开始的。

希腊人不承认负数——丢番图遇到解是负数的方程,直接判为「荒谬」。 婆罗摩笈多换了个说法:正数叫「财产」,负数叫「债」。 规则于是都有了自然的解释:两笔债加起来还是债;从零里减去一笔债,得到的是财产;债乘债得财产——负负得正第一次被写在纸上就是这一句。 更要紧的是他允许方程的根是负数。这一步欧洲走了很久:卡尔达诺十六世纪还把负根 称为「虚构的」,十七世纪仍有人论证负数不可能存在,理由是「比没有还少的东西不存在」。

圆内接四边形的面积

四条边给定,面积就定了——但只有当四个顶点恰好落在一个圆上时。

s=a+b+c+d2s = \frac{a+b+c+d}{2}

三角形三边定了,面积就定了,这是海伦公式。四边形不然:四根木条拼成的框子可以压扁,面积随之改变,所以「四条边」定不了面积。婆罗摩笈多给出的是在一个额外条件下的答案:当四个顶点共圆时,面积等于 √((s−a)(s−b)(s−c)(s−d)),其中 s 是周长的一半。把其中一条边取为零,它就退化成海伦公式——所以这是海伦公式的推广。这个条件不是随便加的:在所有四边给定的四边形里,共圆的那一个面积最大,所以这条公式给出的其实是上界。有意思的是他的书里没有说明「只对共圆四边形成立」,后来的注释者才补上这一条——于是有几个世纪的读者拿它去算一般四边形,算错了。

三角形三边定了面积就定了,这是海伦公式。四边形不然:四根木条拼的框子可以压扁。 婆罗摩笈多给出的是一个额外条件下的答案——四点共圆时, 面积等于 √((s−a)(s−b)(s−c)(s−d))。拖动滑块把第四个顶点推离圆: 边长跟着变,公式算出来的值开始比真实面积大。这不是公式错了, 而是在所有四边给定的四边形里,共圆的那一个面积最大,公式给的是上界。 他的原书没写明这个前提,后来的注释者才补上——中间有几个世纪的读者 拿它去算一般四边形,算错了。

两平方和之积,仍是两平方和

两个能写成两平方和的数,乘起来还能——而且有两种写法。

(a2+b2)(c2+d2)=(acbd)2+(ad+bc)2(a^2+b^2)(c^2+d^2) = (ac-bd)^2 + (ad+bc)^2

如果 m 与 n 各自都能写成两个平方数之和,那么它们的乘积也能。婆罗摩笈多写下了这条恒等式:(a²+b²)(c²+d²) = (ac−bd)² + (ad+bc)²,而且交换一下符号还得到第二组解 (ac+bd)² + (ad−bc)²。今天它叫婆罗摩笈多—斐波那契恒等式——斐波那契在 1225 年的《平方数之书》里独立地又写了一遍。它不只是一个漂亮的等式:把它翻译成复数就是 |z|·|w| = |zw|,也就是「模是可乘的」;而在数论里,它意味着「能表示成两平方和的数」构成一个对乘法封闭的集合,这正是费马两平方和定理能成立的基础。他真正想用它做的事,是下一件展品里那种方程。

如果两个数各自都能写成两个平方数之和,那么它们的乘积也能—— 而且有两种写法,换个符号就是另一组。 今天这条叫婆罗摩笈多—斐波那契恒等式:斐波那契 1225 年在《平方数之书》里 独立地又写了一遍。它不只是个漂亮的等式:翻译成复数就是 |z|·|w| = |zw|, 也就是「模是可乘的」;在数论里,它意味着「能表示成两平方和的数」 对乘法封闭,这正是费马两平方和定理站得住的基础。 而他自己想拿它做的事,是解 x² − Ny² = 1 那种方程——见下一件。

x² − 92y² = 1

他写道:一个人若能在一年之内解出这道题,他就是数学家。

x292y2=1(x,y)=(1151,120)x^2 - 92y^2 = 1 \quad (x, y) = (1151, 120)

这类方程后来被欧拉误称为「佩尔方程」,其实佩尔跟它没什么关系,倒是婆罗摩笈多在 628 年就系统地处理过。他挑出 92 这个数当例题,并且撂下那句话:一年之内解得出来的才算数学家。为什么这么说?因为它的最小解大得离谱——x = 1151,y = 120。试除法从 y=1 一个个试上去,要试一百二十次,而换成别的 N 会更糟:N = 61 时最小解是 x = 1766319049,N = 313 时 x 有十七位数。他的办法叫「合成」:拿两组近似解按上一件展品那条恒等式合起来,能得到一组新的、更好的解——这是把恒等式当成造解的机器用。这条路五百年后由婆什迦罗二世补成完整的循环法,欧洲要到十七世纪才由费马重新提出同样的问题,而当时没有人知道印度人早已解决。

这类方程后来被欧拉误称为「佩尔方程」,其实佩尔与它没什么关系, 倒是婆罗摩笈多 628 年就系统处理过。他挑出 92 当例题,并撂下那句话: 一年之内解得出来的才算数学家。为什么?因为最小解是 x = 1151、y = 120—— 一个个试上去要试一百二十次,而换个 N 会更糟。 他的办法叫「合成」:拿两组近似解,按上一件展品那条恒等式合起来, 得到一组新的、更好的解——把恒等式当成造解的机器用。 这条路五百年后由婆什迦罗二世补成完整的循环法;欧洲要到十七世纪才由费马 重新提出同样的问题,而当时没人知道印度人早已解决。

零走了一千年

628 年写下的那几条法则,传到欧洲被普遍接受,用了整整一千年。

628 年这本书写成。771 年,一部印度天文书被带到巴格达译成阿拉伯文;此后阿拉伯的算术与代数就建立在印度数字之上,花拉子米的《印度数字算术》把这套写数的办法整理成教材,algorithm 这个词就从他的名字来。1145 年前后这本教材的拉丁译本进入欧洲——可欧洲并没有立刻接受:1299 年佛罗伦萨禁止商人在账簿上使用阿拉伯数字,理由是这些符号容易被涂改。斐波那契 1202 年就写了《计算之书》教怎么用它们,罗马数字却又用了三百年才退场。负数更慢:卡尔达诺十六世纪还称负根为「虚构的」,帕斯卡认为从零里减去四是彻头彻尾的胡说,直到十七、十八世纪负数才被普遍当成合法的数。一条在 628 年就写清楚的法则,走完这段路用了一千年——数学史上「正确」与「被接受」之间的距离,这是最长的一段之一。

故事展签故事展签:从 628 年的一页梵文,到欧洲账簿上的阿拉伯数字。

传承

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

零成为一个可以运算的数经巴格达与花拉子米西传今天每一处写下 0 的地方
财产与债:负负得正负数被接受为方程的根坐标轴的负半轴与账户余额
两平方和之积仍是两平方和婆罗摩笈多—斐波那契恒等式复数的模可乘与费马两平方和定理
x² − 92y² = 1 与合成法婆什迦罗二世的循环法连分数与佩尔方程的现代解法

语录

零加零是零。债减去零仍是债,财产减去零仍是财产,零减去零是零。

—— 《婆罗摩历算书》第十八章,628 · 零第一次作为一个数被规定了算法

债乘债得财产。

—— 同上 · 负负得正,第一次被写在纸上

一个人若能在一年之内解出 x² − 92y² = 1,他就是数学家。

—— 《婆罗摩历算书》第十八章 · 最小解是 x=1151、y=120