Bhāskara II · 1114–约1185

婆什迦罗二世

印度数学最后一座高峰:他把前人留下的半套办法转成了一个转到底的轮子

x261y2=1x^2 - 61y^2 = 1
循环法解出的最小解 x = 1766319049、y = 226153980 · 五百年后费马把同一个 61 抛给了英国数学家

婆什迦罗二世 1114 年生,他自己在书里报了生年(塞种纪元 1036 年)与成书时的年纪。出生地梵文作 Vijjadavida(又作 Vijjalavida),今址有两说,一说在马哈拉施特拉的帕坦,一说在卡纳塔克的比贾布尔一带。父亲摩醯首罗(Maheśvara)是天文学家,也是他的第一位老师;他后来主持乌贾因天文台——那是印度天文学的中心,五百年前婆罗摩笈多也在那里。1150 年、三十六岁时他写成《天文系统之冠》,全书四部:《莉拉沃蒂》讲算术与测量,《算法本源》讲代数,《行星算》与《球论》讲天文。1183 年又写了一部便于实用的历表书《历算奇趣》。约 1185 年卒。

他做的事,多半是把前人只开了个头的路走到底。婆罗摩笈多 628 年给出「合成法」,能把两组近似解并成更好的一组,却没说从哪儿开始、下一步取什么;婆什迦罗二世补上的循环法(chakravāla,「轮」)是一整套程序:转到 |k| = 1 就收工,x² − 61y² = 1 的最小解 x = 1766319049 就是这么转出来的。婆罗摩笈多说零除以零等于零、正数除以零只是「一个以零为分母的分数」,他接着说:那是一个无穷量,往里放进多少、取走多少都不改变。《行星算》里他又把行星的「平均行度」与即时行度分开,写下相当于 δ(sin θ) = cos θ·δθ 的关系,并说行星走到最远或最近处时即时变化为零。

要紧的是别把这些话说过头。循环法已知最早的记载不在他书里,而在阇耶提婆(约 1000 年)那里——原书失传,只靠 1073 年一部注释转引的二十颂留了下来;婆什迦罗二世做的是把它写成完整可用的程序。即时行度那一条也一样:他给的是历算规则,没有极限的定义,也没有证明关于函数的定理,叫「微积分的先声」稳妥,叫「他发明了微积分」就不是。他之后印度数学的中心南移到喀拉拉,欧洲则要到 1657 年费马重新提出同一道 x² − Ny² = 1 时才走到这里,而那时没有人知道印度早已解决——这两条线真正接上,要等科尔布鲁克 1817 年的英译本。

婆什迦罗二世肖像
《莉拉沃蒂》波斯文译本写本,费济译,1587 · 麦吉尔大学珍本部藏(Ivanow 0125),公有领域。婆什迦罗二世没有画像传世,Commons 上挂他名字的像都是今人所绘,所以这里放的是他那本书——不过是它的波斯文身份:阿克巴命宫廷诗人费济译出的这一版。满页十一行印度体波斯斜体,行间那两处红字是数。选它还有一层缘故:本页展签里「莉拉沃蒂是他女儿」那个传说,一般就追到这个译本。

生平

  1. 约1000
    阇耶提婆已经描述过循环法

    原书失传,只由乌达亚迪瓦卡拉(Udayadivākara)1073 年的一部注释转引二十颂留下来。这一条是循环法已知最早的记载。

  2. 1114
    生于 Vijjadavida

    今址有两说:马哈拉施特拉的帕坦,或卡纳塔克的比贾布尔一带。父亲摩醯首罗是天文学家,也是他的老师。

  3. 1150
    《天文系统之冠》成书

    时年三十六。四部:《莉拉沃蒂》算术、《算法本源》代数、《行星算》与《球论》天文。

  4. 1150
    循环法解 x² − 61y² = 1

    转到 |k| = 1 收工,最小解 x = 1766319049、y = 226153980。婆罗摩笈多的合成法到这里才算走完。

  5. 1150
    以零为分母的分数是无穷量

    khahara。往里放进多少、取走多少都不改变——他拿世界毁灭与创生时那个无限而不变的神作比。

  6. 1150
    即时行度 tātkālika gati

    《行星算》把「平均行度」与「此刻走多快」分开,并给出相当于 δ(sin θ) = cos θ·δθ 的关系。

  7. 1150
    四个三角形,一个小方块

    《算法本源》里那幅勾股图:边长 c 的正方形里四个直角三角形,中间剩一个边长 b − a 的小方块。

  8. 1183
    《历算奇趣》

    一部便于实用的历表书,此后几百年印度推步常用它。

  9. 约1185

    年约七十一。他之后印度数学的中心南移到喀拉拉。

  10. 1587
    《莉拉沃蒂》译成波斯文

    阿克巴宫廷里费济(Faizi)所译,时为阿克巴在位第三十二年。莉拉沃蒂是他女儿这个故事,一般认为最早就出自这个译本,比他晚了四百年。

  11. 1657
    费马把同一道题抛给英国人

    他提出的 x² − Ny² = 1 特意挑了 N = 61 与 N = 109,欧洲没有人知道印度五百年前已经解过。

  12. 1817
    科尔布鲁克英译

    《莉拉沃蒂》与《算法本源》第一次进入欧洲语言,与婆罗摩笈多同在一册。

  13. 1874
    汉克尔的评价

    「拉格朗日之前数论上最漂亮的成就」——他说的是循环法。

展品厅

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

镇馆之宝 · 亲手玩

循环法:一轮一轮把 61 逼出来

x² − 61y² = 1 的最小解是个十位数;盲目搜索要数到两亿多,这套办法转七步就到。

x=1766319049y=226153980x = 1766319049 \quad y = 226153980

婆罗摩笈多 628 年就有了「合成法」:手上两组近似解,按他那条两平方和的恒等式并起来,能得到更好的一组。可这只是一件工具,不是一条路——从哪儿开始、下一步该取什么数去合,他没有说死,于是对某些 N 能撞出答案,对另一些就卡住。循环法补上的正是这一句。它把状态写成一个三元组:a² − N b² = k。一轮做三件事:找一个正整数 m,要求 k 整除 a + b·m,并在满足这个条件的 m 里挑 |m² − N| 最小的那个;然后 a 换成 (a·m + N·b)/|k|,b 换成 (a + b·m)/|k|,k 换成 (m² − N)/k。|k| 被一路逼小,转到 1 就收工——k 等于 −1 时再按合成法自乘一次。chakravāla 的意思就是「轮」。拿它去算,每一个非平方的 N 都会在有限轮内停下来;可「一定会停」这件事,印度的文献里并没有证明。欧洲那条线上,「x² − Ny² = 1 一定有解」是十八世纪由拉格朗日证明的,他走的是连分数那条路,不是这条。汉克尔 1874 年在《古代与中世纪数学史》里说,这是拉格朗日之前数论上最漂亮的成就。最后还要补一句:循环法已知最早的记载不在他书里,而在阇耶提婆(约 1000 年)那里,原书失传,只靠 1073 年一部注释转引的二十颂留了下来;婆什迦罗二世做的是把它写成一套完整可用的程序,并用它解开了 61。

挑一个 N,逐轮看三元组怎么换,再与「一个个试」要试多少次对照

婆罗摩笈多 628 年的合成法能把两组近似解并成更好的一组,可「从哪儿开始、下一步取什么」他没有说死。循环法补上的正是这一句:手上有一组 a² − N b² = k,就去找一个 m,要求 k 整除 a + b·m,并在满足这个条件的 m 里挑 |m² − N| 最小的那个;换出新的一组,再转一轮。k 一路被逼向 1,转到 |k| = 1 就收工——k = −1 时再按合成法自乘一次。 N = 61 是他书里的例题,也是最漂亮的例子:转 6 轮加一次合成,得到 x = 1766319049、y = 226153980。同一个 61,1657 年费马当作挑战题抛给英国数学家(另一个是 109),而当时没有人知道印度五百年前就解过。 右边那根长条是「盲目搜索」要付的代价:从 y = 1 数上去,要数到 226153980 才第一次撞上完全平方;一天试一百个,要六千年。两根条画的是位数,不是次数——真按次数画,短的那根连一个像素都占不到。 这里只用了 k = ±1 那条捷径;他书里还给了 k = ±2、±4 的捷径,收工还能更早。循环法已知最早的记载不在他书里,而在阇耶提婆(约 1000 年)那里——原书失传,只靠 1073 年一部注释转引的二十颂留了下来;婆什迦罗二世把它写成了一套完整可用的程序。汉克尔 1874 年在《古代与中世纪数学史》里说,这是拉格朗日之前数论上最漂亮的成就。

《莉拉沃蒂》:算题写成诗

一群蜜蜂、一根被风折断的竹子、一只扑向蛇的孔雀——课本可以是这样写的。

n/2+89n+2=nn=72\sqrt{n/2} + \frac{8}{9}n + 2 = n \quad n = 72

《天文系统之冠》的第一部叫《莉拉沃蒂》,讲算术、比例、级数与测量,全书写成诗。不是把公式押上韵,而是把每道例题都编成一个场景,还常常直接对着人说话:「美丽的女子,说说看,蜂群有多少只?」那道蜜蜂题(第 68 节)的条件是:半群的平方根飞向茉莉,全群的九分之八也去了那里,还剩两只在莲花上——一只雄蜂夜里被花香引进花里关住了,一只雌蜂绕着它飞;三份合起来正是全群,答案是 72。竹子那道(第 148 节):三十二肘的竹子被风折断,梢头落在离根十六肘处,问在哪里断的,答案是十二肘,断口以上二十肘,12² + 16² = 20²。孔雀那道(第 150 节):柱脚有个蛇洞,柱高九肘,柱顶的孔雀看见蛇在离洞三倍柱高处往洞里游,斜扑下去,两者走过的路一样长,相遇处离洞十二肘、各走十五肘。莲花那道(第 153 节):花苞露出水面半肘,被风吹到两肘外没入,水深三又四分之三肘。后三道其实是同一道题穿了三件外衣——都是已知一条直角边、以及另一条直角边与斜边的和或差,求那两条。他要的就是这个效果:同一条法则套上四个故事,学生记住的是故事。这本书此后在印度当了几百年的标准算术课本,抄本与注本极多,十九世纪还在讲授。

《莉拉沃蒂》是《天文系统之冠》的第一部,讲算术与测量,全书写成诗——不是把公式押上韵,而是把每道例题都编成一个场景:一群蜜蜂、一根被风折断的竹子、一只扑向蛇的孔雀、一支被吹倒的莲花。题面里还常常直接喊人:「美丽的女子,说说看……」 后三道其实是同一道题的三件外衣:都是直角三角形,都已知一条直角边、以及另一条直角边与斜边的和或差,求那两条。换成今天的写法一行就完:设两条直角边为 p、q、斜边 c,由 p² + q² = c² 与 c ∓ q 已知,立刻解出。他要的就是这个效果——同一条法则套上四个故事,学生记住的是故事。 蜜蜂那道不是几何:半群的平方根、九分之八、再加两只,正好凑成全群,答案是 72。拖动滑块看三份加起来与全群的差怎么在 72 那里穿过零。

即时行度:行星这一刻走得多快

把「一段时间走了多少」换成「此刻走多快」,并写下相当于 sin 的导数的那条式子。

δ(sinθ)=cosθδθ\delta(\sin\theta) = \cos\theta \cdot \delta\theta

古代历算给行星的是平均行度:一段时间走过的弧,除以那段时间。可行星并不匀速,要问「此刻走多快」,就得把那段时间取得很短。婆什迦罗二世在《行星算》里把这件事单列出来,叫即时行度(tātkālika gati),并给出算它要用的关系:两个相近的角,正弦之差约等于其中一个角的余弦乘上角差——写成今天的记号,正是 δ(sin θ) = cos θ·δθ。印度的正弦表以 R = 3438 为半径(那是以角分为单位的圆半径),拿 30° 与 31° 去核:表上的真差是 51.70,他那条式子给 51.97,差半个百分点;角差收得越小越贴。他还写下另一句:行星走到最远或最近处时,它的即时变化为零。这两条今天听着耳熟,但要按分寸说。这类正弦差分并不是从他才有的,印度天文学自阿耶波多以来的正弦表本来就是按差分造的;而「即时变化为零」是一条历算规则,不是一条关于函数的定理——他既没有极限的定义,也没有证明什么。今人常把那句话与罗尔定理对上,那是后来的比附。稳妥的说法是:这些是微积分的先声,而不是微积分。

古代历算给行星的是「平均行度」:一段时间走了多少,除以那段时间。可行星并不匀速,问「此刻走多快」就得把那段时间取得很短。婆什迦罗二世在《行星算》里把这件事单列出来,叫即时行度(tātkālika gati),并说:若两个角相差很小,它们的正弦之差就等于其中一个角的余弦乘上这个角差——写成今天的记号正是 δ(sin θ) = cos θ · δθ。 画布上蓝线是弦表真正的差,铜色线是他那条式子给的值。差有多大只看角差取得多短:θ = 30° 处,δθ = 10° 时相对差 5.86%,收到 1° 只剩 0.51%;θ = 60° 处同样从 18.46% 收到 1.54%。这正是「取得越短越准」的样子,θ 越靠近 0° 也越准。 他还写下另一句:行星走到最远或最近处时,它的即时变化为零——画布上 90° 那条虚线的位置。今人常把这句话与罗尔定理对上,不过那是后来的比附:他给的是一条历算规则,并没有证明一条关于函数的定理,也没有极限的定义。把这些叫作「微积分的先声」是稳妥的;叫作「他发明了微积分」就不是。

除以零,得到的是无穷

婆罗摩笈多在这一格上栽了跟头,五百年后他接上一句——而这一句也只对了一半。

30=\frac{3}{0} = \infty

628 年那本书把零的加减乘写得一清二楚,唯独除法停住了:零除以零,婆罗摩笈多说是零(错的);正数除以零,他只写成「一个以零为分母的分数」,没有再往下说。婆什迦罗二世在《算法本源》第一章接上这一句:这个分数叫 khahara,是一个无穷量;而且「在这个以零为除数的量里,无论放进多少、取走多少,都不会有改变」,他还拿世界毁灭与创生之际那个不变者作比。(顺带说明一处常见的误记:「分母越小商越大、所以商没有上限」这句推理,在科尔布鲁克的译本里出现在注释者克里希那与兰伽纳特的按语里,不是他的正文。)他自己另有一条规则写在《莉拉沃蒂》第 44–45 节:先乘以零、随后又除以零,原数不变;第 46 节那道题就靠它解出答案 14。按今天的规矩这一步是错的——先乘零已经把数抹成 0,再除以零就是 0/0,没有定义。可换个眼光看,他约掉的其实是同一个趋于零的量,天文推算里正是这么用的;把这件事说清楚要等到极限的定义。有意思的是今天的机器照着他的分法办了:IEEE 754 浮点数里,正数除以零给出 Infinity,零除以零给出 NaN——一个有值,一个没有。

婆罗摩笈多 628 年给零定下了加减乘的法则,唯独在除法上停住:零除以零,他说是零(错的);正数除以零,他只写成「一个以零为分母的分数」,没有再往下说。五百年后婆什迦罗二世接上这一句:这个分数是一个无穷量(khahara),而且「往里放进多少、取走多少,它都不改变」——他还拿世界毁灭与创生时那个不变者作比。 左边那条曲线是今天的看法:分母越小商越大,小到零就没有上限。这条推理不是他的正文——科尔布鲁克本里它出现在注释者的按语中(《算法本源》那条署克里希那,《莉拉沃蒂》那条署兰伽纳特);他自己只说这个分数是无穷量,理由给的是「放进取走都不改变」。 这也不是「他定义了 ∞」那么简单。他另有一条规则(《莉拉沃蒂》第 44–45 节):先乘以零、后除以零,原数不变;第 46 节那道题就靠它解出 14。按今天的规矩这一步是错的——先乘零已经把 x 抹成 0,再除以零就是 0/0。可换个眼光看,他约掉的其实是同一个「趋于零的量」,天文推算里正是这么用的;真正把这件事说清楚,要等到极限的定义。 今天的机器倒是照他的分法办了:IEEE 754 浮点数里,正数除以零给出 Infinity,零除以零给出 NaN——一个有值,一个没有。同一条分界线,隔了八百年。

四个三角形,一个小方块

边长 c 的正方形里摆四个直角三角形,中间剩下的那块就是全部的证明。

c2=2ab+(ba)2=a2+b2c^2 = 2ab + (b-a)^2 = a^2 + b^2

取一个边长 c 的正方形,四条边上各贴一个直角边为 a、b 的直角三角形,风车似的转着摆;四个直角顶点围出来的,恰好是一个边长 b − a 的正方形。于是 c² = 四个三角形 + 中间那块 = 2ab + (b − a)² = a² + b²。整条推理只用到一件事:面积可以搬动。婆什迦罗二世把这幅图放在《算法本源》里,书中还另给了一个用相似三角形的推算——从直角向斜边作高,分出的两个小三角形都与原三角形相似。流传很广的说法是:他把图往桌上一放,只写了一个字「看!」。这多半是后来的附会:普洛夫克在《印度数学》(2009)里指出,他原文用了两颂加一段散文来讲这幅图,散文末了才说「此外,把图中那些部分摆好,看一眼就够了」——那句话才像是传说的源头。勾股定理在印度本来就不新,《绳法经》里公元前几百年就在用 3-4-5 这样的直角三角形,《莉拉沃蒂》里它只是随手取用的工具。这幅图的好处不在于新,而在于它把一条定理变成了可以一眼看完的东西——而这正是后来所有「无字证明」想做的事。

边长 c 的正方形,四条边上各贴一个直角边为 a、b 的直角三角形,风车似的转着摆。四个直角顶点围出来的,正好是一个边长 b − a 的正方形——整幅图只需要这一件事。于是 c² = 四个三角形 + 小方块 = 2ab + (b − a)² = a² + b²。拖「推开」那根滑块,四块三角形会沿各自的外法线滑出去,中间那个小方块就露出来了;右边两个正方形按同一比例画着 a² 与 b²,加起来正是左边那一个。 流传很广的说法是:他把这幅图往桌上一放,只写了一个字——「看!」。这多半是后来的附会:普洛夫克在《印度数学》(2009)里指出,他原文用了两颂加一段散文来讲这幅图,散文末了才说「此外,把图中那些部分摆好,看一眼就够了」,那句话才像是传说的源头;书里另外还给了一个用相似三角形的推算(从直角向斜边作高,分出的两个小三角形都与原三角形相似)。所以这幅图是他的,「一个字的证明」不是。 这条定理在印度早有:《绳法经》里公元前几百年就用着 3-4-5 这类直角三角形,《莉拉沃蒂》与《算法本源》里它只是随手就用的工具。这幅图的好处不在于新,而在于它把证明变成了可以一眼看完的东西

莉拉沃蒂是谁

书名是一个女子的名字。至于她是不是他女儿,最早的说法出现在四百年后。

《莉拉沃蒂》全书里,题面一次次地对着一个人说话:「亲爱的、聪慧的莉拉沃蒂」「眼睛像小鹿一样的莉拉沃蒂」「美丽的女子,说说看……」。这个名字本身的意思是「妩媚的」「可爱的」,而全书最后一颂(第 277 节)写着:凡把莉拉沃蒂紧抱在颈上的人,这世上的欢欣便日日增长——注释者伽内沙说这一颂一语双关,读起来同时也在写一位可亲的女子。至于她是谁,流传最广的故事是这样的:她是他的女儿,他算出她只有一个极短的吉时可以出嫁,便做了一只水钟守着那一刻;她俯身去看,衣上一颗珍珠落进水里堵住了孔,吉时就这样错过,她终身未嫁,父亲于是用她的名字写了这本书,好让这个名字留到世界的尽头。这个故事必须加上限定语:一般认为它出自费济 1587 年在阿克巴宫廷所译的波斯文本,比婆什迦罗二世晚了四百年,没有任何同时代的证据;今天的研究者多把它当作译者所记的传说,而不是史实——莉拉沃蒂是不是他女儿,本身就没有定论。可以确定的只有两件事:书里确实在跟一位叫莉拉沃蒂的人说话,以及这本书后来在印度当了几百年的算术课本——一个不知真假的名字,被几十代学生念了下来。

故事展签故事展签:从一颗落进水钟的珍珠,到几百年间印度学生都在念的那个名字。

传承

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

循环法:一轮一轮把 |k| 逼到 1佩尔方程与实二次域的基本单位今天的计算代数系统仍要算它:连分数、格基约化与密码学里的一件常用工具
以零为分母的分数是无穷量浮点数里专门留出 ±Infinity 与 NaN 两类值今天每一次除零:IEEE 754 的规定与编译器里的处理
即时行度与 δ(sin θ) = cos θ·δθ差分与导数的先声天文历表的插值与导航里的瞬时速度
《莉拉沃蒂》把算题写成诗,末几章讲排列组合印度此后几百年的算术课本组合计数:抽样要抽多少、口令空间有多大
四个三角形一个小方块面积可以搬动:剪拼式的证明无字证明与今天的可视化教学

语录

以零为分母的这个分数,称作无穷量。在这个以零为除数的量里,无论放进多少、取走多少,都不会有改变;正如世界毁灭或创生之际,无数众生被吸入或放出,那无限而不变的神却毫无变化。

—— 《算法本源》第一章第 15、16 节,1150 · 据科尔布鲁克 1817 年英译转译,大意

一群蜜蜂,其中半数的平方根飞向茉莉,全群的九分之八也去了那里;还有一只雌蜂,绕着夜里被花香引去、困在莲花中的那只雄蜂嗡嗡地飞。美丽的女子,说说看,蜂群有多少只?

—— 《莉拉沃蒂》第 68 节 · 据科尔布鲁克 1817 年英译转译,大意;答案是 72

凡把莉拉沃蒂紧抱在颈上的人,这世上的欢欣便日日增长——她通身装点着约分、乘法与乘方,解答纯净而完美,言辞如书中所举的例子一般有味。

—— 《莉拉沃蒂》第 277 节,全书最后一颂 · 据科尔布鲁克 1817 年英译转译,大意;注释者伽内沙说这一颂一语双关,同时也在写一位可亲的女子