-
Notifications
You must be signed in to change notification settings - Fork 45
/
Copy pathQinHanCalendars_simp.html
executable file
·1 lines (1 loc) · 51 KB
/
QinHanCalendars_simp.html
1
<!DOCTYPE html><html lang="zh"><meta charset="UTF-8"><meta name="keywords" content="农历, 农历编算, 秦与汉初历法"><meta name="viewport" content="width=device-width,initial-scale=1"><head><title>秦与汉初历法的复原方法</title><link rel="stylesheet" href="calendar_chinese_min.css"><script src="header_min.js"></script><style>body{counter-reset:sec-counter}sect{counter-reset:subsec-counter}sect::before{counter-increment:sec-counter 1;content:counter(sec-counter) ". "}table.normal td,table.normal th{font-size:90%;padding:2px;text-align:center}figcaption{display:block;font:16px/20px verdana,arial,helvetica,sans-serif;margin:0 0 5px 0;letter-spacing:4px;line-height:22px}</style><base href="https://ytliu0.github.io/ChineseCalendar/"><script async src="https://www.googletagmanager.com/gtag/js?id=G-SN0QJRDXXT"></script><script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-SN0QJRDXXT")</script></head><body onload='header(2,"","QinHanCalendars")'><div id="wrapper0"><div id="menu"></div><div id="language"></div><h1>秦 与 汉 初 (公 元 前 221 年 – 前 104 年) 历 法 的 复 原 方 法</h1><p>初稿: 2019年4月</p><br><p>本文细述本网站对秦至汉初(公元前221年–前104年)历法的计算,历法的复原方法采用李忠林在2012年发表的「秦至汉初(前246至前104)历法研究—以出土历简为中心」<sup><a href="QinHanCalendars_simp.html#Li2012">李忠林12</a></sup>(也可参看李忠林2016年的著作《秦至汉初历法研究》<sup><a href="QinHanCalendars_simp.html#Li2016">李忠林16</a></sup>)。复原方法的有效年限估计是从前246年至前104年,但是本网站只用在前221年至前104年。此复原法的要旨是把秦至汉初分为三个时段,每个时段有各自的合朔历元,然后用四分术的朔策计算每个时段的合朔时刻,置闰按照3-3-3-2-3-3-2的年序经验法则在十九年置七个闰月,但在汉文帝后元元年(公元前163年)起改变了章周的起算年<sup><a href="QinHanCalendars_simp.html#Li2009">李忠林09</a></sup>。二十四节气的时刻则与古六历之一的颛顼历相同。按李忠林的说法,置闰采用经验法则,二十四节气与闰月规则毫不相干,这点我认为值得再探讨,但这和复原历法没有直接关系,不在这里讨论。</p><p>本文所述的复原方法涉及古六历和本网站之古六历计算法,这些资料在本网站的<a href="guliuli_simp.html">古六历网页</a>有叙述,这里就不重复了。</p><br><div style="border:1px solid #000;padding:10px"><p><b>内容</b></p><ol><li><a href="QinHanCalendars_simp.html#intorduction">引 言</a></li><li><a href="QinHanCalendars_simp.html#computation">二 十 四 节 气 和 合 朔 的 计 算</a></li><li><a href="QinHanCalendars_simp.html#leap">闰 月 和 积 月</a></li><li><a href="QinHanCalendars_simp.html#examples">复 原 历 法 计 算 例 子</a></li><li><a href="QinHanCalendars_simp.html#conjDiff">历 法 后 天 日 数</a></li><li><a href="QinHanCalendars_simp.html#stermTable">秦 至 汉 初 节 气 表</a></li></ol> <a href="QinHanCalendars_simp.html#references">备 注 和 参 考 文 献</a></div><br><sect id="introduction">引 言</sect><p>历代学者对于秦至汉初的历法一直感到困惑。《史记》说汉初沿用秦朝历法,《汉书》进一步说明所用的历法是古六历之一的颛顼历。但是历代学者已发现用颛顼历推算出的汉初历日与文献常有不合,而多与殷历相合。自宋人刘羲叟到近代学者陈垣,都主张秦与汉初的历法是颛顼历或殷历。到了1972年,在山东省临沂市银雀山汉墓出土了《元光元年历谱》,我们因此得知汉武帝元光元年(公元前134年)的历日,历谱所载的十三个朔日干支有十个与殷历合,有七个与颛顼历合,说明元光元年历谱所用的历法既不是颛顼历,也不是殷历,于是掀起了秦与汉初历法研究的热潮,学者们寻求一套历法复原方法以符合《元光元年历谱》。</p><p>汉初历法虽然不是古六历的任何一种历法,但一般认为应该仍是采用古六历的四分术。秦与汉初的历法用颛顼历的月序,以十月为一年之始,月序数是十月、十一月、十二月、正月、二月……九月,闰月置于年终,称为「后九月」,这点也是没有争议的。问题是只根据《元光元年历谱》不能找出以四分术为本的唯一复原方法。据张培瑜在《中国古代历法》<sup><a href="QinHanCalendars_simp.html#ZCBH2008">张陈薄胡</a></sup>第三章第九节和「根据新出历日简牍试论秦与汉初的历法」<sup><a href="QinHanCalendars_simp.html#Zhang2007">张培瑜07</a></sup>所述,以《元光元年历谱》复原汉初历法有58种可能,合朔时刻的上下限可相差87分钟,在没有其他资料的情况下无法判断谁对谁错,很多学者都提出各自的复原方法。上世纪八十年代及以后,情况又有了新进展。先是在湖北江陵县张家山247号汉墓发现了从汉高祖五年(公元前202年)到高后二年(前186年)十七年的历日竹简,后来又在湖北省沙市区关沮乡清河村周家台30号秦墓出土的秦简、和在湖南西部里耶镇出土的秦简都有秦朝的历日资料。从这些考古新发现我们得知秦与汉初施行的历法比以前认识的复杂,先前没有一家的复原法能与新出土的历日完全吻合。</p><p>据我所知,目前有两篇文章尝试用这些新出土的简牍复原秦与汉初的历法<sup><a href="QinHanCalendars_simp.html#fn1">注一</a></sup>。其一是上面提及的张培瑜在2007年发表的「根据新出历日简牍试论秦与汉初的历法」<sup><a href="QinHanCalendars_simp.html#Zhang2007">张培瑜07</a></sup>,另一是李忠林在2012年发表的「秦至汉初(前246至前104)历法研究—以出土历简为中心」<sup><a href="QinHanCalendars_simp.html#Li2012">李忠林12</a></sup>。李忠林的研究成果也发表在其著作《秦至汉初历法研究》<sup><a href="QinHanCalendars_simp.html#Li2016">李忠林16</a></sup>,笔者感谢李忠林教授赠送此书。两者都认为秦与汉初的历法不同,而张家山竹简历日所依据的汉初历法与《元光元年历谱》用的汉武帝时期历法又不相同,但两篇文章提出的历法复原方法不同。</p><p>张培瑜对秦朝历法的复原法采用四分术的朔策和岁实,以公元前606年(乙卯)己巳夜半霜降合朔齐同为历元(公历日期是前607年10月27日),并以小雪固定在十月为置闰标准。复原历法与已公布的考古发现及文献记载的(由秦昭襄王末年到秦亡)秦国历日都相符。文章的表九载有从秦王政元年(公元前246年)到秦亡(前207)的朔闰表。</p><p>至于汉初的历法,张培瑜的结论是不可能找到一种以四分术为本的历法可以完全满足从汉初到太初改历前这102年的全部历日。也就是说,如果汉初施行的历法确是四分术,则其间历法必有修改过;如果汉初的历法没有修改过,则这历法一定不是四分术。张培瑜试图打破四分术的框架,以一种平朔法来复原汉初历法。他假设的朔策是(29+663/1249)日,岁实是365.2496734日或(365+311.8420766/1249)日。这样的岁实看似莫明其妙,其实只是朔策的235/19倍,写成(365+5925/23731)日也可以。用235:19的比例显然是为了符合十九年七闰的章周规律。张培瑜没有明确说明复原历法的历元,但文章的表十给出从汉高祖元年(公元前206年)到汉武帝元封六年(前105年)的朔闰表<sup><a href="QinHanCalendars_simp.html#fn2">注二</a></sup>。文章也没有说明复原历法的置闰法则,但有提及另一复原历法的置闰法则是把立春固定在正月,这是相当奇怪的置闰法则,而且明显不符合文末表十的朔闰表。我根据张培瑜在《中国古代历法》<sup><a href="QinHanCalendars_simp.html#ZCBH2008">张陈薄胡</a></sup>第三章第九节所述的置闰法则得出正确的闰月。这法则是在汉文帝后元元年(公元前163年)前把冬至固定在十一月,在后元元年后则把雨水固定在正月。</p><p>张培瑜用非四分术的方法复原汉初历法,颇似他对春秋时期鲁国历法的复原(张培瑜的春秋历复原法可参考《中国古代历法》<sup><a href="QinHanCalendars_simp.html#ZCBH2008">张陈薄胡</a></sup>第三章第五节,本网站的春秋历就是采用这复原方法,详情可参阅<a href="chunqiu_simp.html">春秋历网页</a>。)。张培瑜并没有给出汉初行用非四分术的论据,我应为这做法只是数据拟合的模型,不是汉初行用历法的依据。</p><p>李忠林在「秦至汉初(前246至前104)历法研究—以出土历简为中心」<sup><a href="QinHanCalendars_simp.html#Li2012">李忠林12</a></sup>提出另一复原方法。他认为既然秦、汉初与汉武帝时期的历日资料显示这三段时间行用的历法不同,最简单的解释是历法在这段期间至少有过兩次改动。他于是用三种以四分术为本的历法复原秦至汉初一百四十多年间的历法,三种历法以A、B、C名之。他主张三历法都用颛顼历的方法计算二十四节气,只是合朔计算采用三个历元。历法A的历元是秦孝公元年(公元前361年)十月丁巳朔无余(公历日期是前362年11月18日),历法B的历元是公元前240年十月乙亥朔无余(公历日期是前241年10月31日),历法C的历元是公元前206年十一月丁巳朔无余(公历日期是前207年12月14日)。「朔无余」是指合朔小余是零,即合朔发生在夜半(午夜零时)。历法A的行用时间暂定为秦王政以前到汉高祖五年十二月,历法B从汉高祖五年正月到文帝前元十六年后九月,历法C从文帝后元元年十月到太初元年五月。</p><p>李忠林对于秦与汉初的置闰法则有独特见解,认为置闰只是按照3-3-3-2-3-3-2的年序经验法则在十九年置七个闰月,但在汉文帝后元元年(公元前163年)起改变了章周的起算年。其实,李忠林在2009年的文章「试论秦汉初历法的置闰规则」<sup><a href="QinHanCalendars_simp.html#Li2009">李忠林09</a></sup>已指出秦至汉初的所有闰月皆可从出土历简与存世文献推出来,所以虽然我们不知道当时行用的置闰法则,但是仍能根据推出来的闰月复原历法。</p><p>张培瑜与李忠林两人提出的秦与汉初历法复原方法虽然不同,但是比较他们提供的朔闰表发现在140多年间、1700多个朔日里,只有19个朔日有差异,现在把这19个差异列于下表以供参考。表中的年份除了给出中国传统的帝王或年号纪年外,还用N<sub>y</sub>表示年首最接近公元y年1月1日的历年。例如<span class="nowrap">N<sub>-202</sub></span>表示汉高祖四年,始于公元<span class="nowrap">-203</span>年(即前204年)11月11日、终于<span class="nowrap">-202</span>年10月30日。</p><br><table><caption><b>表 一: 张 培 瑜<sup><a href="QinHanCalendars_simp.html#Zhang2007">张培瑜07</a></sup> 和 李 忠 林<sup><a href="QinHanCalendars_simp.html#Li2012">李忠林12</a></sup> 的 朔 闰 表 差 异</b></caption><tr><th>年份</th><th>月份<sup></sup></th><th>朔日 — 张培瑜</th><th>朔日 — 李忠林<sup>*</sup></th></tr><tr><td>N<sub>-245</sub> 秦王政元年</td><td>二</td><td>戊申 (-245年3月5日)</td><td>丁未 (-245年3月4日)</td></tr><tr><td>N<sub>-239</sub> 秦王政七年</td><td>九</td><td>庚子 (-239年9月21日)</td><td>己亥 (-239年9月20日)</td></tr><tr><td>N<sub>-232</sub> 秦王政十四年</td><td>三</td><td>壬辰 (-232年4月9日)</td><td>辛卯 (-232年4月8日)</td></tr><tr><td>N<sub>-226</sub> 秦王政二十年</td><td>后九</td><td>甲申 (-226年10月27日)</td><td>癸未 (-226年10月26日)</td></tr><tr><td>N<sub>-204</sub> 汉高祖二年</td><td>十</td><td>辛巳 (-205年11月3日)</td><td>壬午 (-205年11月4日)</td></tr><tr><td>N<sub>-204</sub> 汉高祖二年</td><td>十二</td><td>庚辰 (-204年1月1日)</td><td>辛巳 (-204年1月2日)</td></tr><tr><td>N<sub>-204</sub> 汉高祖二年</td><td>二</td><td>己卯 (-204年2月29日)</td><td>庚辰 (-204年3月1日)</td></tr><tr><td>N<sub>-203</sub> 汉高祖三年</td><td>二</td><td>癸卯 (-203年3月19日)</td><td>甲辰 (-203年3月20日)</td></tr><tr><td>N<sub>-203</sub> 汉高祖三年</td><td>四</td><td>壬寅 (-203年5月17日)</td><td>癸卯 (-203年5月18日)</td></tr><tr><td>N<sub>-202</sub> 汉高祖四年</td><td>七</td><td>乙丑 (-202年8月3日)</td><td>丙寅 (-202年8月4日)</td></tr><tr><td>N<sub>-202</sub> 汉高祖四年</td><td>九</td><td>甲子 (-202年10月1日)</td><td>乙丑 (-202年10月2日)</td></tr><tr><td>N<sub>-183</sub> 汉高后四年</td><td>二</td><td>丁丑 (-183年3月8日)</td><td>戊寅 (-183年3月9日)</td></tr><tr><td>N<sub>-177</sub> 汉文帝前元二年</td><td>九</td><td>己巳 (-177年9月25日)</td><td>庚午 (-177年9月26日)</td></tr><tr><td>N<sub>-170</sub> 汉文帝前元九年</td><td>三</td><td>辛酉 (-170年4月13日)</td><td>壬戌 (-170年4月14日)</td></tr><tr><td>N<sub>-163</sub> 汉文帝前元十六年</td><td>十</td><td>癸丑 (-164年10月30日)</td><td>甲寅 (-164年10月31日)</td></tr><tr><td>N<sub>-136</sub> 汉武帝建元四年</td><td>五</td><td>癸卯 (-136年5月26日)</td><td>甲辰 (-136年5月27日)</td></tr><tr><td>N<sub>-129</sub> 汉武帝元光五年</td><td>十一</td><td>乙未 (-130年12月13日)</td><td>丙申 (-130年12月14日)</td></tr><tr><td>N<sub>-112</sub> 汉武帝元鼎四年</td><td>十二</td><td>丙戌 (-112年1月4日)</td><td>丁亥 (-112年1月5日)</td></tr><tr><td>N<sub>-106</sub> 汉武帝元封四年</td><td>七</td><td>戊寅 (-106年7月23日)</td><td>己卯 (-106年7月24日)</td></tr></table><p><sup>*</sup> 李忠林朔闰表中汉高祖七年五月朔的日干支有误:己巳应改为己卯<sup><a href="QinHanCalendars_simp.html#fn3">注三</a></sup>,这错误在<span class="nowrap">《秦至汉初历法研究》<sup><a href="QinHanCalendars_simp.html#Li2016">李忠林16</a></sup></span>改正了。</p><br><p>鉴于两套复原方法都能完全符合已出土的历简和传世文献,而且差异不大,二者可任选其一。仔细比较两套算法,我认为李忠林的方法较为可取,所以本网站采用他的复原方法。下面各节详细说明本网站的具体计算方法。</p><br><sect id="computation">二 十 四 节 气 和 合 朔 的 计 算</sect><p>复原历法的二十四节气和颛顼历相同,计算方法在<a href="guliuli_simp.html">古六历网页</a>已有叙述,这里只把公式列出。根据<a href="guliuli_simp.html#computation">古六历网页</a>公式(4)和表二的数据,可得最接近公历y年1月1日的冬至儒略日数是<br>JD(W(y)) = 1721050.5 + 19/32 + y·P<sub>s</sub> (1)<br>其中P<sub>s</sub>=365.25是四分术的岁实。其他二十四节气的儒略日数可用<a href="guliuli_simp.html#computation">古六历网页</a>公式(5)计算:<br>JD<sub>q</sub>(j, y) = JD(W(y)) + (j/24)·P<sub>s</sub> (2)<br>其中j是从冬至算起的节气数,以j=0表示冬至、j=1表示小寒、j=2表示大寒、j=3表示立春……j=23表示大雪(二十四节气的名称和次序可参阅本网站的<a href="solarTerms_simp.html">二十四节气网页</a>)。式中除了冬至落在y-1年的12月末外,其余节气都在公元y年。</p><p>合朔的儒略日数也可以写成<a href="guliuli_simp.html#computation">古六历网页</a>中的公式(1):<br>JD(M<sub>i</sub>) = JD(M<sub>0</sub>) + i·P<sub>L</sub> (3)<br>式中P<sub>L</sub>=(29+<span class="nowrap">499/940</span>)是四分术的朔策,i是从历元合朔M<sub>0</sub>起算的积月,M<sub>i</sub>是从历元合朔M<sub>0</sub>起算的第i个合朔,JD(M<sub>0</sub>) 是历元合朔M<sub>0</sub>的儒略日数。</p><p>上节说过复原历法采用三个合朔历元。以历法A为例,历元取秦孝公元年(公元前361年)十月丁巳朔无余。用上一节定义的历年记号,秦孝公元年是<span class="nowrap">N<sub>-360</sub></span>,颛顼历的十月朔是公元前362年11月17日,日干支是丙辰,比历法A的历元早一日。公元前362年11月18日(丁巳日)夜半的儒略日数是1589523.5,由此得出历法A的JD(M<sub>0</sub>)=1589523.5。历法B和C的JD(M<sub>0</sub>)也可用类似的方法计算,结果列于下表。</p><br><table><caption><b>表 二: 历 法 A、B、C 的 历 元、行 用 时 间 和 JD(M<sub>0</sub>) 的 数 值</b></caption><tr><td></td><th>历 法 A</th><th>历 法 B</th><th>历 法 C</th></tr><tr><th>历元</th><td><span class="nowrap">N<sub>-360</sub></span>十月丁巳朔无余</td><td><span class="nowrap">N<sub>-239</sub></span>十月乙亥朔无余</td><td><span class="nowrap">N<sub>-205</sub></span>十一月丁巳朔无余</td></tr><tr><th>行用时间</th><td><span class="nowrap">N<sub>-245</sub></span>(秦王政元年)之前 – <span class="nowrap">N<sub>-201</sub></span>(汉高祖五年)十二月</td><td><span class="nowrap">N<sub>-201</sub></span>(汉高祖五年)正月 – <span class="nowrap">N<sub>-163</sub></span>(文帝前元十六年)后九月</td><td><span class="nowrap">N<sub>-162</sub></span>(文帝后元元年)十月 – <span class="nowrap">N<sub>-103</sub></span>(武帝太初元年)五月</td></tr><tr><th>JD(M<sub>0</sub>)</th><td>1589523.5</td><td>1633701.5</td><td>1646163.5</td></tr></table><br><p>如果知道了从历元合朔到历年<span class="nowrap">N<sub>y</sub></span>十月朔的积月 A(y),<span class="nowrap">N<sub>y</sub></span>的十月朔便可用公式(3)把i换成A(y)求得,<span class="nowrap">N<sub>y</sub></span>的其他月份也可轻易计算。但是要知道A(y)的数值就要知道<span class="nowrap">N<sub>y</sub></span>之前的闰月分布。下一节探讨计算闰月和A(y)的方法。</p><br><sect id="leap">闰 月 和 积 月</sect><p>在第一节(引言)已提及秦至汉初一百四十多年间的所有闰月都可从出土历简和存世文献推出来,所以即使不知道当时行用的置闰法则也能根据闰月的实际分布复原秦至汉初的历法,本网站就是以这原则处理秦至汉初的闰月。</p><p>年首积月A(y)可用类似本网站<a href="chunqiu_simp.html">复原春秋历网页</a>所述的方法计算。由于春秋时期鲁国的历法没有固定的置闰规则,闰月和A(y)都必须根据闰月的实际年份逐年计算。秦至汉初历法的闰月则分布规整,而且符合<a href="guliuli_simp.html#runyu">古六历网页</a>所述的3-3-3-2-3-3-2年份次序,只是在汉文帝后元元年(<span class="nowrap">N<sub>-162</sub></span>)起改变了章周的起算年(详情可参阅李忠林的「试论秦汉初历法的置闰规则」<sup><a href="QinHanCalendars_simp.html#Li2009">李忠林09</a></sup>),所以闰月和A(y)不须要如春秋历般逐年计算,只要掌握了一章周内十九年的数据便可推出其他年份的闰月和A(y)。具体的计算方法是先定义两个函数J和R:</p><table class="normal"><caption><b>表 三: 函 数 J 和 R</b></caption><tr><th>k</th><td>0</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td><td>11</td><td>12</td><td>13</td><td>14</td><td>15</td><td>16</td><td>17</td><td>18</td></tr><tr><th>J(k)</th><td>0</td><td>0</td><td>1</td><td>0</td><td>0</td><td>1</td><td>0</td><td>0</td><td>1</td><td>0</td><td>1</td><td>0</td><td>0</td><td>1</td><td>0</td><td>0</td><td>1</td><td>0</td><td>1</td></tr><tr><th>R(k)</th><td>0</td><td>12</td><td>24</td><td>37</td><td>49</td><td>61</td><td>74</td><td>86</td><td>98</td><td>111</td><td>123</td><td>136</td><td>148</td><td>160</td><td>173</td><td>185</td><td>197</td><td>210</td><td>222</td></tr></table><p>此处k是从某一章首起算的积年:k=0表示章周的第一年、k=1表示章周的第二年、k=2表示章周的第三年、……、k=18表示章周的第十九年。J(k)的数值表示该年有没有闰月(即后九月):J(k)=0表示没有闰月、J(k)=1表示有闰月。表中的0、0、1、0、0、1、0、0、1、0、1、0、0、1、0、0、1、0、1正是3-3-3-2-3-3-2的闰月规律。R(k)是从章周第一年第一个月起算的年首积月,R(k)可用以下递归公式计算:<br>R(0) = 0, R(k) = R(k-1) + 12 + J(k-1) (k=1, 2, ..., 18) (4)<br>也就是说年首积月第一年是0,其后每年增加12或13:没有闰月就增加12、有闰月则增加13。表三所列的R(k)就是用递归公式(4)计算的结果。有了J(k)和R(k)两个函数后,年首到历元的积月A(y)可用以下公式计算:<br>c = floor( (y - y<sub>z</sub>)/19 ) (5)<br>k = y - y<sub>z</sub> - 19c (6)<br>闰月: 如果J(k)=0就没有闰月、如果J(k)=1就有闰月 (7)<br>年首积月: A(y) = ΔA + 235c + R(k) (8)<br>其中floor(x)表示不小于x的最大整数,<span class="nowrap">y<sub>z</sub></span>是 某一章首的年份。如前述,汉文帝后元元年改变了章周的起算年,所以<span class="nowrap">y<sub>z</sub></span>在文帝后元元年前和后元元年后的数值不同。c就是从<span class="nowrap">y<sub>z</sub></span>算起到y对上一个章首的周期数。式(6)中k是从y到对上一个章首的积年,写成k = mod(y - <span class="nowrap">y<sub>z</sub></span>, 19)也可以,此处mod(X,Y)指X除以Y后所得之余数。公式(8)的最后两项代表从<span class="nowrap">y<sub>z</sub></span>到y的积月,但是A(y)是从历元到y的积月,所以要加上修正值<span class="nowrap">ΔA</span>。<span class="nowrap">ΔA</span>和<span class="nowrap">y<sub>z</sub></span>在历法A、B、C的数值列于下表,为方便查阅,这里把表二的资料也一并列出。如上述,<span class="nowrap">y<sub>z</sub></span>在汉文帝后元元年前后取不同数值,但汉文帝后元元年正是历法C的起用年,故<span class="nowrap">y<sub>z</sub></span>在历法A和B取同一数值,在历法C取另一数值。</p><table><caption><b>表 四: 历 法 A、B、C 的 <span class="nowrap">y<sub>z</sub></span> 和 <span class="nowrap">ΔA</span>。为 方 便 查 阅,这 里 把 表 二 的 资 料 也 一 并 列 出。</b></caption><tr><td></td><th>历 法 A</th><th>历 法 B</th><th>历 法 C</th></tr><tr><th>历元</th><td><span class="nowrap">N<sub>-360</sub></span>十月丁巳朔无余</td><td><span class="nowrap">N<sub>-239</sub></span>十月乙亥朔无余</td><td><span class="nowrap">N<sub>-205</sub></span>十一月丁巳朔无余</td></tr><tr><th>行用时间</th><td><span class="nowrap">N<sub>-245</sub></span>(秦王政元年)之前 – <span class="nowrap">N<sub>-201</sub></span>(汉高祖五年)十二月</td><td><span class="nowrap">N<sub>-201</sub></span>(汉高祖五年)正月 – <span class="nowrap">N<sub>-163</sub></span>(文帝前元十六年)后九月</td><td><span class="nowrap">N<sub>-162</sub></span>(文帝后元元年)十月 – <span class="nowrap">N<sub>-103</sub></span>(武帝太初元年)五月</td></tr><tr><th>JD(M<sub>0</sub>)</th><td>1589523.5</td><td>1633701.5</td><td>1646163.5</td></tr><tr><th>y<sub>z</sub></th><td>-225</td><td>-225</td><td>-179</td></tr><tr><th>ΔA</th><td>1670</td><td>174</td><td>321</td></tr></table><br><p>有了公式(1)–(3)、(5)–(8)、表二、表三和表四的数据就可以计算秦至汉初一百四十多年间的历法,下一节用两个例子展示实际的计算。</p><p>虽然复原历法有效年限估计是秦王政元年前到汉武帝太初元年五月,本网站<a href="index_simp.html">年历网页</a>从公元<span class="nowrap">-220</span>年(即前221年)起才用复原历法、<a href="table_simp.html">朔闰表网页</a>则从<span class="nowrap">N<sub>-220</sub></span>年(即秦始皇二十六年)起才用复原历法(<a href="index_simp.html">年历网页</a>以公历为主、<a href="table_simp.html">朔闰表网页</a>则以农历为主)。两网页都在汉武帝太初元年五月起改用张培瑜《三千五百年历日天象》<sup><a href="QinHanCalendars_simp.html#Zhang1997">张培瑜97</a></sup>的数据<sup><a href="QinHanCalendars_simp.html#fn4">注四</a></sup>。复原历法的太初元年三月是小月、四月是大月、五月是小月。改了历法后,五月朔提前了一天,使四月变成小月,而新历法的五月又是小月,于是出现了三、四、五三个相连小月,这在平朔法则是不可能的,只有在改历时才可能出现。如果在太初元年六月才改用太初历,就会使五月只有二十八日,这在平时也是不可能出现的。</p><br><sect id="examples">复 原 历 法 计 算 例 子</sect><h3 style="letter-spacing:4px">例一:计算<span class="nowrap">N<sub>-130</sub></span>(汉武帝元光四年)的所有月份,以及小雪、冬至、立春的日期和月龄。</h3><p>先计算月份。根据表四,<span class="nowrap">N<sub>-130</sub></span>应用历法C、<span class="nowrap">JD(M<sub>0</sub>)</span>取1646163.5、<span class="nowrap">y<sub>z</sub></span> = -179、<span class="nowrap">ΔA</span> = 321。用公式(5)–(8)及表三得出:<br>c = floor( (-130 + 179)/19) = 2<br>k = -130 + 179 - 19×2 = 11<br>J(11) = 0 ⇒ <span class="nowrap">N<sub>-130</sub></span>没有后九月<br>A(-130) = 321 + 235×2 + 136 = 927。<br>有了年首积月后,<span class="nowrap">N<sub>-130</sub></span>十月朔的儒略日数用公式(3)把i=A(-130)计算:<br>JD<sub>十月朔</sub> = 1646163.5 + 927×(29+499/940) = 1673538.5 + 93/940<br>合朔小余是93(略去分母940),用现行的时间系统即是说合朔时间是2时22分28秒。朔日正午的儒略日数是1673539,用儒略日转公历的标准方法(例如<a href="https://en.wikipedia.org/wiki/Julian_day#Julian_or_Gregorian_calendar_from_Julian_day_number" target="_blank">理查斯算法</a>)算出对应的公历日期是公元前132年11月25日,用<a href="sexagenary_simp.html">干支网页</a>的公式求得朔日的天干数是<br>1 + mod(1673539-1, 10) = 9,日天干是壬;朔日的地支数是<br>1 + mod(1673539+1, 12) = 9,日地支是申,所以朔日干支是壬申。<br><span class="nowrap">N<sub>-130</sub></span>的其他月份的合朔日期和小余只须把十月朔的时刻加上朔策的整数倍便可求得。传统的计算法是用大小余,日数先定为29,把合朔小余加499(略去分母940),如果大于940则减去940并把日数进一得30,下一个朔日便是29日或30日后。例如十月朔是壬申,小余93,把小余加499得592,日数是29,所以十月是小月,十一月朔在壬申日后29日。29=3×10-1,所以天干是壬之前的第一个天干,即辛;29=2×12+5,所以日地支是申之后的第五个地支(数到亥后回到子再数),即丑。因此十一月朔是辛丑,小余是592。公历日期是11月25日之后29日,即11月(25+29)日=12月(25+29-30)日=12月24日。当然,传统算法在编写程式上会较为麻烦,不及儒略日数那么方便。下表把十月至九月的合朔日期、干支和小余列出。</p><table><caption><b>表 五: <span class="nowrap">N<sub>-130</sub></span> (汉 武 帝 元 光 四 年) 的 月 份 编 排</b></caption><tr><td>月份</td><td>朔日公历日期</td><td>朔日干支</td><td>合朔小余</td></tr><tr><td>十(小)</td><td>前132年11月25日</td><td>壬申</td><td>93</td></tr><tr><td>十一(大)</td><td>前132年12月24日</td><td>辛丑</td><td>592</td></tr><tr><td>十二(小)</td><td>前131年1月23日</td><td>辛未</td><td>151</td></tr><tr><td>正(大)</td><td>2月21日</td><td>庚子</td><td>650</td></tr><tr><td>二(小)</td><td>3月23日</td><td>庚午</td><td>209</td></tr><tr><td>三(大)</td><td>4月21日</td><td>己亥</td><td>708</td></tr><tr><td>四(小)</td><td>5月21日</td><td>己巳</td><td>267</td></tr><tr><td>五(大)</td><td>6月19日</td><td>戊戌</td><td>766</td></tr><tr><td>六(小)</td><td>7月19日</td><td>戊辰</td><td>325</td></tr><tr><td>七(大)</td><td>8月17日</td><td>丁酉</td><td>824</td></tr><tr><td>八(小)</td><td>9月16日</td><td>丁卯</td><td>383</td></tr><tr><td>九(大)</td><td>10月15日</td><td>丙申</td><td>882</td></tr></table><p>月大月小由两朔日之间的日期间隔决定,两朔日相差二十九日为小月、三十日为大月。合朔小余是合朔离子正的时间以分数日表示,分母940往往略去。由于朔策是(29+499/940)日,每月的合朔小余是前月的小余加上499,达到或超过940则减去940,合朔小余如果小于441,加了499后仍小于940,则此月是小月,大于或等于441时则是大月。</p><p>现在计算小雪、冬至、立春的日期和月龄,先计算冬至。用公式(1)求得<span class="nowrap">N<sub>-130</sub></span>冬至的儒略日数是<br>JD<sub>冬至</sub> = JD(W(-130)) = 1721050.5 + 19/32 -130×365.25 = 1673568.5 + 3/32<br>冬至小余是3/32,冬至日正午的儒略日数是1673569,用上述的方法计算出对应的公历日期是公元前132年12月25日、日干支是壬寅,从表五可见冬至在十一月初二。至于冬至的月龄,按定义是冬至离之前的合朔时间,这里用朔策的分数倍表示。冬至之前的朔是十一月朔。<br>JD<sub>十一月朔</sub> = JD<sub>十月朔</sub> + 29 + 499/940 = 1673567.5 + 592/940,<br>冬至月龄 = (JD<sub>冬至</sub> - JD<sub>十一月朔</sub>)/(29 + 499/940) = 1163/74024 ≈ 0.3/19。</p><p>以上的计算保留了分数,只是为了方便展示小余的数值而已。其实本网站的历法计算全部用十进制小数,我在古六历网页的<a href="guliuli_simp.html#decimals">最后一节</a>有详细叙述,其中最后一个公式给出二十四节气月龄的简易计算法:<br>L = (JD - JD(M<sub>0</sub>))/29.53085106382979 (9)<br>节气月龄 = L - floor(L) (10)<br>式中JD(M<sub>0</sub>)可从表二查得,历法C的值是1646163.5。L是从历元合朔<span class="nowrap">M<sub>0</sub></span>起算到该节气的时间间隔以朔策为单位,月龄是节气与上一个合朔的时间间隔,以朔策为单位就是L的小数部分。以冬至为例,<br>L = (JD<sub>冬至</sub> - 1646163.5)/29.53085106382979 = 928.0157111207177<br>冬至月龄 = L - floor(L) = 0.01571112207177 ≈ 0.3/19,与上面计算的数值一致。</p><p>其实每一个合朔的懦略日数都是<span class="nowrap">JD(M<sub>0</sub>)</span>加上朔策的整数倍,所以用任何一个合朔计算L都可以,得到的L只是整数部分不同而已。这里就再以JD<sub>十月朔</sub>为例:<br>L = (JD<sub>冬至</sub> - JD<sub>十月朔</sub>)/29.53085106382979 = 1.015711120717605<br>冬至月龄 = L - floor(L) = 0.0157111220717605 ≈ 0.3/19,也与上面计算的一致。</p><p>值得注意的是在古六历很多历法里,冬至的月龄往往是1/19的整数倍,但在这里却不是,这是因为历元气朔并没有冬至闰余无的关系。即使在颛顼历,历元气朔的关系是夜半立春合朔齐同,由此可算出颛顼历冬至在历元年份的月龄是69/152=8.625/19,也不是1/19的整数倍,而历法C的历元干脆不指定气朔有任何关系,不是1/19的整数倍是正常的。月龄每年增加7/19(大于或等于一就把一减去),所以其他年份的月龄也不会是1/19的整数倍。</p><p>其他二十四节气可用公式(2)计算。<span class="nowrap">N<sub>-130</sub></span>的小雪应在公元<span class="nowrap">-131</span>年,所以应用y=<span class="nowrap">-131</span>来算,但是其实不一定要用公式(2)计算:小雪是冬至之前的第二个节气,只须把<span class="nowrap">JD<sub>冬至</sub></span>减去(2/24)P<sub>s</sub>就可以了。<br>JD<sub>小雪</sub> = JD<sub>冬至</sub> - (2/24)×365.25 = 1673537.5 + 21/32<br>比较<span class="nowrap">JD<sub>小雪</sub></span>和<span class="nowrap">JD<sub>十月朔</sub></span>,得知小雪日在十月朔日之前一日,即11月24日,不属于<span class="nowrap">N<sub>-130</sub></span>。从表五可见<span class="nowrap">N<sub>-129</sub></span>年首在前131年10月15日之后30日,即11月14日,而公元前131年的小雪必然在11月24日或前后一日,也就是说<span class="nowrap">N<sub>-130</sub></span>没有小雪。</p><p>立春是冬至之后的第三个节气,所以<br>JD<sub>立春</sub> = JD<sub>冬至</sub> + (3/24)×365.25 = 1673613.5 + 3/4<br>L = (JD<sub>立春</sub> - JD<sub>十月朔</sub>)/(29 + 499/940) = 2 + 5198/9253<br>立春月龄 = 5198/9253 ≈ 10.7/19。<br>立春小余是3/4,立春日正午的儒略日数是1673614,对应的公历日期是前131年2月8日、日干支是丁亥,从表五可算出在汉历的十二月十七。</p><br><h3 style="letter-spacing:4px">例二:计算<span class="nowrap">N<sub>-201</sub></span>(汉高祖五年)的所有月份,以及小雪、冬至、夏至的日期和月龄。</h3><p>从表二得知<span class="nowrap">N<sub>-201</sub></span>正月前用历法A,正月开始用历法B,所以历法A和B的积月都要计算。</p><p>先算历法A,根据表四,<span class="nowrap">JD(M<sub>0</sub>)</span>=1589523.5、<span class="nowrap">y<sub>z</sub></span>=-225、<span class="nowrap">ΔA</span>=1670。<br>c = floor((-201 + 225)/19) = 1<br>k = -201 + 225 - 19 = 5<br>J(5) = 1,但历法A只用到十二月,<span class="nowrap">N<sub>-201</sub></span>有没有后九月由历法B决定。<br>A(-201) = 1670 + 235 + 61 = 1966<br>JD<sub>十月朔</sub> = 1589523.5 + 1966×(29+499/940) = 1647580.5 + 614/940<br>十月朔小余是614,朔日正午的儒略日数是1647581,对应的公历日期是前203年10月31日、日干支是甲午。</p><p>至于历法B,根据表四,<span class="nowrap">JD(M<sub>0</sub>)</span>=1633701.5、<span class="nowrap">y<sub>z</sub></span>=-225、<span class="nowrap">ΔA</span>=174。<br>c = floor((-201 + 225)/19) = 1<br>k = -201 + 225 - 19 = 5<br>J(5) = 1 ⇒ <span class="nowrap">N<sub>-201</sub></span>有后九月<br>A(-201) = 174 + 235 + 61 = 470<br>历法B从正月开始使用,正月是十月后的第三个月,所以<br>JD<sub>正月朔</sub> = 1633701.5 + (470+3)×(29+499/940) = 1647669.5 + 87/940。<br>正月朔小余是87,朔日正午的儒略日数是1647670,对应的公历日期是前202年1月28日、日干支是癸亥。有了十月和正月的日期和朔小余后,<span class="nowrap">N<sub>-201</sub></span>其他月份的合朔只须加上朔策的整数倍即得,下表列出计算结果。</p><table><caption><b>表 六: <span class="nowrap">N<sub>-201</sub></span> (汉 高 祖 五 年) 的 月 份 编 排</b></caption><tr><td>月份</td><td>朔日公历日期</td><td>朔日干支</td><td>合朔小余</td></tr><tr><td>十(大)</td><td>前203年10月31日</td><td>甲午</td><td>614</td></tr><tr><td>十一(小)</td><td>11月30日</td><td>甲子</td><td>173</td></tr><tr><td>十二(大)</td><td>12月29日</td><td>癸巳</td><td>672</td></tr><tr><td>正(小)</td><td>前202年1月28日</td><td>癸亥</td><td>87</td></tr><tr><td>二(大)</td><td>2月26日</td><td>壬辰</td><td>586</td></tr><tr><td>三(小)</td><td>3月28日</td><td>壬戌</td><td>145</td></tr><tr><td>四(大)</td><td>4月26日</td><td>辛卯</td><td>644</td></tr><tr><td>五(小)</td><td>5月26日</td><td>辛酉</td><td>203</td></tr><tr><td>六(大)</td><td>6月24日</td><td>庚寅</td><td>702</td></tr><tr><td>七(小)</td><td>7月24日</td><td>庚申</td><td>261</td></tr><tr><td>八(大)</td><td>8月22日</td><td>己丑</td><td>760</td></tr><tr><td>九(小)</td><td>9月21日</td><td>己未</td><td>319</td></tr><tr><td>后九(大)</td><td>10月20日</td><td>戊子</td><td>818</td></tr></table><p>如上述,月大月小可从小余数值得知,小余小于441是小月,否则是大月。但是这规则不一定适用于十二月,因为正月开始改用新历法,所以必须从十二月朔和正月朔日期间隔定出十二月是大月还是小月。</p><p>节气的计算与上面一样。先算冬至,用公式(1)求得<span class="nowrap">N<sub>-201</sub></span>冬至的儒略日数是<br>JD<sub>冬至</sub> = 1721050.5 + 19/32 - 201×365.25 = 1647635.5 + 11/32。</p><p>冬至小余是11/32,冬至日正午的儒略日数是1647636,对应的公历日期是前203年12月25日、日干支是己丑,从表六可算出冬至在汉历的十一月廿六。由于冬至在正月之前,计算月龄时应用历法A的合朔,这里且用<span class="nowrap">JD<sub>十月朔</sub></span>来算:<br>L = (JD<sub>冬至</sub> - JD<sub>十月朔</sub>)/(29 + 499/940) = 1 + 189201/222072<br>冬至月龄 = 189201/222072 ≈ 16.2/19。</p><p>小雪是冬至之前第二个节气,所以<br>JD<sub>小雪</sub> = JD<sub>冬至</sub> - (2/24)×365.25 = 1647604.5 + 29/32<br>小余是29/32,正午儒略日数是1647605,对应的公历日期是前203年11月24日,日干支是戊午,从表六可算出在汉历的十月廿五。由於小雪就在十月,用JD<sub>十月朔</sub>计算月龄最直接。<br>小雪月龄 = (JD<sub>小雪</sub> - JD<sub>十月朔</sub>)/(29 + 499/940) = 182383/222072 ≈ 15.6/19。</p><p>夏至在冬至之后半个岁实,所以<br>JD<sub>夏至</sub> = JD<sub>冬至</sub> + 365.25/2 = 1647817.5 + 31/32<br>小余是31/32,正午儒略日数是1647818,对应的公历日期是前202年6月25日,日干支是辛卯,从表六可知在汉历的六月初二。夏至在正月之后,算月龄时要用历法B的合朔,这里就用<span class="nowrap">JD<sub>正月朔</sub></span>来算。<br>L = (JD<sub>夏至</sub> - JD<sub>正月朔</sub>)/(29 + 499/940) = 5 + 9189/222072<br>夏至月龄 = 9189/222072 ≈ 0.8/19。</p><br><sect id="conjDiff">历 法 后 天 日 数</sect><p>秦与汉初的历法是后天的,即历法的合朔时刻迟于真正的合朔时刻,如下图所示,两者相差的平均值约为一天,所以汉初的日食多发生在晦日(即朔之前一天),甚至晦日前一天。四分术的朔策比朔望月的平均值稍大,积三百年就会后天一日,所以在图中明显可见后天日数有逐渐增大的趋势。</p><figure><img src="QinHanConjTimeLag_simp.jpg" alt="历 法 后 天 日 数"><figcaption>图一:秦与汉初历法的后天日数。JD是历法合朔的UT1儒略日数,即用公式(3)计算的<span class="nowrap">JD(M<sub>i</sub>)</span>然后减去0.3025日把秦汉京城的地方时转换为世界时UT1。横轴所示的y值可视为合朔时刻的公历年份。两条垂直红线表示更换历法的时间:从左到右,被那两条红线划分的三个区间所用的历法是A、B和C。纵轴是历法的后天日数,即历法合朔时刻减去实际合朔时刻的日数。<sup><a href="QinHanCalendars_simp.html#fn5">注五</a></sup></figcaption></figure><p>图中所见的波动是因为历法的合朔计算用平朔法,没有计及月亮和太阳的不均匀运动。从秦王政元年到秦朝灭亡之间,历法后天日数的平均值是1.03日。历法A改为历法B后,合朔小余调小了<span class="nowrap">144/940</span>(≈ 0.15日),不足以改变历法A的后天,只能暂缓后天日数之增长。历法B改为历法C后,合朔小余调小了<span class="nowrap">18/940</span>(≈ 0.019日),更是无补于事。所以历法后天的日数继续增加,汉武帝元光年间(前134年至前129年)的平均后天日数是1.20日,到了汉武帝元封元年(前110年)以后后天日数增加到1.24日,直到太初元年改历后才改正过来。这些平均后天日数的数值与张培瑜「根据新出历日简牍试论秦与汉初的历法」<sup><a href="QinHanCalendars_simp.html#Zhang2007">张培瑜07</a></sup>给出的数值很接近。历法后天如此严重,当时不可能不知道,而应该是故意的。</p><p>李忠林在《秦至汉初历法研究》<sup><a href="QinHanCalendars_simp.html#Li2016">李忠林16</a></sup>分析指出历法后天极可能受到天命论的政治思想影响,历法家选取历元,往往为了显示统治者合乎天命而舍弃较为合天的历元。例如历法A的历元选秦孝公元年就有强烈的天命论色彩,秦孝公在位期间采纳商鞅的变法使秦国富国强兵。历法C的历元是汉高祖元年,也有明显的天命论色彩。到了汉武帝太初元年的历改天命论色彩更加浓厚,这点在《秦至汉初历法研究》和《中国古代历法》<sup><a href="QinHanCalendars_simp.html#ZCBH2008">张陈薄胡</a></sup>都有详细说明。</p><br><sect id="stermTable">秦 至 汉 初 节 气 表</sect><p>用上述方法可轻易算出二十四节气在秦至汉初一百四十多年间的日期和月龄,其中小雪、冬至、大寒、立春和雨水的数据列于<a href="QinHanSolarTerms_simp.html">此网页</a>。正如上二节例一所示,某些年份有时没有小雪,表中所列的数据是最接近当年十月初一的小雪。从表中可见有一些小雪出现在前一年的后九月末。</p><p>节气的月龄每年增加<span class="nowrap">7/19</span> (mod 1),十九年循环一周,但是节气的中历日期却不然。以冬至为例,上二节例一算得冬至在<span class="nowrap">N<sub>-130</sub></span>(汉武帝元光四年)的月龄是<span class="nowrap">1163/74024</span>(≈<span class="nowrap">0.3/19</span>),也就是说冬至在合朔之后<span class="nowrap">1163/74024</span>个朔策,用现在通用的24小时制来说,冬至在合朔以后11小时8分6秒。例二亦算出十一月朔小余是592(分母是940),换成24小时制,合朔发生在15:06:54,把这时间加上11小时8分6秒,便得冬至时刻是朔日下一天的02:15,所以元光四年的冬至在十一月初二。十九年后是<span class="nowrap">N<sub>-111</sub></span>(汉武帝元鼎五年),这时冬至的月龄已循环一周又回到<span class="nowrap">1163/74024</span>,即冬至仍在合朔后11小时8分6秒,这时的十一月朔是<span class="nowrap">N<sub>-130</sub></span>十一月朔之后235个月,朔小余是mod(592 + 235×499, 940) = 357,合朔发生在09:06:54,把这时刻加上11小时8分6秒,得知冬至在朔日当天的20:15,所以是十一月初一,和元光四年的冬至日期不一样,这计算与<a href="QinHanSolarTerms_simp.html">此网页</a>的数据吻合。可见节气的中历日期并非以十九年为周期,用<a href="guliuli_simp.html#sifenSystem">四分术的法数</a>可知周期是一蔀,即七十六年。由于历法A、B和C没有一部的行用时间超过七十六年,所以有必要把一百四十多年的数据全部列出。</p><p>从表中可看到在文帝后元元年(<span class="nowrap">N<sub>-162</sub></span>)以前,冬至一直固定在十一月,而且闰年都出现在冬至(和大寒)月龄大于<span class="nowrap">12/19</span>的年份。文帝后元元年后,由于闰月分布有了改变,冬至不再固定在十一月了,反而大寒固定在十二月以及雨水固定在正月,而闰年则出现在雨水月龄大于<span class="nowrap">12/19</span>的年份。</p><p>表中虽然只列出几个节气,但我把所有二十四节气都计算了,发现在文帝后元元年前,除了冬至外没有其他二十四节气固定在一个月内,除了冬至和大寒外也没有其他节气月龄大于<span class="nowrap">12/19</span>的年份与闰年吻合。文帝后元元年后,除了大寒和雨水外,没有其他二十四节气固定在一个月内;除了雨水外,没有其他二十四节气月龄大于<span class="nowrap">12/19</span>的年份与闰年吻合。这些资料或许是研究这段期间置闰法则的重要线索。</p><br><hr><h2 id="references">备 注 和 参 考 文 献</h2><ul style="list-style-type:none"><li id="fn1"><p>[<span class="ref">注一</span>] 本文的主要目的是说明本网站对秦与汉初历法之复原法,并非学术论文,撰写时并无搜索所有的相关文献,如有文献遗漏,敬请原谅。</p></li><li id="fn2"><p>[<span class="ref">注二</span>] 至今我仍摸不透<span class="ref">张培瑜07</span>年文章表十的朔闰表是怎样算出的。只要知道其中一个合朔的日期和小余,其他合朔的日期和小余就可用张培瑜采用的朔策(29+663/1249)日计算出,但是表十只有日干支,没有给出小余。但这问题也不难解决,以表十的第一个合朔为例,合朔小余有1249个可能:0、<span class="nowrap">1/1249</span>、<span class="nowrap">2/1249</span>、……、<span class="nowrap">1248/1249</span>。从汉高祖元年十月到汉武帝元封六年后九月有1262个朔日,只要把这1249个可能的小余一一检验,就可知道哪个小余值可得出完全符合表十的1262个朔日干支(略去表十最后一行的太初元年朔日)。我编写了简单的计算机程式,得出这1249个可能的小余之中,只有<span class="nowrap">611/1249</span>能满足表十的1262个朔日干支。每月小余增加663,而mod(611+195×663, 1249) = 0,由此可知汉高祖元年十月后第195个合朔发生在夜半,但是这个朔是汉惠帝四年八月朔(公元前191年8月21日),日干支是丙戌,与文章所载的15蔀蔀首日名没有一个相符。根据采用的朔策,一蔀有1249×29+663=36884日,而36884×3=9221×12,所以蔀首日名地支以三蔀循环一周,如果戌是其中一地支,则其余蔀首日名地支只能是午和寅,但文章所列出的蔀首日名的三个可能地支是子、申和辰,显然与丙戌不相容。但是以汉惠帝四年八月丙戌合朔发生在夜半这假设确能得出符合表十的所有朔日干支。<br>如果假设表十的干支不完全正确,则可求出一个可能的结果。这假设是汉高祖元年十月的朔小余是<span class="nowrap">613/1249</span>,这样的话就有两个干支与表十不符:汉武帝建元四年五月朔和武帝元鼎四年十二月朔。有趣的是这两个不合的日干支反而符合<span class="ref">李忠林12</span>文章的朔闰表。由于mod(613+860×663, 1249) = 0,高祖元年十月朔后的第860个朔日发生在夜半,这朔恰巧就是武帝建元四年的五月朔,日干支由表十的癸卯改为甲辰,而甲辰是文章列出的蔀首日名其中之一。由于这不是四分术,蔀首只是合朔发生在夜半,但不保证气朔齐同。用蔀日36884往前推,看看是否可以找到一个以某一节气合朔夜半齐同的历元,使二十四节气的时刻接近颛顼历的二十四节气时刻。我发现一个可能的历元是前6297年庚申日夜半芒种合朔齐同(公历日期是前6297年6月12日,儒略日数是<span class="nowrap">-578393.5</span>),用此历元计算的节气时刻在公元前150年比颛顼历的约早10分钟。复原历法的岁实比四分术的岁实稍短,用此历元计算的节气时刻在汉初比颛顼历迟约15分钟, 在武帝太初元年时却比颛顼历早约30分钟。表十是不是用这个历元计算?那两个朔日干支是不是真的错了?</p></li><li id="fn3"><p>[<span class="ref">注三</span>] 用李忠林文章所述的历元计算出汉高祖七年五月朔的日干是己卯,但是即使不用历元计算也可推出表中五月朔干支不对,而且应该是己卯。这可从汉高祖七年四月朔和六月朔的日干支看出。表中列出四月朔和六月朔的日干支都是己酉,由此可知四月朔与六月朔相差六十日,唯一的可能是四月和五月都是大月。所以五月朔干支是己酉之后第三十个干支,即己卯。</p></li><li id="fn4"><p>[<span class="ref">注四</span>] 《三千五百年历日天象》自汉武帝太初元年正月起采用新历法;从秦始皇三十一年(<span class="nowrap">N<sub>-215</sub></span>)十月到太初元年十二月采用作者根据《元光元年历谱》复原的历法<sup><a href="QinHanCalendars_simp.html#Zhang1978">张培瑜78</a></sup>;从秦始皇二十六年(<span class="nowrap">N<sub>-220</sub></span>)十月到秦始皇三十年(<span class="nowrap">N<sub>-216</sub></span>)九月用颛顼历。《三千五百年历日天象》并没有说明这些细节,以上结论是比较书中历表和张培瑜的另一本书《中国先秦史历表》<sup><a href="QinHanCalendars_simp.html#xZhang1987">张培瑜87</a></sup>中的历表推断的。《三千五百年历日天象》载太初元年十二月和正月连续两月皆是小月,这在平朔法是不可能的,显然是正月改历的结果。</p></li><li id="fn5"><p>[<span class="ref">注五</span>] 实际合朔时刻用现代天文的计算方法,即<a href="docs/sunMoon_simp.pdf">这pdf文件</a>所述的方法,但是岁差要用该文7.2节所说的Vondrák等人的岁差模型计算,算出的TDB时刻用该文第8节的方法转化为世界时UT1时刻。历法合朔时刻用上面公式(3)计算<span class="nowrap">JD(M<sub>i</sub>)</span>,这可视为是当地的地方时。秦朝京城咸阳和西汉京城长安的地理位置都很接近现在的陕西省西安市,经度大约是东经108.9°,所以京城地方时比UT1迟(108.9/15)小时=0.3025日,把<span class="nowrap">JD(M<sub>i</sub>)</span>减去0.3025日便得历法合朔的UT1儒略日数,再减去实际合朔的UT1儒略日数便求得历法的后天日数。从秦王政元年十月朔到汉武帝太初元年四月朔总共有1764个合朔,图一就是用这1764个合朔的后天日数绘制而成。</p></li><li id="Li2009"><p>[<span class="ref">李忠林09</span>] 李忠林,"试论秦汉初历法的置闰规则",《四川大学学报(哲学社会科学版)》,2009年第6期(总第165期),第5–11页。</p></li><li id="Li2012"><p>[<span class="ref">李忠林12</span>] 李忠林,"秦至汉初(前246至前104)历法研究—以出土历简为中心",《中国史研究》,2012年第二期,第17–69页。</p></li><li id="Li2016"><p>[<span class="ref">李忠林16</span>] 李忠林,《秦至汉初历法研究》,中华书局(北京),2016年1月。</p></li><li id="Zhang1978"><p>[<span class="ref">张培瑜78</span>] 张培瑜, "汉初历法讨论",《中国天文学史文集》,科学出版社(北京),1978年四月,第82–94页。</p></li><li id="Zhang1987"><p>[<span class="ref">张培瑜87</span>] 张培瑜,《中国先秦史历表》,齐鲁书社(济南),1987年6月。</p></li><li id="Zhang1997"><p>[<span class="ref">张培瑜97</span>] 张培瑜,《三千五百年历日天象》,大象出版社,1997年7月。</p></li><li id="Zhang2007"><p>[<span class="ref">张培瑜07</span>] 张培瑜, "根据新出历日简牍试论秦与汉初的历法",《中原文物》, 2007年第5期,第62–77页。</p></li><li id="ZCBH2008"><p>[<span class="ref">张陈薄胡</span>] 张培瑜、陈美东、薄树人和胡铁珠,《中国古代历法》,中国科学出版社(北京),2008年3月。</p></li></ul><br><br></div></body></html>