小物の戯言 - 略歴雑記 RSSフィード

管理人:NOB (はてなでは nobml, twitter でも nobml)

[何か。の略歴] [SSP BUGTRAQ]
[Disc-2] [LOVE Disc-2同盟]

2012-12-31

[][]日家九星の計算方法

2018年1月13日の日記 (id:nobml:20180113) に改訂版を書きましたが、本ページも記録として残しておきます。

2016年3月21日:記述を一部修正しました。

ゴースト「もへじ男爵」で実装している様々な計算 (月齢・朔望・暦注など) で最も苦戦したのが「日家九星」でした。

最初は計算ではなく、テーブルから参照して求めていたものを、途中から計算で求めるようにしたのですが、なかなか信頼できるリファレンス *1 *2 と結果が完全に一致せず悩んでいました。しかし、ようやく満足のいく実装ができましたので、その方法を記しておこうと思います*3

以下では、2008年12月31日の日家九星を求めていきます。

夏至・冬至の日付と、その日の干支を求める

まずは、日家九星を求めたい日を含む年、およびその前年・翌年の夏至と冬至の日付を、計算により求めます。

日付は、世界時00時 *4 時点の「ユリウス通日 JD *5」に換算しておくと良いでしょう。説明の便宜上、ここでは JD から 2400000.5 を差し引いた値である「修正ユリウス日 MJD」を代わりに用います。2008年の場合ですから、2007年から2009年まで求めることになります。

 2007夏2007冬2008夏2008冬2009夏2009冬
夏至・冬至の日付
(MJD)
2007/06/22
(54273)
2007/12/22
(54456)
2008/06/21
(54638)
2008/12/21
(54821)
2009/06/21
(55003)
2009/12/22
(55187)

次に、上記で求めた夏至・冬至の日の干支を、計算により求めます。

日の干支というのは、十干 *6 と十二支 *7 を、日付に順番に割り当てたものです。下表に示すように、60日で一巡する形となりますので、甲子から順に 00〜59 の値を割り振っておきます。

甲子 (00)乙丑 (01)丙寅 (02)丁卯 (03)戊辰 (04)己巳 (05)
庚午 (06)辛未 (07)壬申 (08)癸酉 (09)甲戌 (10)乙亥 (11)
丙子 (12)丁丑 (13)戊寅 (14)己卯 (15)庚辰 (16)辛巳 (17)
壬午 (18)癸未 (19)甲申 (20)乙酉 (21)丙戌 (22)丁亥 (23)
戊子 (24)己丑 (25)庚寅 (26)辛卯 (27)壬辰 (28)癸巳 (29)
甲午 (30)乙未 (31)丙申 (32)丁酉 (33)戊戌 (34)己亥 (35)
庚子 (36)辛丑 (37)壬寅 (38)癸卯 (39)甲辰 (40)乙巳 (41)
丙午 (42)丁未 (43)戊申 (44)己酉 (45)庚戌 (46)辛亥 (47)
壬子 (48)癸丑 (49)甲寅 (50)乙卯 (51)丙辰 (52)丁巳 (53)
戊午 (54)己未 (55)庚申 (56)辛酉 (57)壬戌 (58)癸亥 (59)

修正ユリウス日 MJD に 50 を加えた値を 60 で割った剰余 (余り) が、その日の干支 K となります。

K = (MJD + 50) mod 60

 2007夏2007冬2008夏2008冬2009夏2009冬
夏至・冬至の日付
(MJD)
2007/06/22
(54273)
2007/12/22
(54456)
2008/06/21
(54638)
2008/12/21
(54821)
2009/06/21
(55003)
2009/12/22
(55187)
日の干支 (K)丁亥 (23)庚寅 (26)壬辰 (28)乙未 (31)丁酉 (33)辛丑 (37)

陽遁・陰遁の切替日の日付を求める

日家九星は、冬から夏にかけては「一白→二黒→……→九紫→一白→……」と昇順に並ぶ「陽遁」(180日) 、夏から冬にかけては「九紫→八白→……→一白→九紫→……」と降順に並ぶ「陰遁」(180日) になります。

陽遁・陰遁は、下記の規則に従って切り替わります。

  • 冬至に最も近い甲子の日を切替日として、一白から陽遁を開始する。
  • 夏至に最も近い甲子の日を切替日として、九紫から陰遁を開始する。

ただ、上記の規則で陽遁・陰遁を繰り返していくと、陽遁・陰遁が合わせて360日である一方、1年は約365.2422日ですから、次第にズレが大きくなり、夏至・冬至に最も近い甲子の日が切替日ではなくなってしまいます。そこで、11年〜12年の一度の割合で、陽遁・陰遁の期間を30日ずつ延長して、ズレを調整しています。この延長された期間 (60日) を「九星の閏」と呼びます。

九星の閏での陽遁・陰遁は、下記の規則に従って切り替わります。

  • 冬至または前後1日に甲午がある場合、甲午の日を切替日として、七赤から陽遁を開始する。
  • 夏至または前後1日に甲午がある場合、甲午の日を切替日として、三碧から陰遁を開始する。

すなわち、夏至・冬至の日の干支 K から、切替日は次のように求めることができます。

  • 「甲子 (00)」から「壬辰 (28)」なら、直前の甲子の日 (夏至・冬至の K 日前)
  • 「丙申 (32)」から「癸亥 (59)」なら、直後の甲子の日 (夏至・冬至の (60 - K) 日後)
  • 「癸巳 (29)」から「乙未 (31)」なら、最も近い甲午の日 (夏至・冬至の (30 - K) 日後)
 2007夏2007冬2008夏2008冬2009夏2009冬
夏至・冬至の日付
(MJD)
2007/06/22
(54273)
2007/12/22
(54456)
2008/06/21
(54638)
2008/12/21
(54821)
2009/06/21
(55003)
2009/12/22
(55187)
日の干支 (K)丁亥 (23)庚寅 (26)壬辰 (28)乙未 (31)丁酉 (33)辛丑 (37)
切替日の日付
(MJD)
2007/05/30
(54250)
2007/11/26
(54430)
2008/05/24
(54610)
2008/12/20
(54820)
2009/07/18
(55030)
2010/01/14
(55210)
切替日の干支 (K)甲子 (00)甲子 (00)甲子 (00)甲午 (30)甲子 (00)甲子 (00)
切替日の九星九紫 (陰遁)一白 (陽遁)九紫 (陰遁)七赤 (陽遁)九紫 (陰遁)一白 (陽遁)

2008年12月31日 (MJD = 54831) の日家九星ですが、上記の表より、2008年12月20日 (MJD = 54820) を切替日として、七赤から陽遁を開始していることになりますので、九紫火星と求まる訳です。

九星の閏の配置を調整する必要がある場合

大抵は、上記の計算で日家九星を求めることができるのですが、場合によっては、九星の閏の配置を調整しなければならないこともあります。

1. 九星の閏を見逃している場合

まずは、2031年を例に挙げて説明します。

 2030夏2030冬2031夏2031冬2032夏2032冬
夏至・冬至の日付
(MJD)
2030/06/21
(62673)
2030/12/22
(62857)
2031/06/21
(63038)
2031/12/22
(63222)
2032/06/21
(63404)
2032/12/21
(63587)
日の干支 (K)丁亥 (23)辛卯 (27)壬辰 (28)丙申 (32)戊戌 (34)辛丑 (37)
切替日の日付
(MJD)
2030/05/29
(62650)
2030/11/25
(62830)
2031/05/24
(63010)
2032/01/19
(63250)
2032/07/17
(63430)
2033/01/13
(63610)
切替日の干支 (K)甲子 (00)甲子 (00)甲子 (00)甲子 (00)甲子 (00)甲子 (00)
切替日の九星九紫 (陰遁)一白 (陽遁)九紫 (陰遁)一白 (陽遁)九紫 (陰遁)一白 (陽遁)

2031年夏から2031年冬の切替日までの間隔が240日となっていて、明らかにおかしいことが分かります*8

この場合は、下表のように後側 (2031年冬) の切替日を30日前 (甲午) に変更して、九星の閏を置くようにする必要があります。

 2030夏2030冬2031夏2031冬2032夏2032冬
夏至・冬至の日付
(MJD)
2030/06/21
(62673)
2030/12/22
(62857)
2031/06/21
(63038)
2031/12/22
(63222)
2032/06/21
(63404)
2032/12/21
(63587)
日の干支 (K)丁亥 (23)辛卯 (27)壬辰 (28)丙申 (32)戊戌 (34)辛丑 (37)
切替日の日付
(MJD)
2030/05/29
(62650)
2030/11/25
(62830)
2031/05/24
(63010)
2031/12/20
(63220)
2032/07/17
(63430)
2033/01/13
(63610)
切替日の干支 (K)甲子 (00)甲子 (00)甲子 (00)甲午 (30)甲子 (00)甲子 (00)
切替日の九星九紫 (陰遁)一白 (陽遁)九紫 (陰遁)七赤 (陽遁)九紫 (陰遁)一白 (陽遁)
2. 九星の閏を余分に置いている場合

続いて、2019年を例に挙げて説明します。

 2018夏2018冬2019夏2019冬2020夏2020冬
夏至・冬至の日付
(MJD))
2018/06/21
(58290)
2018/12/22
(58474)
2019/06/22
(58656)
2019/12/22
(58839)
2020/06/21
(59021)
2020/12/21
(59204
日の干支 (K)甲申 (20)戊子 (24)庚寅 (26)癸巳 (29)乙未 (31)戊戌 (34)
切替日の日付
(MJD)
2018/06/01
(58270)
2018/11/28
(58450)
2019/05/27
(58630)
2019/12/23
(58840)
2020/06/20
(59020)
2021/01/16
(59230)
切替日の干支 (K)甲子 (00)甲子 (00)甲子 (00)甲午 (30)甲午 (30)甲子 (00)
切替日の九星九紫 (陰遁)一白 (陽遁)九紫 (陰遁)七赤 (陽遁)三碧 (陰遁)一白 (陽遁)

2019年冬から2020年夏の切替日までの間隔が180日となっていて、明らかにおかしいことが分かります*9

この場合は、下表のように前側 (2019年冬) の切替日を30日前 (甲子) に変更して、九星の閏を置かないようにする必要があります。

 2018夏2018冬2019夏2019冬2020夏2020冬
夏至・冬至の日付
(MJD)
2018/06/21
(58290)
2018/12/22
(58474)
2019/06/22
(58656)
2019/12/22
(58839)
2020/06/21
(59021)
2020/12/21
(59204)
日の干支 (K)甲申 (20)戊子 (24)庚寅 (26)癸巳 (29)乙未 (31)戊戌 (34)
切替日の日付
(MJD)
2018/06/01
(58270)
2018/11/28
(58450)
2019/05/27
(58630)
2019/11/23
(58810)
2020/06/20
(59020)
2021/01/16
(59230)
切替日の干支 (K)甲子 (00)甲子 (00)甲子 (00)甲子 (00)甲午 (30)甲子 (00)
切替日の九星九紫 (陰遁)一白 (陽遁)九紫 (陰遁)一白 (陽遁)三碧 (陰遁)一白 (陽遁)

上記の調整を行った結果として、1951年〜2050年の間で「九星の閏」が置かれるのは、1951年夏、1962年冬、1974年夏、1985年冬、1997年夏、2008年冬、2020年夏、2031年冬、2043年夏、となります。

*1:『暦日大鑑』(西沢宥綜氏編)

*2:『20世紀暦』『21世紀暦』(いずれも日外アソシエーツ編集部編)

*3:流派による違いがあるので、これが正解というものではない

*4:日本標準時では09時

*5:紀元前4713年1月1日世界時12時からの経過日数

*6:甲・乙・丙・丁・戊・己・庚・辛・壬・癸の10種類

*7:子・丑・寅・卯・辰・巳・午・未・申・酉・戌・亥の12種類

*8:九星の閏を置かない場合、切替日の間隔は180日になるべき

*9:九星の閏を置く場合、切替日の間隔は210日になるべき

通りすがり通りすがり 2013/01/19 15:45 同じ疑問で調べたことがあるのですが、冬至・夏至が甲午を挟む3日間が連続する場合の規則ですが、天象学会の平成萬年暦(占いの人が良く持ってるらしき本)だと意図的に操作している感があります。
この頁で紹介されているアルゴリズムで行けば、
12/21/1905 閏 冬
6/21/1917 閏 夏 → 12/23/1916 閏 冬
6/23/1928 閏 夏
6/20/1940 閏 夏 → 12/23/1939 閏 冬
6/23/1951 閏 夏
12/22/1962 閏 冬
6/22/1974 閏 夏
12/21/1985 閏 冬
6/21/1997 閏 夏
12/20/2008 閏 冬
6/20/2020 閏 夏
12/20/2031 閏 冬
6/20/2043 閏 夏
6/22/2054 閏 夏
12/21/2065 閏 冬
6/21/2077 閏 夏
12/20/2088 閏 冬
6/21/2100 閏 夏
12/21/2111 閏 冬
6/21/2123 閏 夏
12/20/2134 閏 冬
6/20/2146 閏 夏
6/22/2157 閏 夏
12/21/2168 閏 冬
6/21/2180 閏 夏
12/21/2191 閏 冬
となるべきなのですが、隠遁陽遁の日数を合わすためや、冬閏、夏閏を交互にするために、1917と1940年は前倒しし、2043年は後倒しにしたのではと勘ぐっています。

nobmlnobml 2013/01/31 23:48 コメントに気づくのが遅くなり、申し訳ありませんでした。
確かに、意図的に夏冬が偏らないようにしているのでは?という思いはあって、(自分が必要としていた)1951〜2050年の範囲では良くても、もっと長い年月で見れば食い違う所はあるかも、とは懸念していましたが……
そうなると、適用可能な期間を限定した上で使うか、計算によらない方法に戻るか、なのでしょうね。

よりみち子よりみち子 2016/03/24 15:12 増井佐羊子氏著の「運命の明鑑」でも似た様なことになっています。
2019年冬は11月23日甲子一白ですが、2020年夏が6月20日甲午三碧になっています。
また、2041年冬は11月22日甲子一白ですが、2043年夏が6月20日甲午三碧になっています。

nobmlnobml 2016/03/29 00:44 ※二重投稿になっていましたコメントは削除しました。
昨日(2016/3/28)に見つけた資料を考慮したうえで、一旦修正前の記述に戻しました。
この場合、ご指摘いただいた2019〜2020年と2042〜2043年については、おそらく整合がとれるはずですが、逆に通りすがりさんに以前指摘いただいた1916〜1917年と1939〜1940年については、ズレが生じてしまうことになります。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/nobml/20121231/1356881216
1999 | 01 |
2002 | 10 | 11 | 12 |
2003 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 10 | 11 | 12 |
2014 | 01 | 08 | 09 | 10 | 11 | 12 |
2015 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 10 | 11 | 12 |
2016 | 02 | 03 | 04 | 05 | 06 | 08 | 09 | 10 | 11 | 12 |
2017 | 05 |
2018 | 01 |
Connection: close