MathLabs

10 年级

印度、伊斯兰与中国的数学

从婆罗摩笈多的圆内接四边形公式 S=(s−a)(s−b)(s−c)(s−d)S=\sqrt{(s-a)(s-b)(s-c)(s-d)} 与他的佩尔方程 x2−Ny2=1x^2-Ny^2=1,到花拉子米的代数与欧玛尔·海亚姆用圆锥曲线求解三次方程,再到刘徽割圆术倍增多边形逼近 π\pi 与中国剩余定理。

直观三种文明,一条思想长河

大约从公元3世纪到13世纪,欧洲留下的数学文献相对较少,而三种文明却以极其具体、直观的方法推动了数学发展:以婆罗摩笈多为代表的印度天文数学家给出了圆内接四边形的精确公式,并求出 x2−Ny2=1x^2-Ny^2=1 的整数解;以花拉子米、欧玛尔·海亚姆为代表的伊斯兰世界学者把零散技巧变成一门系统的代数学,通过真正切割拼接正方形,或让两条曲线相交来求解方程;而以刘徽和《孙子算经》作者为代表的中国数学家通过不断倍增多边形逼近 π\pi,并用今天所称的中国剩余定理解决历法问题。

带有可拖动角度theta的单位圆,展示了用于倍增多边形逼近圆周率的正n边形圆心角。
在单位圆内接一个正 nn 边形:相邻两个顶点之间的圆心角为 θ=360∘/n\theta=360^\circ/n。把 θ\theta 拖到 30∘30^\circ(即 n=12n=12),再想象把它减半变成 2424 边形——多边形与圆之间的缝隙不断收窄,这正是刘徽用来逼近 π\pi 的方法背后的几何思想。

中学婆罗摩笈多的圆内接四边形公式

定义: 圆内接四边形与半周长

边长为 a,b,c,da,b,c,d 的四边形若四个顶点都在同一个圆上,就称为圆内接四边形;这迫使对角互补。它的半周长为 s=a+b+c+d2s=\dfrac{a+b+c+d}{2}。

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

婆罗摩笈多定理(《婆罗摩修正体系》,公元628年)指出,这样的四边形面积仅由四条边长决定,形式与三角形的海伦公式完全类似:S=(s−a)(s−b)(s−c)(s−d)S=\sqrt{(s-a)(s-b)(s-c)(s-d)}。

S=(s−a)(s−b)(s−c)(s−d)S=\sqrt{(s-a)(s-b)(s-c)(s-d)}

这个公式从何而来?作对角线 ACAC 把四边形分成三角形 ABCABC(边 a,ba,b)与三角形 ACDACD(边 c,dc,d),其中角 BB 与角 DD 互为对角。由于圆内接四边形对角互补,B+D=180∘B+D=180^\circ,从而 cos⁡B=−cos⁡D\cos B=-\cos D。对两个三角形分别用余弦定理得到 AC2=a2+b2−2abcos⁡BAC^2=a^2+b^2-2ab\cos B 与 AC2=c2+d2−2cdcos⁡DAC^2=c^2+d^2-2cd\cos D;把 cos⁡D=−cos⁡B\cos D=-\cos B 代入后一式并令两式的 AC2AC^2 相等,就能借助两个三角形的面积(12absin⁡B\tfrac12 ab\sin B 与 12cdsin⁡D\tfrac12 cd\sin D,其中 sin⁡B=sin⁡D\sin B=\sin D)消去 cos⁡B\cos B;再用 s=a+b+c+d2s=\tfrac{a+b+c+d}2 完成配方与因式分解,四条边就合并成上面这个对称乘积。

刘徽倍增多边形逼近 π\pi(单位圆,r=1r=1)
边数 nn边长 lnl_n估计值 n ln/2n\,l_n/2
61.00003.0000
120.51763.1058
240.26113.1326
480.13083.1394
960.06543.1410

大学佩尔方程与轮转法

在同一部628年的著作中,婆罗摩笈多研究了今天所称的佩尔方程 x2−Ny2=1x^2-Ny^2=1(NN 为固定的非完全平方正整数),求整数解 x,yx,y。他发现了可以把两个解合成为新解的“婆万那”(合成)恒等式;几个世纪后婆什迦罗第二把它发展成“轮转法”:从 x2−Ny2=kx^2-Ny^2=k(kk 较小)的一个粗略解出发,反复与适当选取的平凡解合成,逐步缩小 ∣k∣|k|,直到 k=±1k=\pm1,此时要么已得到 k=1k=1 的解,要么再合成一步即可得到。

x2−Ny2=1x^2-Ny^2=1

早在近五个世纪之前,欧玛尔·海亚姆就着手解决另一个问题:求解仅用直尺圆规无法解决的三次方程。在约1070年的《代数问题论证》中,他证明了每个三次方程都可以通过两条圆锥曲线的交点求解。

具体来说,设 a,b>0a,b>0,考虑三次方程 x3+a2x=a2bx^3+a^2x=a^2b。让抛物线 x2=ayx^2=ay 与圆 y2=x(b−x)y^2=x(b-x)(位于正 xx 轴上、直径为 bb 且过原点的半圆)相交。把抛物线给出的 y=x2/ay=x^2/a 代入圆的方程,得 (x2/a)2=x(b−x)\left(x^2/a\right)^2=x(b-x),即 x4/a2=bx−x2x^4/a^2=bx-x^2;两边除以 x≠0x\neq0 再乘以 a2a^2,恰好还原出 x3+a2x=a2bx^3+a^2x=a^2b。于是(非原点)交点的 xx 坐标就是方程的根——用曲线的相交代替了根式。

取 a=1,b=2a=1,b=2:三次方程为 x3+x=2x^3+x=2,抛物线为 x2=yx^2=y,圆为 y2=x(2−x)y^2=x(2-x)。它们(除原点外)相交于 (1,1)(1,1):确实 y2=1y^2=1 与 x(2−x)=1⋅1=1x(2-x)=1\cdot1=1 相符,且 13+1=21^3+1=2 直接验证了三次方程。海亚姆的作图法同样能处理根为无理数的三次方程——即便算不出干净的数值,曲线依然相交。

大学刘徽求 π\pi 的倍增多边形算法

约公元263年,刘徽在注释经典著作《九章算术》时,在半径为 rr 的圆内接一个正六边形,并不断把边数加倍。设内接正 nn 边形的边长为 lnl_n,由勾股定理,圆心到某边中点的距离(弦心距)为 r2−(ln/2)2\sqrt{r^2-(l_n/2)^2},而该中点到圆弧之间的缝隙(矢)为 r−r2−(ln/2)2r-\sqrt{r^2-(l_n/2)^2}。把一个旧顶点与位于该缝隙上方弧上的新顶点相连,就构成一个直角三角形,于是倍增后的边长满足递推式 l2n=(ln2)2+(r−r2−(ln2)2)2l_{2n}=\sqrt{\left(\dfrac{l_n}{2}\right)^2+\left(r-\sqrt{r^2-\left(\dfrac{l_n}{2}\right)^2}\right)^2}。由于当 nn 增大时,nn 边形的周长 n lnn\,l_n 趋近圆的周长 2πr2\pi r,所以 π≈n ln2r\pi\approx\dfrac{n\,l_n}{2r} 给出越来越精确的估计。

l2n=(ln2)2+(r−r2−(ln2)2)2l_{2n}=\sqrt{\left(\dfrac{l_n}{2}\right)^2+\left(r-\sqrt{r^2-\left(\dfrac{l_n}{2}\right)^2}\right)^2}

从六边形出发(正六边形边长等于半径,故 l6=rl_6=r),倍增四次得到96边形,刘徽得到 π≈3.14\pi\approx3.14;后来一直倍增到3072边形,他得到了著名的数值 3.14163.1416,精确到小数点后四位——比袖珍计算器早了十三个世纪。

当 b>0b>0、c>0c>0 时,x2+bx=cx^2+bx=c 的正根为 x=c+(b2)2−b2x=\sqrt{c+\left(\dfrac b2\right)^2}-\dfrac b2。

为什么成立?

花拉子米(巴格达,约公元820年,著有《还原与对消计算概要》——“代数”一词的由来)没有负数也没有符号记法,因此他通过真正画出正方形和矩形、再把它们拼补成一个更大的正方形来求解二次方程,这幅图使原本神秘的公式变得一目了然。

证明

画一个边长为 xx 的正方形,其面积为 x2x^2,是 x2+bx=cx^2+bx=c 的第一项。在该正方形的两条相邻边上各附加一个宽为 b/2b/2、长为 xx 的细长矩形,二者面积之和为 2⋅b2⋅x=bx2\cdot\tfrac b2\cdot x=bx,正是第二项。这样得到的L形图形(“折尺形”)面积为 x2+bx=cx^2+bx=c。

这个折尺形其实就是边长为 x+b/2x+b/2 的大正方形缺了一个 b2×b2\tfrac b2\times\tfrac b2 的小角。事实上,两个矩形与原正方形恰好在它们相接的外角处留下一个 (b/2)×(b/2)(b/2)\times(b/2) 的空缺。把这个空缺补上:折尺形加上这个角上的小正方形,整体就成为一个边长为 x+b/2x+b/2 的真正正方形,其面积因此等于 c+(b/2)2c+(b/2)^2(折尺形面积 cc 恰好加一次角上小正方形面积 (b/2)2(b/2)^2)。

于是 (x+b2)2=c+(b2)2(x+\tfrac b2)^2=c+\left(\tfrac b2\right)^2。两边取正平方根(边长为正)得 x+b2=c+(b2)2x+\dfrac b2=\sqrt{c+\left(\dfrac b2\right)^2},解出 xx 即为 x=c+(b2)2−b2x=\sqrt{c+\left(\dfrac b2\right)^2}-\dfrac b2。

代数验证:逐项展开 (c+(b/2)2−b/2)2+b(c+(b/2)2−b/2)\left(\sqrt{c+(b/2)^2}-b/2\right)^2+b\left(\sqrt{c+(b/2)^2}-b/2\right),交叉项 ±bc+(b/2)2 b/2\pm b\sqrt{c+(b/2)^2}\,b/2 相消后恰好化简为 cc——这独立于图形验证了公式。取数值例 x2+10x=39x^2+10x=39(即 b=10,c=39b=10,c=39):x=39+25−5=64−5=8−5=3x=\sqrt{39+25}-5=\sqrt{64}-5=8-5=3,确实 32+10⋅3=9+30=393^2+10\cdot3=9+30=39。

大学中国剩余定理

设 m1,m2,…,mkm_1,m_2,\dots,m_k 是两两互素的正整数,a1,…,aka_1,\dots,a_k 是任意整数。那么对每个 ii 都满足 x≡ai(modmi)x\equiv a_i\pmod{m_i} 的同余方程组存在解 xx,且该解在模 M=m1m2⋯mkM=m_1m_2\cdots m_k 意义下唯一。

为什么成立?

此定理最早记录于公元3至5世纪的《孙子算经》(“物不知数”问题),并由秦九韶于1247年给出完整的一般算法(大衍求一术)。它说明两两互素的模携带着独立的信息:知道一个数对模3、模5、模7的余数,就能在模105意义下唯一确定这个数,既不丢失信息也不会矛盾,因为这些模从不“重叠”。

证明

存在性,第一步(构造零件):对每个 ii,定义 Mi=M/miM_i=M/m_i(除 mim_i 外所有模的乘积)。由于各 mjm_j 两两互素,mim_i 的任何素因子都不会出现在其他 mjm_j(j≠ij\neq i)中,故 gcd⁡(Mi,mi)=1\gcd(M_i,m_i)=1。由裴蜀等式(扩展欧几里得算法)可知存在整数 yiy_i——即 MiM_i 模 mim_i 的逆元——满足 Miyi≡1(modmi)M_iy_i\equiv1\pmod{m_i}。

存在性,第二步(拼出解):令 x=∑i=1kaiMiyi mod Mx=\sum_{i=1}^{k}a_iM_iy_i\bmod M。固定任意下标 ii,把这个和式模 mim_i 化简。对每个 j≠ij\neq i,因子 Mj=M/mjM_j=M/m_j(由于 i≠ji\neq j)含有 mim_i 作为其因子之一,故 mi∣Mjm_i\mid M_j,从而 ajMjyj≡0(modmi)a_jM_jy_j\equiv0\pmod{m_i}。只剩下第 ii 项:利用 Miyi≡1(modmi)M_iy_i\equiv1\pmod{m_i},得 x≡aiMiyi≡ai⋅1=ai(modmi)x\equiv a_iM_iy_i\equiv a_i\cdot1=a_i\pmod{m_i}。由于 ii 任意,xx 同时满足所有同余式 x≡ai(modmi)x\equiv a_i\pmod{m_i}。

模 MM 的唯一性:设另有整数 x′x' 也满足所有 x≡ai(modmi)x\equiv a_i\pmod{m_i}。则对每个 ii 都有 x−x′≡0(modmi)x-x'\equiv0\pmod{m_i},即每个 mim_i 都整除 x−x′x-x'。由于各 mim_i 两两互素,它们的最小公倍数等于其乘积 MM,因此 M∣(x−x′)M\mid(x-x')——两两互素的数的任何公倍数必定是其乘积的倍数。故 x≡x′(modM)x\equiv x'\pmod M:解在模 MM 意义下唯一,正如所述。

小例验证:取 m1=3,m2=5m_1=3,m_2=5,a1=2,a2=3a_1=2,a_2=3,即方程组 x≡2(mod3), x≡3(mod5)x\equiv2\pmod3,\ x\equiv3\pmod5。此处 M=15M=15;M1=5M_1=5 需要 5y1≡1(mod3)5y_1\equiv1\pmod3,即 2y1≡1(mod3)2y_1\equiv1\pmod3,故 y1=2y_1=2;M2=3M_2=3 需要 3y2≡1(mod5)3y_2\equiv1\pmod5,故 y2=2y_2=2。于是 x=2⋅5⋅2+3⋅3⋅2=20+18=38≡8(mod15)x=2\cdot5\cdot2+3\cdot3\cdot2=20+18=38\equiv8\pmod{15},即 x=8x=8。验证:8=2⋅3+28=2\cdot3+2 模 33 余 22,8=1⋅5+38=1\cdot5+3 模 55 余 33——两个同余式都成立,构造得证。

大学实际应用与典型例题

这并非博物馆里的陈迹。孙子的问题正是为了同步历法而提出的:古代中国天文学家要同时追踪多个周期(60天的干支周期、行星周期、朔望月),剩余定理让他们只凭几个余数就能确定日期,而不必逐日计数——这正是它诞生时所服务的历法与导航用途。同样的思想如今支撑着现代密码学:RSA解密把一个巨大的模数 n=pqn=pq 与中国剩余定理结合(“CRT-RSA”优化),分别对位长约为一半的模 pp 与模 qq 做模幂运算,再合并结果,速度大约是直接对模 nn 运算的四倍。

例题: 婆罗摩笈多公式在具体四边形上的应用

一个圆内接四边形的连续边长为 a=3,b=4,c=5,d=6a=3,b=4,c=5,d=6,求其面积。

解答

先计算半周长:s=3+4+5+62=182=9s=\dfrac{3+4+5+6}{2}=\dfrac{18}{2}=9。

再求各因子 s−a,s−b,s−c,s−ds-a,s-b,s-c,s-d:s−a=9−3=6s-a=9-3=6,s−b=9−4=5s-b=9-4=5,s−c=9−5=4s-c=9-5=4,s−d=9−6=3s-d=9-6=3。

代入婆罗摩笈多公式:S=(s−a)(s−b)(s−c)(s−d)=6⋅5⋅4⋅3=360S=\sqrt{(s-a)(s-b)(s-c)(s-d)}=\sqrt{6\cdot5\cdot4\cdot3}=\sqrt{360}。

化简根号:360=36⋅10360=36\cdot10,故 S=36⋅10=610S=\sqrt{36\cdot10}=6\sqrt{10},约为 18.9718.97 平方单位——仅凭一个公式,无需知道各个角度或对角线。

例题: 孙子原题:剩余问题

《孙子算经》(公元3至5世纪)提出:求满足 x≡2(mod3), x≡3(mod5), x≡2(mod7)x\equiv2\pmod3,\ x\equiv3\pmod5,\ x\equiv2\pmod7 的最小正整数 xx。

解答

模 3,5,73,5,7 两两互素,因此中国剩余定理适用,M=3⋅5⋅7=105M=3\cdot5\cdot7=105。

计算各 MiM_i 及其逆元 yiy_i:M1=105/3=35M_1=105/3=35,35y1≡1(mod3)35y_1\equiv1\pmod3 即(因 35≡235\equiv2)2y1≡1(mod3)2y_1\equiv1\pmod3,故 y1=2y_1=2(2⋅2=4≡1(mod3)2\cdot2=4\equiv1\pmod3)。再看 M2=105/5=21M_2=105/5=21,21y2≡1(mod5)21y_2\equiv1\pmod5 即(因 21≡121\equiv1)1⋅y2≡1(mod5)1\cdot y_2\equiv1\pmod5,故 y2=1y_2=1。最后 M3=105/7=15M_3=105/7=15,15y3≡1(mod7)15y_3\equiv1\pmod7 即(因 15≡115\equiv1)1⋅y3≡1(mod7)1\cdot y_3\equiv1\pmod7,故 y3=1y_3=1。

拼出解:x=a1M1y1+a2M2y2+a3M3y3=2⋅35⋅2+3⋅21⋅1+2⋅15⋅1=140+63+30=233x=a_1M_1y_1+a_2M_2y_2+a_3M_3y_3=2\cdot35\cdot2+3\cdot21\cdot1+2\cdot15\cdot1=140+63+30=233。

模 M=105M=105 化简:233=2⋅105+23233=2\cdot105+23,故 233≡23(mod105)233\equiv23\pmod{105},即 x=23x=23。

验证三个同余式:23=7⋅3+223=7\cdot3+2(模 33 余 22),23=4⋅5+323=4\cdot5+3(模 55 余 33),23=3⋅7+223=3\cdot7+2(模 77 余 22)——全部吻合,且因 23<10523<105,它就是最小正整数解。

一个圆内接四边形的边长为 3,4,5,63,4,5,6。用婆罗摩笈多公式 S=(s−a)(s−b)(s−c)(s−d)S=\sqrt{(s-a)(s-b)(s-c)(s-d)},它的面积是多少?

婆罗摩笈多在公元628年研究、后来用轮转法求解的方程,今天被称为佩尔方程,它是哪一个?

在《代数问题论证》中,欧玛尔·海亚姆通过让哪两条曲线相交,以几何方式求解三次方程?

孙子的剩余问题最初是为历法与天文计算而提出的;同一个中国剩余定理主要通过以下哪种方式加速现代RSA解密?

参考文献

  1. Victor J. Katz (2009). A History of Mathematics: An Introduction
  2. Oliver Knill (2012). A Multivariable Chinese Remainder Theorem · arXiv:1206.5114