中国素来天、算不分家。不仅数学家大都出自天文学家,而且许多数学问题来自天文历法研究之中,又通过数学问题的解决推进天文和历法工作。从三国到唐代,这种关系主要表现在《元嘉历》、《大明历》、《皇极历》与《大衍历》四部历法的研制中。
《元嘉历》和《大明历》是南北朝时期两部重要历法,前者由何承天所编制,后者则是祖冲之的杰作。在《元嘉历》研制过程中,何承天为使历法中的一些数据更接近实测,创立了一种调整“日法”的方法——调日法,也就是数学上的带近似比重数的加减法。何承天曾测得一个朔望月是29.530585天,他为把小数部分表成一个近似分数,采取以9(-1)17,26( )49为母近似分数,取近似比重数15,得9 15×2617 15×49=399752.这种算法在国外到15世纪才发现。《大明历》中运用数学的地方很多,其中最出色的是关于“上元积年”的推求。
一部历法,需要规定一个起算点,中国古代天文历算家称这个起算点为历元,或上元,并把从上元到所求年累计的年数叫做上元积年。确定了历年和积年,就可以根据各项天文周期(回归年、朔望月、交点月等)来推算朔置闰,计算节气、交食……,整个历法乃得安排。古代历法特别注重上元,所以上元积年的推算,成为古人治历的重要内容。
推算上元积年不是件容易的事情,在数学上它涉及到求解一次不定方程或一次同余式问题。中国古代最早出现求上元积年之法的是汉代的《三统历》(前104)。当时的天文历算家通过求解一次不定方程ap-bq=r或ap≡r(modb)得到上元积年数,不过,由于汉代历算家们都是利用了特殊的观察数据,所以他们推算上元积年,只需要解一个同余式就可以了。到公元3世纪魏晋时代,随着天文实测精度的提高,特殊的观察逐渐被淘汰,于是用一个同余式来推算上元积年就不能解决问题,这时就提出了解两个以上的一次同余式问题。设x为上元积年,a为回归年日数,p为朔望月日数,r1为制历年冬至到本年甲子日的零时的时间,r2为冬至到本年朔旦的时间,于是有
ax≡r1(mod 60)
ax≡r2(modp)
其中60是从甲子日到甲子日的周期。
祖冲之制《大明历》时,为了使其准确性有较大的提高,对上元的选择提出了更高的要求。他除了上述冬至、朔旦时刻外,还把日、月、五大行星的位置同时加以考察,寻求它们“同出一元”的时间,即以所谓日月合壁,五星联珠,月亮恰好经其近地点和升交点时作为上元。这样,祖冲之就为自己设置了一个复杂的计算系统,它相当于求解一个由十一个同余式组成的同余式组,为了解决这个问题,祖冲之又很巧妙地选用了一些特殊的数据,先消去一些方程,使减少同余式,从而求出上元积年x来。
上元积年的推算虽非起始祖冲之,一次同余式理论也非他所创造,但是由于祖冲之的工作,使得这一理论大大深化了,并被数学家们作专门的研究。《孙子算经》里的“物不知数问题”及其解法,很可能就是依据那时天文学家的上元积年编制出来的。
《皇极历》由隋代天文学家刘焯(544—610年)制定,由于受到隋炀帝宠臣太史令袁充和张胄玄的排斥而得不到行用。但《皇极历》有许多革新,其中最主要的是为了解决日、月不均匀运动问题而创立等间距的二次内插法公式:
f(nl s)=f(nl) s2l(Δ1 Δ2) sl(Δ1-Δ2)-
s22l2(Δ1-Δ2)……
其中f(t)是时间t的函数,l为相等的时间间隔,0<s<l,n为正整数;Δ1=f(nl l)-f(nl),Δ2=f(nl 2l)-f(nl l)当l=1时,上式可化为f(n s)=f(n) sΔ s(s-l)2Δ2其中Δ=Δ1,Δ2=Δ2-Δ1为各时间点上相应的一级差分和二级差分。这个公式就是牛顿插值公式的前三项。由于各个节气之间的时间长短实际上并不相同,因此用刘焯公式计算的结果仍然不够精密。为了解决这一问题,唐代天文学家一行在《大衍历》中,又创立了不等间距的二次内插公式:f(t s)=f(t) sΔ1 Δ2l1 l2 s(Δ1l1 Δ2l2)-s2l1 l2(Δ1l1-Δ2l2)其中f(t)为已知量,l1、l2表示不同的时间间隔。
在《大衍历》中还有其他一些成就,如三次差分方法的使用,等差级数求和公式以及二次方程求根公式的应用等等。