领会历法,学会推算
落下闳钻研历法,当然是从古代对天体的认识开始的。落下闳的创新,是在继承中华两千多年对于天文的认识基础之上的创新。我们就按照科学史发展的顺序,来看一看落下闳的认识过程。
我们的祖先认识日、月、星辰有一个由浅入深、逐渐深化的过程。
中国古代天文学家利用土圭,测定每日中午表影的长度及其变化,以直接决定每年冬至的时刻。通过数百年系统观测资料的积累,在公元前5世纪左右得到了较为准确的数据:1回归年等于日。同时,通过对观测资料记载的统计数据分析和比较,发现19个回归年和235个朔望月的日数十分接近,于是得出19年7闰的规律(19×12+7=235)。实际就是测出了月球绕地球运动和地球绕太阳运动的两个周期相谐和的周期为235个月,称为置闰周期。
“太阳神鸟”与二十八宿
“太阳神鸟”金饰于2001年出土于成都金沙遗址,是21世纪我国考古的一个重大发现。“太阳神鸟”被选定为“中国历史文化遗产”标志。“太阳神鸟”是追求光明、理想、和谐、智慧,生机勃勃,开拓创新,与时俱进的时代精神的象征。“太阳神鸟”是艺术与科学的完美结晶。
图案中向四周喷射出十二道光芒的太阳,呈现出强烈的动感,象征着光明、生命和永恒。十二道太阳光芒与四鸟中的“十二”与“四”是中国文化中经常使用的数字,诸如十二个月、十二生肖、四季、四方等,表达了先民们对自然规律的深刻认识。环绕太阳飞翔的四只神鸟,反映了先民们对美好生活的向往,体现了自由、美好、团结向上的寓意。而整体完美的圆形图案寓意民族团结、和谐包容,圆形的围合也体现了保护的概念。
“太阳神鸟”不仅是艺术极品,而且含有丰富的科学内容。图中的“四鸟”表示一年有春、夏、秋、冬四季;图中的“十二道光芒”表示一年有十二个月。
古巴蜀的历法,首先从金沙遗址出土的“太阳神鸟”金饰上就形象、生动地反映出来:外层四只逆向飞行的鸟,每只鸟对应三个月牙,不多不少,不偏不倚,恰好说明每只鸟代表一个季节(三个月),四只飞行的神鸟代表着春、夏、秋、冬四季轮回;也说明古巴蜀人已经掌握四季的知识,能够根据四季的不同特点而适时地安排农活。
“太阳神鸟”内层的十二道旋涡状光芒,既像一道道火苗,也像一轮轮弯月,表示一年十二个月周而复始。这也说明古蜀人已经掌握了岁、季、月的概念及其形成的规律和原因,已经知道“岁”与太阳运行有关,“月”与月亮运行有关,一年有十二个月,体现出他们使用的是阴阳历。
金沙遗址出土的“太阳神鸟”金饰
二十八宿,由来已久
中国天文学在以后的发展,应与“太阳神鸟”有密切的关系。从“太阳神鸟”中可以看到古代的历法原始图形,也可以说从“太阳神鸟”直接或间接发展到中国古人很早就为天空的恒星画出了二十八宿的图形。那四只太阳神鸟,分别发展为:东方苍龙、北方玄武、西方白虎、南方朱雀。
最早的对二十八宿星名的完整记载出现于《吕氏春秋》。《吕氏春秋》约完成于公元前239年。于是有学者认为二十八宿的完成不可能早于公元前3世纪。1978年,湖北随县曾侯乙墓出土了二十八宿天文图,曾侯乙卒于公元前433年,因此,二十八宿完成的年代可上推到公元前5世纪之前。关于中国二十八宿的起源,需要同时考察文献记载和新的考古证据。1987年,在河南濮阳出土的公元前5000年仰韶文化层一墓葬中的发现,说明二十八宿的起源可能远早于帝尧时代(程贞一、闻人军:《周髀算经译注》,上海古籍出版社,2012年,第113—114页)。尧大约生活于公元前2377—前2259年。
二十八宿是中国古代天文学家的重要创作,把天空中可见的星分成二十八组,分东南西北四方各七宿,称为二十八宿。
东方苍龙七宿是:角、亢、氐、房、心、尾、箕;
北方玄武七宿是:斗、牛、女、虚、危、室、壁;
西方白虎七宿是:奎、娄、胃、昴、毕、觜、参;
南方朱雀七宿是:井、鬼、柳、星、张、翼、轸。
在公元前8世纪至公元前5世纪的《书经·尧典》中就写道:
日中星鸟,以殷仲春。
日永星火,以正仲夏。
宵中星虚,以殷仲秋。
宵永星昴,以正仲冬。
这就是以日与二十八宿的恒星来判定春夏秋冬四季。春季有三个月:孟春、仲春、季春;夏季有三个月:孟夏、仲夏、季夏;秋季有三个月:孟秋、仲秋、季秋;冬季有三个月:孟冬、仲冬、季冬。孟春就是春季的第一个月,仲春就是春季的第二个月,季春就是春季的第三个月。夏秋冬以此类推。
具体说就是以四组恒星黄昏时在正南方天空出现来定季节。当黄昏时见到鸟星升到中天,即仲春,此时,昼夜长度相等(春分);当大火升到正南方天空,即仲夏,此时,白昼时间最长(夏至);当虚宿一出现在中天时,即仲秋,此时,昼夜长度又相等(秋分);当昴星团出现在正南方天空,即仲冬,此时,白昼时间最短(冬至)。
《月令》中已记载了一年十二个月中,太阳处在二十八宿的哪一颗恒星的位置上。当然并不是非常准确。落下闳已经知道这些基础知识。后来,他自制赤道式浑仪就是为了比较准确地测定二十八宿之间的赤道距度(赤经差),更加准确地确定二十四节气与二十八宿之间的对应关系。《书经·尧典》《月令》的记载,同“太阳神鸟”的象征是一致的,是前后相承的。
远古的这四只太阳神鸟,经过古人一年一年观测天象,终于演化为东方苍龙七宿:角、亢、氐、房、心、尾、箕;北方玄武七宿:斗、牛、女、虚、危、室、壁;西方白虎七宿:奎、娄、胃、昴、毕、觜、参;南方朱雀七宿:井、鬼、柳、星、张、翼、轸。
落下闳年轻时,在阆中老家高阳山观测天象时就已非常熟悉上述的二十八宿,并且熟悉不同节气时,太阳、月亮及“五星”——木星、火星、土星、金星、水星,处在哪些星宿位置上。
干支纪日和干支纪年
发展农业需要了解一年四季春夏秋冬的变化,天文历法是不可缺少的。在汉武帝改历之前,中国古代有六种历法:黄帝历、颛顼历、夏历、殷历、周历、鲁历。之所以有不同名称,或因行用的地区不同,或因采用的岁首不同。它们都是战国时期及之前创制的。
黄帝历中已经有从甲骨文时代就开始使用的干支纪日和干支纪年。
中华民族的祖先在商朝(约前1300年)就使用了文字“甲骨文”。甲骨文里就有了有关日月运行、天文历法的一些知识的零星记载。商周时期就有了以天干、地支依次排列组成的六十个干支名称的纪日表,这是我国最早的日历。
天干:甲、乙、丙、丁、戊、己、庚、辛、壬、癸
地支:子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥
十天干、十二地支排列组合,一个“甲子”周期是六十日、六十年。这是从古至今在中国历法中一直使用的。六十月的甲子周期也曾经使用过,现在已经没有使用了。
这里有一个最基础的数学问题:10和12的最小公倍数是60。
落下闳在求学时期就学会一种最基本的“算法”:求几个数的最小公倍数的方法。这是落下闳在“运算转历”中,大量使用的一种基本算法。这就是他首先使用的“通其率”算法——通过辗转相除,求渐进分数。这种算法我们称为“落下闳算法”。这种算法的内涵,有丰富的数学原理。落下闳是天文学家,也是数学家。他超越当时的天文学家的重要原因,是他精通历法所需的各种运算方法。
“落下闳算法”的程序与应用连分数求渐进分数的算法是一样的。“落下闳算法”说起来简单,但是,用大数据运算起来是复杂的。渐进分数算法有两大性质:其一,两个相邻的渐进分数总是一强一弱;其二,两个相邻的渐进分数的行列式等于1。这些性质直接启发后人得到解“一次同余式”,以及解“不定方程组”的方法,直接启发秦九韶得到著名的“大衍求一术”的方法。落下闳算法,不仅由浅入深,而且引人入胜!
“浑天说”与二十四节气
在落下闳出生之后的几十年里,社会上皆用《颛顼历》,他对《颛顼历》有深入的理解。
二十八宿与二十四节气关系示意图
在先秦的历法中,就已经有了冬至、夏至、春分、秋分这些节气,但直到公元前150年左右,才有了对二十四节气系统而完整的记载。《周髀算经》第三部分已经有二十四节气日影长度的测量,按照钱宝琮与刘朝阳的考证,其出现应该不会晚于公元前100年。但是,《周髀算经》内所记载的“日月历法”,是建立在“盖天说”基础上的,这与建立在“浑天说”基础上的汉武帝颁布的《太初历》有很大差别。
“盖天说”认为,日月总在大地之上运行;而“浑天说”中的天体是可以运行到大地之下的。落下闳在公元前110—前104年,制作浑仪观测二十八宿的赤道距度(赤经差),并在《太初历》中将二十八宿与二十四节气结合起来。“浑天说”的“宇宙论”知识,从汉武帝时代开始,才在中国天文历法中兴起,并逐渐占据统治地位。
中国古代有六种历法,在春秋战国时期,巴蜀大地采用的是哪种历法,尚没有文献记载。但这六种历法的共同点是“四分历”,即一年为日。一天的四分之一,为古代历法时间的最小单位。
在中国古代史系统里,蜀的早期历史与黄帝及其元妃嫘祖,以及昌意和帝颛顼都有极为深厚的关系。《吕氏春秋·古乐篇》写道:“帝颛顼生自若水。”若水即雅砻江,纵贯四川的西部,东与岷山(蜀山)相近。简言之,颛顼是四川人,颛顼的故里就是现在的四川省攀枝花市米易县。
《山海经·海内经》也说:“黄帝妻雷祖生昌意,昌意降处若水,生韩流。韩流……取淖子,曰阿女,生帝颛项。”春秋战国时期,巴蜀大地采用《颛顼历》的可能性较大。据考证,颛顼帝的出生地在今四川米易。
秦始皇于公元前221年统一中国,这是一个重大历史事件。秦统一中国之前的时代,称为“先秦时代”。早在公元前316年,秦就攻占巴蜀,使巴蜀的历史发生划时代的变化。秦和巴蜀在当时,可能都是使用《颛顼历》。
秦统一中国之后,在全国颁行统一的历法就是《颛顼历》。《颛顼历》以十月为岁首,岁终置闰。秦统一天下时间不长,从公元前221年到前206年。秦始皇和秦二世还来不及制定一统天下之后的秦朝的新历法,秦朝就被汉朝取而代之。
落下闳奔赴京城长安参加改革历法之前,他已经深度学习了古代六历的数理结构,已经认识了春夏秋冬四季如何从天文上认识和辨别,认识了干支纪日、干支纪年,认识了定性的二十八宿及二十四节气,认识了月的顺序(如下表)。
地支的十二个汉字,子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥,可以有多种用处。上面那张“季月节气表”,用地支的数字来表示月,只是古人的规定。以十一月(冬月)开始,定义为“子月”;十二月(腊月)定义为“丑月”;一月(正月)定义为“寅月”。为什么将立冬的这一个月定义为“子月”?从天文测量看,冬至的时刻比较容易确定。《太初历》也是将朔日(初一)、冬至、甲子定为历元,即历法的第一天。
《中华世纪坛青铜甬道铭文》中写道:“公元前104年,丁丑,汉武帝太初元年造《太初历》,用夏正,始以正月(建寅月)为岁首。”这就告诉我们,公元前104年,那一年是丁丑年,采用夏朝的规定,始以正月为一年之首,也就是以“寅月为一年的第一个月”。
有人问:为什么不将立春这一天规定为“元旦”并作为“春节”呢?在汉历中,每一个月的第一天是初一,初一又称为朔日,这一日是看不见月亮的,而十五一定是月亮最圆的一天。但是,立春的那一天,是根据太阳的位置确定的,故不一定就是朔日(初一),当然也有年份立春那天正好是初一。比如在汉武帝天汉元年(前100年),正月初一(朔日),正好是立春,但不可能年年如此。