书城科普读物古代数学与物理学
16047200000016

第16章 高阶等差数列

垛积术

垛积,即堆垛求积(聚集)的意思。由于许多堆垛现象呈高阶等差数列,因此垛积术在中国古代数学中就成了专门研究高阶等差数列求和的方法。

北宋沈括(1031~1095)首先研究垛积术,他当时称之为“隙积术”。沈括说:“算术中求各种几何体积的方法,例如刍童、堑堵、鳖臑、圆锥、阳马等,大致都已具备,唯独没有隙积这种算法……所谓隙积,就是有空隙的堆垛体,像垒起来的棋子,以及酒店里叠置的酒坛一类的东西。他们的形状虽像覆斗,四个测面也都是斜的,但由于内部有内隙之处,如果用刍童方法来计算,得出的结果往往比实际为少。”这段话把隙积与体积之间的关系讲得一清二楚。同样是求积,但“隙积”是内部有空隙的,像累棋,层坛;酒家积坛之类的隙积问题,不能套用“刍童”体积公式。但也不是不可类比,有空隙的堆垛体毕竟很像“刍童”,因此在算法上应该有一些联系。

设一个长方台垛积的顶层宽(上广)有a个物体,长有b个,底层宽(下广)有c个,长有d个,高共n层;如视物体的个数为长度整尺数(例如a个物体视为a尺),按求解刍童(长方台)体积的公式来计算,其体积当为n6[(2b d)a (2d b)c]假如把这一结果就算作是垛积总和的物体数目,那么,正如沈括所指出:“常失于数少”但如果在这个基础上,再加上一个修正值(c-a)n6些那么由此而得出的,正好是垛积总和。

S=ab (a 1)(b 1) (a 2)(b 2) ……

(a n-1)(b n-1)

=n6〔(2b d)a (2d b)c〕 n6(c-a)

而这正是二阶等差数列的求和公式。

沈括用什么方法求得这一正确公式的,《梦溪笔谈》没有详细说明。现有多种猜测,有的认为是对不同长、宽、高的垛积进行多次实验,用归纳方法得出的;有的认为可能是用“损广补狭”办法,割补几何体得出。

沈括所创造的将级数与体积比类,从而求和的方法为后人研究级数求和问题提供了一条思路。南宋末的杨辉就曾在这条思路中获得过许多成就。

杨辉在《详解九章算法》(公元1261年)商功第五中,附于体积问题之后的垛积问题共有六问,其中与级数求和有关的共有四个问题,即:

(1)果子垛(与“刍童”类比,与沈括刍童垛相同):

S=a·b (a 1)(b 1) (a 2)(b 2)

…… (c-1)(d-1) c·d

=n6[(2b d)a (2d b)c] n6(c-a)

(2)又、果子垛(与“方锥”类比):

S=12 22 32 …… n2=n3(n 1)(n 12)

(3)方垛(与“方亭”类比):

S=a2 (a 1)2 (a 2)2 …… (b-1)2 b2

=n3(a2 b2 ab b-a2)

(4)三角垛(与“鳖臑”类比):

S=1 3 6 10 …… n(n 1)2

=16n(n 1)(n 2)

上面四个公式互有联系,其中(1)式就是沈括的“刍童”垛公式,当(1)式中a=b=1,c=d=n时,即得(2)式;当(1)式中a=b,c=d时即得出(3)式;当(1)式中a=1,b=2,c=n,d=n 1时,由(1)式可知:

1·2 2·3 3·4 …… n(n 1)

=13n(n 1)(n 2)

两端除以2,即可得出(4)式。这就是说,杨辉书中的各种公式均可由沈括的长方台垛公式导出。

元代数学家朱世杰在其所著的《四元玉鉴》一书中,把中国宋元数学家在高阶等差级数求和方面的工作向前推进了一步。在朱世杰的著作中可以看到更为复杂的求和问题,这一类问题也有了较系统、普遍的解法。

在朱世杰的许多求和问题中,下述的一串三角垛公式有着重要意义。其他的求和公式都可以从这串公式演变出来。这串公式是:

等差数列(茭草垛)

n1r=1 2 3 …… n=12!n(n 1)①

二阶等差数列(三角垛)

∑n112!r(r 1)=1 3 6 …… 12n(n 1)

13!n(n 1)(n 2)②

三阶等差数列(撒星形垛)

∑n113!r(r 1)(r 2)=1 4 10 ……

=14!n(n 1)(n 2)(n 3)③

四阶等差数列(三角撒星形垛)

∑n114!r(r 1)(r 2)(r 3)=1 5 15 ……

=15!n(n 1)……(n 4)④

五阶等差数列(三角撒星更落一形垛)

∑n115!r(r 1) …… (r 4)=1 6 21 ……

=16!n(n 1)……(n 5)⑤

从这一串公式,朱世杰归纳得出一般公式:

∑nr=11p!r(r 1)(r 2)……(r p-1)

=1(p 1)!n(n 1)(n 2)……(n p)(A)

而公式①②③④⑤恰好是(A)式当p=1,2,3,4,5时的情况。

值得注意的是,在上述一串等差数列求和公式中,除第一个等差数列外,每一个数列的通项都是它上一数列前n项之和。从垛积的意义上讲来,这相当于把前式至第r层为止的垛积,落为一层,作为后式所表示垛积中的第r层(即式中第r项)。假如我们把这一点和各公式的名称对照起来看时,不难看出朱世杰经常将公式称为前式的“落一形”的意义。“落为一层”,这大概就是朱世杰所用各种名目中“落一”的意义。这也证明了朱世杰曾对这一串三角垛公式的前后式之间的关系进行了研究和比较。

贾宪三角朱世杰是如何得出这一串高阶等差数列求和公式的,古书上没有记载。但如果将这等差数列与贾宪三角作一比较,可以发现:这一串数列及它们的和都可以从斜视贾宪三角而看出。所谓斜视贾宪三角,是将贾宪三角中的数,像下图那样由斜线串联起来,自上而下地看。这样,无论是撇向(丿)看,还是捺向()看,都可以发现如下一组公式:

①1 1 …… 1=C1n

或1 1 …… 1=n

②1 2 …… C1n=C2n 1

或1 2 …… n=12!n(n 1)

③1 3 6 …… C2n 1=C3n 2

或1 3 6 …… 12!n(n 1)

=13!n(n 1)(n 2)

④1 4 10 …… C3n 2=C4n 3

或1 4 10 …… 13!n(n 1)(n 2)

=14!n(n 1)(n 2)(n 3)

⑤1 5 15 …… C4n 3=C5n 4

或1 5 15 …… 14!n(n 1)(n 2)(n 3)

=15!n(n 1)(n 2)(n 3)(n 4)

⑥1 5 21 …… C5n 4=C6n 5

或1 6 21 …… 15!n(n 1)……(n 4)

=16!n(n 1)……(n 5)

这正好就是朱世杰得出的一串三角垛公式。朱世杰是否是从贾宪三角中发现他的三角垛公式的,没有史料证实,但在朱世杰的《四元玉鉴》中确实附有一张与贾宪三角同样的图表,并且数与数之间都用斜线联系着。

古乘七法方图(载《四元玉鉴》)招差术

宋元时期天文学与数学的关系进一步密切了,许多重要的数学方法,如高次方程的数值解法,以及高次等差数列求和方法等,都被天文学所吸收,成为制定新历法的重要工具。元代的《授时历》就是一个典型。

《授时历》是由元代天文学家兼数学家王恂(1235~1281)、郭守敬(1231~1316)为主集体编写的一部先进的历法著作,先进之一,就是其中应用了招差术。《授时历》用招差术来推算太阳逐日运行的速度以及它在黄道上的经度,还用招差术来推算月球在近地点周日逐日运行的速度。

招差术属现代数学中的高次内插法。元代以前,隋朝天文学家刘焯在《皇极历》中给出了等间距的二次内插公式。由于太阳的视运动对时间来讲并不是一个二次函数,因此即使用不等间距的二次内插公式也不能精确地推算太阳和月球运行的速度等。宋代以后,由于对高阶等差级数的研究,招差术有了新的发展。王恂和郭守敬等人根据“平、定、立”三差创造了三次内插法推算日月运行的速度和位置。

设在等间距的时间为t、2t、3t……内的观察结果分别为f(t)、f(2t)、f(3t)……,则计算日月在t s时(0<s<t的精确位置可用下列公式:

f(t s)=f(t) sΔ 12!s(s-1)Δ2

13!s(s-1)(s-2)Δ3

式中Δ、Δ2、Δ3是:如设

Δ11=f(2t)-f(t),Δ12=f(3t)-f(2t)

Δ13=f(4t)-f(3t)

则Δ21=Δ12-Δ11,Δ22=Δ13-Δ12,Δ31=Δ22-Δ21

招差术在朱世杰的时候得到了更深入的发展。《四元玉鉴》“如象招数”(卷中之十)一门共5问,都是和招差有关的问题。在这里,朱世杰在中国数学史上第一次完整地列出了高次招差的公式。这正是因为他比较完善地掌握了级数求和方面的知识,特别是掌握了各种三角垛求和方面的知识的缘故。

例如书中的第5题:“今有官司依立方招兵,初(日)招方面三尺,次(日)招方面转多一尺……已招二万三千四百人……问招来几日?”

题目指示第一日招33=27人,第二日招43=64人,第三日招53=125人,等等。问几日后共招23400人。依据朱世杰的“自注”知道他是用招差术立出解题的方程式的。先列表如下:招差术公式表

表内:s0=0,s1=27,s2=27 64,s3=27 64 125……

上差:s1-s0=27,s2-s1=64,s3-s2=125……

二差:64-27=37,125-64=61,216-125=91……

下差:30-24=6,36-30=6,42-36=6……

下差是常数,故是最后的差数。依招差术计算,到第n日招到的总人数是:

Sn=27n 37n(n-1)2! 24n(n-1)(n-2)3!

6n(n-1)(n-2)(n-3)4!

表内各项的系数27,37,24,6是表内上差、二差、三差、下差各行的第一个数字。朱世杰设m=n-3,已知sn=23400,上式化为:

27(m 3) 372!(m 3)(m 2) 243!(m 3)(m 2)(m 1) 64!(m 3)(m 2)(m 1)m=23400

化简得:

m4 22m3 181m2 660m-92736=0

用增乘开方法求得m=12,故n=15(日)。

在《四元玉鉴》卷中“茭草地段”门,朱世杰扩充了杨辉的三角垛求和公式,建立起属于

∑nr=1r(r 1)(r 2)……(r p-1)p!

=n(n 1)(n 2)……(n p)(p 1)!

类型的一系列公式,作为研究一般高阶等差级数的基本公式。

在欧洲,首先对招差术加以说明的是格列哥利,后来又由牛顿加以发展,推出著名的牛顿——格列哥利内插公式。