LoginSignup
0
0

儀鳳暦のマジックナンバー1340の謎を解く

Last updated at Posted at 2024-04-21

はじめに

儀鳳暦(ぎほうれき)は元嘉暦(げんかれき)との併用期間を経て,文武天皇元年(697年)から本格的に使用開始したとされ,天平宝字八年(764年)から大衍暦(たいえんれき)に置き換わった。中国では麟徳暦(りんとくれき)と呼び,唐の麟徳二年(665年)から開元十六年(728年)までの64年間使われた。

麟徳暦の特徴は一日を1340分割した単位時間(麟徳暦では総法と呼ぶ)で一太陽年および一朔望月を定義したことにある。

  • 一太陽年=489428/1340=365.2448日
  • 一朔望月=39571/1340=29.53060日

中国では古くから一太陽年および一朔望月の日数ともに非整数であることが知られていたが,これらを共通の分母とする分数で定義したのは麟徳暦が初である。

日本では儀鳳暦の共通分母である1340というマジックナンバーが独り歩きし,天武天皇がわが国初の正史編纂を命じた天武天皇十年(681年)を基準として,神武天皇の即位(紀元前660年)をその1340年前に設定したという説がある。

また日本書紀には「天孫降臨から神武天皇東征まで179万2470年余り」というくだりがあるが,儀鳳暦の基準年(麟徳元年664年)の1340²=179万5600年前(紀元前1794937年)を天孫降臨と定義すると,東征の出立(紀元前667年)のちょうど179万4270年前となる。いや,日本書紀の記載は179万2470年前だが,4270と2470の違いは単に編者の誤記・誤写ではないかという説だ。

ここで唐突に表れた儀鳳暦のマジックナンバー1340の由来を調べるため,古代中国の暦法について調査してみた。

四分暦(しぶんれき)

中国では古代から一太陽年および一朔望月の日数は非整数であることが知られており,秦から漢初に渡って使われた四分暦では

  • 一太陽年=365+1/4日
  • 一朔望月=29+499/940日

と定義している。一太陽年のほうはいわゆるユリウス暦と同じで意味が分かり易い。四分暦という名称も1/4日に由来する。一方,一朔望月については一太陽年と一朔望月の比を求めると分かる。

一太陽年/一朔望月=235/19=12+7/19

太陰太陽暦では1月が29日または30日,12月で354~355日となり季節が1年で約10日ほどずれていくので,約3年に1回の頻度で閏月を挿入しなくてはならない。19太陽年は235朔望月にほぼ等しいため,19年に7回の頻度で閏月を挿入すると季節のずれが最小限に収まる。これを古代中国では章法と呼び,古代ギリシャではメトン周期と呼んでいた。

なお,現代の知識で計算すると

  • 19太陽年=19×365.2422=6939.602日
  • 235朔望月=235×29.53059=6939.689日

となり,両者の差は0.087日=約2時間となるので,これを12周期,すなわち19×12=228年続けると約1日分の誤差が生じてしまうことになる。

四分暦は一般名詞である。秦から漢初にかけて用いられたものを区別する固有名詞は顓頊暦(せんぎょくれき)という。本記事は論拠の多くを薮内清氏の著作(参考文献を参照のこと)に置いているが,それらは主に戦前の研究成果によるもので,薮内氏の著作には顓頊暦という言葉は登場しない。戦後,発掘による新発見などで研究は進んだようだ。

前漢の太初暦(たいしょれき)

前漢の初期は秦代の暦法(四分暦)をそのまま採用していたが,王朝が安定してきた武帝の時代になって改暦が行われた。

  • 一太陽年=365+385/1539=365.250162日
  • 一朔望月=29+43/81=29.530864日

一太陽年/一朔望月=235/19 であることから19年間に7回閏月を入れる章法を採用していることが分かる。しかし,現代の知識をもって見てみると一太陽年や一朔望月の精度はむしろ前暦(四分暦)より悪化している。実際のところ改暦当時には反対意見も多かったらしい。それでも改暦に踏み切ったのは,前暦の誤差が蓄積して無視できなくなってきたこともあるが,前王朝の制度の否定が優先されたと考えられている。太初暦における一太陽年や一朔望月の精度は向上していない(むしろ悪化している)ことから,これらの常数を改める必然性はなく,単にずれた日数のみ修正すれば良かった。しかし,革命的に打倒された前王朝(秦)の旧制度の常数をそのまま用いることが社会的に許されなかったのであろう。ただ,これが悪しき前例となったのか,以降,古代中国では改暦のたびに一太陽年や一朔望月の常数まで改めるという悪習を繰り返すことになる。ちなみに後漢ではしれっと四分暦に戻していたりする。

いわゆる受命改制(じゅめいかいせい)のこと。天命を受けて天子の座に就いたことを世の中に知らしめるためには政治制度を改める必要があるという儒教的な思想。

破章法の登場と隋唐時代の頻繁な改暦

章法とは19年周期で7回閏月を挿入するという制度であるが,これに従わないより正確な暦法が五胡十六国の時代に現れた。これを破章法と呼ぶ。以下,表1に示す隋唐時代の暦法はいずれも破章法である。四分暦と比べると,一朔望月の精度が飛躍的に向上しており,現在得られている真値と比べても遜色ないレベルである。しかし,隋唐時代には何度も改暦を行ったにもかからず,一太陽年の精度は向上しなかった。これは一太陽年の測定自体,長期間の観測を必要として非常に困難であるからだろう。

以下,隋唐時代の十暦に加え,参考までに秦漢時代の四分暦・太初暦,および現在得られている真値を示す。

表1 隋唐時代の暦法の基本常数の比較
暦名 ①一太陽年の日数 ②一朔望月の日数 ①/②
開皇 $\displaystyle365\frac{25063}{102960}=365.2434$ $\displaystyle\frac{5372209}{181920}=29.53061$ $\displaystyle\frac{5306}{429}=12.36830$
皇極 $\displaystyle\frac{17036466.5}{46644}=365.2445$ $\displaystyle\frac{36677}{1242}=29.53060$ $\displaystyle\frac{8361}{676}=12.36834$
大業 $\displaystyle\frac{15573963}{42640}=365.2430$ $\displaystyle\frac{33783}{1144}=29.53060$ $\displaystyle\frac{5071}{410}=12.36829$
戊寅 $\displaystyle\frac{3456675}{9464}=365.2446$ $\displaystyle\frac{384075}{13006}=29.53060$ $\displaystyle\frac{8361}{676}=12.36834$
麟徳 $\displaystyle\frac{489428}{1340}=365.2448$ $\displaystyle\frac{39571}{1340}=29.53060$ $\displaystyle\frac{489428}{39571}=12.36835$
大衍 $\displaystyle\frac{1110343}{3040}=365.2444$ $\displaystyle\frac{89773}{3040}=29.53059$ $\displaystyle\frac{1110343}{89773}=12.36834$
五紀 $\displaystyle\frac{489428}{1340}=365.2448$ $\displaystyle\frac{39571}{1340}=29.53060$ $\displaystyle\frac{489428}{39571}=12.36835$
正元 $\displaystyle\frac{399943}{1095}=365.2447$ $\displaystyle\frac{32336}{1095}=29.53059$ $\displaystyle\frac{9301}{752}=12.36835$
宣明 $\displaystyle\frac{3068055}{8400}=365.2446$ $\displaystyle\frac{248057}{8400}=29.53060$ $\displaystyle\frac{3068055}{248057}=12.36835$
崇玄 $\displaystyle\frac{4930801}{13500}=365.2445$ $\displaystyle\frac{398663}{13500}=29.53059$ $\displaystyle\frac{4930801}{398663}=12.36834$
四分 $\displaystyle 365\frac{1}{4}=365.2500$ $\displaystyle 29\frac{499}{940}=29.53085$ $\displaystyle \frac{235}{19}=12.36842$
太初 $\displaystyle 365\frac{385}{1539}=365.2502$ $\displaystyle 29\frac{43}{81}=29.53086$ $\displaystyle \frac{235}{19}=12.36842$
真値 $365.2422$ $29.53059$ $12.36827$

一朔望月の計算則「調日法」

隋唐時代は頻繁な改暦が行われた。桁数を気にしなけば一見自由に分数を決められるように思えるが,一朔望月を定義する分数には明確に計算則があったようだ。

一見法則性がないように見える一朔望月の日数であるが,下記のように分解すると9/17と26/49という二つの分数の因子を含んでいることが分かる。

表2 隋唐時代の暦法の一朔望月
暦名 一朔望月の日数
開皇 $\displaystyle\frac{5372209}{181920}=29\frac{96529}{181920}=29 + \frac{9 \times (-1) + 26 \times 3713}{17 \times (-1) + 49 \times 3713}$
皇極 $\displaystyle\frac{36677}{1242}=29\frac{659}{1242}=29 + \frac{9+26 \times 25}{17+49 \times 25}$
大業 $\displaystyle\frac{33783}{1144}=29\frac{607}{1144}=29 + \frac{9+26 \times 23}{17+49 \times 23}$
戊寅 $\displaystyle\frac{384075}{13006}=29\frac{6901}{13006}=29 + \frac{9 \times 7+26 \times 263}{17 \times 7+49 \times 263}$
麟徳 $\displaystyle\frac{39571}{1340}=29\frac{711}{1340}=29 + \frac{9+26 \times 27}{17+49 \times 27}$
大衍 $\displaystyle\frac{89773}{3040}=29\frac{1613}{3040}=29 + \frac{9 \times 3 + 26 \times 61}{17 \times 3 + 49 \times 61}$
五紀 $\displaystyle\frac{39571}{1340}=29\frac{711}{1340}=29 + \frac{9+26 \times 27}{17+49 \times 27}$
正元 $\displaystyle\frac{32336}{1095}=29\frac{581}{1095}=29 + \frac{9+26 \times 22}{17+49 \times 22}$
宣明 $\displaystyle\frac{248057}{8400}=29\frac{4457}{8400}=29 + \frac{9 \times 7 + 26 \times 169}{17 \times 7 + 49 \times 169}$
崇玄 $\displaystyle\frac{398663}{13500}=29\frac{7163}{13500}=29 + \frac{9 \times 13 + 26 \times 271}{17 \times 13 + 49 \times 271}$

隋初に用いられた開皇暦を除き,これらの一朔望月は全て

29 + \frac{9p + 26q}{17p + 49q}

という形で表されている。※自然数 $p$,$q$ とする。

一朔望月の日数の小数部分について現在得られている真値は $0.53059$ であるが,すでに隋唐時代から現在と遜色ない精度で観測値を得られており,下限値 $9/17 = 0.52941$ と上限値 $26/49 = 0.53061$ の間に入ることは知られていたようだ。これより観測値を表す分数を下記の計算則(調日法という)によって求めたと考えられている。

観測値 $x$ とおくと,下限値の初期値 $a_1/c_1 = 9/17$,上限値の初期値 $b_1/d_1 = 26/49$ として $n$ 回目の計算値 $x_n$ を次のように定める。

x_n = \frac{a_n + b_n}{c_n + d_n}

なお $a_n/c_n < b_n/d_n$ であれば必ず

\frac{a_n}{c_n} < x_n < \frac{b_n}{d_n}

となることが保証されている。こうして得られた $n$ 回目の計算値 $x_n$ と観測値 $x$ を比較し,大小によって上限値と下限値を下記のように更新する。

このように一回計算を行うたびに観測値を含む上限値と下限値の間の範囲は狭められていく。こうして何度も計算を繰り返し,所望の精度を得られれば計算終了とする。

こうして求めた計算値 $x_n$ は必ず次のような値となる。※自然数 $p$,$q$ とする。

x_n = \frac{9p + 26q}{17p + 49q}

以下,麟徳暦の場合の計算例を示す。ちなみに計算途中で他の暦法の値も登場する。

表3 麟徳暦の計算例
$n$ $a_n/c_n$ $b_n/d_n$ $x_n = (a_n + b_n)/(c_n + d_n)$ 備考
$1$ $9/17$ $26/49$ $35/66=0.530303030$
$2$ $35/66$ $26/49$ $61/115=0.530434783$
$3$ $61/115$ $26/49$ $87/164=0.530487805$
$4$ $87/164$ $26/49$ $113/213=0.530516432$
$5$ $113/213$ $26/49$ $139/262=0.530534351$
$6$ $139/262$ $26/49$ $165/311=0.530546624$
$7$ $165/311$ $26/49$ $191/360=0.530555556$
$8$ $191/360$ $26/49$ $217/409=0.530562347$
$9$ $217/409$ $26/49$ $243/458=0.530567686$
$10$ $243/458$ $26/49$ $269/507=0.530571992$
$11$ $269/507$ $26/49$ $295/556=0.530575540$
$12$ $295/556$ $26/49$ $321/605=0.530578512$
$13$ $321/605$ $26/49$ $347/654=0.530581040$
$14$ $347/654$ $26/49$ $373/703=0.530583215$
$15$ $373/703$ $26/49$ $399/752=0.530585106$
$16$ $399/752$ $26/49$ $425/801=0.530586767$
$17$ $425/801$ $26/49$ $451/850=0.530588235$
$18$ $451/850$ $26/49$ $477/899=0.530589544$
$19$ $477/899$ $26/49$ $503/948=0.530590717$
$20$ $503/948$ $26/49$ $529/997=0.530591775$
$21$ $529/997$ $26/49$ $555/1046=0.530592734$
$22$ $555/1046$ $26/49$ $\color{red}{581/1095}=0.530593607$ 正元暦
$23$ $581/1095$ $26/49$ $\color{red}{607/1144}=0.530594406$ 大業暦
$24$ $607/1144$ $26/49$ $633/1193=0.530595138$
$25$ $633/1193$ $26/49$ $\color{red}{659/1242}=0.530595813$ 皇極暦
$26$ $659/1242$ $26/49$ $685/1291=0.530596437$
$27$ $685/1291$ $26/49$ $\color{red}{711/1340}=0.530597015$ 麟徳暦・五紀暦

麟徳暦では,こうして得られた27回目の計算値711/1340を一朔望月日数の端数として採用したと考えられている。

念のため,他の暦法についても同様の計算則で求められることを示す。

表4 大衍暦(たいえんれき)の計算例
$n$ $a_n/c_n$ $b_n/d_n$ $x_n = (a_n + b_n)/(c_n + d_n)$
$20$ $503/948$ $26/49$ $529/997=0.530591775$
$21$ $529/997$ $26/49$ $555/1046=0.530592734$
$22$ $529/997$ $555/1046$ $1084/2043=0.530592266$
$23$ $529/997$ $1084/2043$ $\color{red}{1613/3040}=0.530592105$
表5 戊寅暦(ぼいんれき)の計算例
$n$ $a_n/c_n$ $b_n/d_n$ $x_n = (a_n + b_n)/(c_n + d_n)$
$37$ $945/1781$ $26/49$ $971/1830=0.530601093$
$38$ $971/1830$ $26/49$ $997/1879=0.530601384$
$39$ $971/1830$ $997/1879$ $1968/3709=0.530601240$
$40$ $1968/3709$ $997/1879$ $2965/5588=0.530601288$
$41$ $1968/3709$ $2965/5588$ $4933/9297=0.530601269$
$42$ $1968/3709$ $4933/9297$ $\color{red}{6901/13006}=0.530601261$
表6 宣明暦(せんみょうれき)の計算例
$n$ $a_n/c_n$ $b_n/d_n$ $x_n = (a_n + b_n)/(c_n + d_n)$
$24$ $607/1144$ $26/49$ $633/1193=0.530595138$
$25$ $633/1193$ $26/49$ $659/1242=0.530595813$
$26$ $633/1193$ $659/1242$ $1292/2435=0.530595483$
$27$ $633/1193$ $1292/2435$ $1925/3628=0.530595369$
$28$ $633/1193$ $1925/3628$ $2558/4821=0.530595312$
$29$ $633/1193$ $2558/4821$ $3191/6014=0.530595278$
$30$ $633/1193$ $3191/6014$ $3824/7207=0.530595255$
$31$ $633/1193$ $3824/7207$ $\color{red}{4457/8400}=0.530595238$
表7 崇玄暦(すうげんれき?)の計算例
$n$ $a_n/c_n$ $b_n/d_n$ $x_n = (a_n + b_n)/(c_n + d_n)$
$20$ $503/948$ $26/49$ $529/997=0.530591775$
$21$ $529/997$ $26/49$ $555/1046=0.530592734$
$22$ $529/997$ $555/1046$ $1084/2043=0.530592266$
$23$ $1084/2043$ $555/1046$ $1639/3089=0.530592425$
$24$ $1639/3089$ $555/1046$ $2194/4135=0.530592503$
$25$ $2194/4135$ $555/1046$ $2749/5181=0.530592550$
$26$ $2749/5181$ $555/1046$ $3304/6227=0.530592581$
$27$ $3304/6227$ $555/1046$ $3859/7273=0.530592603$
$28$ $3304/6227$ $3859/7273$ $\color{red}{7163/13500}=0.530592593$

このような計算則(調日法)は,得られた観測値をできるだけ高精度かつできるだけ小さな桁数の分数で表せるように考えられたものだろう。

開皇暦の場合,下限値 $9/17 = 0.52941$,上限値 $17/32 = 0.53125$ とすれば負の値は現れない。

\frac{5372209}{181920}=29\frac{96529}{181920}=29 + \frac{9 \times 3712 + 17 \times 3713}{17 \times 3712 + 32 \times 3713}

ちなみにこの上下限値を採用しても隋唐時代の十暦全てを

29 + \frac{9p + 17q}{17p + 32q}

と表すことができるが,本記事はあくまで参考文献の値を採用している。

一太陽年の計算則

一方,一太陽年については一太陽年の値そのものではなく,一太陽年と一朔望月の比を「調日法」を用いて求めたと思われる。一太陽年と一朔望月の比 $12.36\cdots$ の小数部分を下限値 $4/11=0.363636$,上限値 $7/19=0.368421$ として「調日法」を用いると必ず次式で表される結果となるからだ。※自然数 $r$,$s$ とする。

\frac{4r + 7s}{11r + 19s}

実際に確かめてみると下記のようになる。

表8 一太陽年と一朔望月の比
暦名 一太陽年/一朔望月
開皇 $\displaystyle\frac{5306}{429}=12+\frac{4 + 7 \times 22}{11 + 19 \times 22}$
皇極 $\displaystyle\frac{8361}{676}=12+\frac{4 + 7 \times 35}{11 + 19 \times 35}$
大業 $\displaystyle\frac{5071}{410}=12+\frac{4 + 7 \times 21}{11 + 19 \times 21}$
戊寅 $\displaystyle\frac{8361}{676}=12+\frac{4 + 7 \times 35}{11 + 19 \times 35}$
麟徳 $\displaystyle\frac{489428}{39571}=12+\frac{4 \times 53 + 7 \times 2052}{11 \times 53 + 19 \times 2052}$
大衍 $\displaystyle\frac{1110343}{89773}=12+\frac{4 \times 4645 + 7 \times 33067}{11 \times 4645 + 19 \times 33067}$
五紀 $\displaystyle\frac{489428}{39571}=12+\frac{4 \times 53 + 7 \times 2052}{11 \times 53 + 19 \times 2052}$
正元 $\displaystyle\frac{9301}{752}=12+\frac{4 + 7 \times 39}{11 + 19 \times 39}$
宣明 $\displaystyle\frac{3068055}{248057}=12+\frac{4 \times 350 + 7 \times 12853}{11 \times 350 + 19 \times 12853}$
崇玄 $\displaystyle\frac{4930801}{398663}=12+\frac{4 \times 586 + 7 \times 20643}{11 \times 586 + 19 \times 20643}$

「調日法」による円周率の近似値算出

調日法のアルゴリズム自体は割と汎用的に使えるものだ。以下は,円周率を近似する分数の計算例である。下限値および上限値の初期値を

  • 下限値の初期値 $a_1/c_1 = 3/1$
  • 上限値の初期値 $b_1/d_1 = 4/1$

として始めた場合の計算例を以下に示す。

表9 円周率を近似する分数の計算例
$n$ $a_n/c_n$ $b_n/d_n$ $x_n = (a_n + b_n)/(c_n + d_n)$
$1$ $3/1$ $4/1$ $7/2=3.5$
$2$ $3/1$ $7/2$ $10/3=3.333333333$
$3$ $3/1$ $10/3$ $13/4=3.25$
$4$ $3/1$ $13/4$ $16/5=3.2$
$5$ $3/1$ $16/5$ $19/6=3.166666667$
$6$ $3/1$ $19/6$ $22/7=3.142857143$
$7$ $3/1$ $22/7$ $25/8=3.125$
$8$ $25/8$ $22/7$ $47/15=3.133333333$
$9$ $47/15$ $22/7$ $69/22=3.136363636$
$10$ $69/22$ $22/7$ $91/29=3.137931034$
$11$ $91/29$ $22/7$ $113/36=3.138888889$
$12$ $113/36$ $22/7$ $135/43=3.139534884$
$13$ $135/43$ $22/7$ $157/50=3.14$
$14$ $157/50$ $22/7$ $179/57=3.140350877$
$15$ $179/57$ $22/7$ $201/64=3.140625$
$16$ $201/64$ $22/7$ $223/71=3.14084507$
$17$ $223/71$ $22/7$ $245/78=3.141025641$
$18$ $245/78$ $22/7$ $267/85=3.141176471$
$19$ $267/85$ $22/7$ $289/92=3.141304348$
$20$ $289/92$ $22/7$ $311/99=3.141414141$
$21$ $311/99$ $22/7$ $333/106=3.141509434$
$22$ $333/106$ $22/7$ $355/113=3.14159292$

「調日法」を用いて円周率自体を計算している訳ではなく,既に円周率は無限大の精度まで得られているものとして,あくまで円周率を近似する分数をいかに簡素な自然数の比で表せるか?という問いに対する計算手法として「調日法」を用いたと理解されたい。

「調日法」の創始者である何承天(かしょうてん)は元嘉暦の発案者でもある。

まとめ

儀鳳暦(中国では麟徳暦)のマジックナンバー1340の由来について調査した。

このうち一朔望月の定義39571/1340については明確な結論が出た。 一朔望月の観測値を近似する分数を「調日法」を用いて計算した結果である。「調日法」とは実数を近似する分数を上限値と下限値の双方から抑える繰り返し計算手法である。隋唐時代は頻繁な改暦が行われ,麟徳暦を含む十暦が発案されたが,これら全てが「調日法」を用いて一朔望月を求めた形跡があり,一朔望月はすべて下記の形で表される。※自然数 $p$,$q$ とする。

29 + \frac{9p + 26q}{17p + 49q}

麟徳暦はこのうち $p = 1$,$q = 27$ のケースにあたる。

一方,一太陽年の定義489428/1340については一太陽年の値そのものではなく,一太陽年と一朔望月の比489428/39571を「調日法」を用いて計算を行った可能性がある。実際,麟徳暦を含む十暦全ての太陽年と一朔望月の比は次の形で表される。※自然数 $r$,$s$ とする。

12 + \frac{4r + 7s}{11r + 19s}

麟徳暦はこのうち $r = 53$,$s = 2052$ のケースにあたる。

しかしながら,一朔望月と一太陽年/一朔望月をそれぞれ完全に独立して計算してしまうと両者を定義する分数の分母を共通にすることが難しくなる。麟徳暦の場合,おそらくは一太陽年の観測値として過去の暦法の値を流用した可能性が高い。麟徳暦の一太陽年の分数の分子を $x$ とおき,$x/1340$ が皇極暦の値17036466.5/46644に等しいと仮定して $x$ を求めても矛盾がないからだ。

\begin{aligned}
\frac{x}{1340} &= \frac{17036466.5}{46644} \\
x &= \frac{17036466.5}{46644} \times 1340 = 489427.7 \approx 489428
\end{aligned}

ちなみに皇極暦は隋の煬帝の時代に提案されたが,結局採用されなかった暦法である。ただし,六朝時代の天文学の成果を全て取り入れた画期的な暦法とされ,その後の唐代の暦法に大きな影響を与えたとされる。

麟徳暦が初めて一太陽年および一朔望月を定義する分数を共通分母にしたが,その後の全ての暦法が共通分母を採用していることから実用上の利便性が高かったものと考えられる。このように古代中国の暦法は基本的に天体事象に適合するのが最優先ではあろうが,計算のし易さなどの実用性や数学的な美しさなども問われて生み出されたものである。

次回

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0