インド太陽暦-太陰太陽暦複合システムは、以下のようなアルゴリズムになっています (インド暦制定委員会の勧告[16],[71]を基準にし、そうでない民間暦に関す る記述[27]を()付きでコメントする形とします)。
文献[71]は現在手元にないのですが、東京大学東洋文化研究所で文献[27]の 著者であられる矢野道雄氏が「インドの暦の多様性について」という講演を行った 際(1993/12/17)に回覧されて拝見しました。文献[71]によると制定委員会は、 何十種類もの民間暦のアルゴリズムをアンケート式に調査し、現代天文学による 太陽・月・惑星の軌道要素を用いた新たな太陽暦-太陰太陽暦複合システムを制定した由。 また矢野氏が最近収集した民間暦でも数十種類の違いを確認されているとのことです。
1) 基準点 - 計算は東経82゜30'北緯23゜11'の地点で行います。 (もちろん民間暦は、発行地を基準にしているでしょう)
2) 太陽月 - 太陽の視黄経が30゜増える期間が1太陽月(saura)となります。 Vaisakha 月は太陽の視黄経が23゜15'になる瞬間に始まります。 (これは、回帰年を1年と見ていることになります。しかし、民 間暦では、恒星年を1年としています。23゜15'という半端な数字 も、西暦5世紀頃の春分点を歳差を無視して使い続けてきたため 現れたものです) 太陽月は、インド天文学の定数を用いた定気「節月」とみること ができますが、南インド・イラン(Borji暦の時代)・ネパール やバリ島では単に計算に用いられるだけでなく、実際の暦面にも 表示される(つまり実際に太陽暦として機能している)ようです。 インド国内における太陽暦の分布・詳細は把握できていません。
3) 太陰月 - 朔から次の朔までが1太陰月(masa)となります。 太陰月の名前は、その始まりの朔を含む太陽月の名前となります。 (民間暦では望から次の望までを1太陰月とする場合があります。 13.bat#7,13.bat#8,13.bat#9を参考にしてください)
4) 閏月 - 太陽月が2つの朔を含む場合、これらの朔で挟まれた太陰月が閏 月(adhika を本来の月名に付けて表現する。前に付けるか後に付 けるかは地方により異なる)になります。中国式と逆に、閏月の 方が、本来の月より先に来ることに注意しましょう。 (太陰月が望から始まるシステムの場合はさらに複雑になります)
5) 欠月 - 逆に太陽月が朔を含まない場合、同じ名前の太陰月は暦に現れま せん(ksaya)。最近はシャカ暦1904年末(AD1982年末~1983年初) に欠月があったようです(13.bat#7参照) 。
6) 太陰日 - 太陰月を月の位相で30等分したものです(tithis)。つまり、月の 位相が12゜増える期間が1太陰日となります。白分(Sukla)1-15日、 黒分(Krsna)1-15日の様に数えます。黒分末日は晦に相当する語 で表現するようですが、プログラムの都合で黒分15日(-15と表 記)とします。(望を太陰月の始まりとするシステムでも、満 ちる半月を白分、欠ける半月を黒分とします)
7) 太陽日 - 日出から次の日出までが1太陽日となります。日出を太陽が地平 線上のどの位置に来る瞬間と見るか明瞭でありません。たぶん民 間暦まで考えると、多様な定義があるのでしょう。 太陽日の名前は、その始まりの日出を含む太陰日の名前となりま す。当然、太陰月の場合と同様ダブったり、消えたりすることが あります(この定義では文献[27]にくらべて余日の発生が1日遅 くなりますが、矢野氏によると実際の暦は文献[16]の位置に余日 をいれることが一般的のようです)。
民間暦に多様なバリエーションを生み出しているのは、以下のような選択肢が あるからです[27],[72],[116]。それぞれ使用されている地方に ついて漠然とコメントをつけていますが、素人が資料をつなぎあわせて並べた情報 ですので、雰囲気のみ感じるにとどめてください。何でもありのインドでは、 すべての組み合わせが有り得ると覚悟した方が良いのかも知れません。
1) 太陽・月・惑星の位置計算 a) 採用学説[72]のpp.25,[116]のpp.534。 Arya-paksa 500 ~南インド Ardharatrika-paksa 500 ~ラージャスタン、カシミール、ネパール、アッサム Brahma-paksa 400?~西インド、北インド Saura-paksa 800 ~全域 Ganesa-paksa 1500 ~西インド、西北インド イスラム的な軌道要素 現代天文学 その他 b) 基準とする地点の経緯度 c) 式か表か
2) 年の表し方 a) 紀年 シャカ紀元 ~南インド ヴィクラマ紀元 ~北インド、ネパール その他 ~ベンガル、昔のネパール b) 満か数えか
3) 年の始まり月 Caitra ~シャカ紀元のところ Vaisakha ~ネパール Karttika ~シャカ紀元、ヴィクラマ紀元のところ Sravana Asadha
4) 太陰太陽月日の表し方 晦日終わり ~南インド 満月終わり(パターン1)~北インド 満月終わり(パターン2)~北インド
5) 太陽月日 使用する ~南インド、ネパール 使用しない ~北インド
本プログラムでは、太陰月及び太陰日をサポートしています(最も有効な情報 であり、かつアルゴリズムも小規模ですむと判断したため-現在プログラムのコ ードセグメントにほとんど余裕がありません)。インド太陰太陽暦の暦法選択文 字 'T' は tithis の頭文字と理解してください。V2.07 から追加された変数 ut の値によって晦日終わり(デフォルト)、満月終わり(パターン1)、満月終わ り(パターン2)を切り替えられます[27]。
太陽月は「節月」として処理可能のはずですが、実例と照合できるほど南イン ド・ネパール・ジャワなどの暦を持ち合わせておらず、カスタマイズ・データを 提示することができません。
太陽日は、天体暦機能による日出検索と組み合わせることで計算可能です(と いうより、この計算を行うための準備として、天体暦機能の充実を図ったという のが実態)。太陰日は日付というより月齢に近い概念なので、連続複数計算の (*, *m, *yなどの指定の)基準にできません。しかし、月の位相の検索と組み 合わせることで、ほぼ同様の目的を達することができます(13.bat#7,13.bat#8,13.bat#9参照)。
矢野氏のご厚意により、氏のプログラムであるpancanga.pas のソースリストを 拝見する機会を得、古典的な日出時刻の計算法が判明しました。それによると、
日出時刻 = 6時 - arcsin(tan(緯度)×tan(太陽の赤緯))×24時/360度 太陽の赤緯 = arcsin(sin(太陽の平均黄経+歳差)×sin(黄道傾角24度))
となります。ただし、歳差は5世紀末に0度で 1年あたり 54秒増えるものとしま す。均時差を無視したこの日出時刻計算式はチベット暦とほぼ考え方は同じです (ただしチベットでは表-それもかなり大ざっぱな-を用いている上、歳差も考 慮されていない点が違います)。
本プログラムの計算には、天体暦自体の誤差、周天円を三角関数の和で近似し ていることによる誤差がありますが、これらは時間にしてせいぜい1分程度であ ると思われます。また、V2.071 まで未解決であった文献[27]P175~176の例との ずれの原因は、日出時刻計算法だけでなく、月の遠地点の回転量が違っていた (文献[27]には記載がない)ためでした。
indo.rsc, surya.rsc (ちなみに surya は太陽、siddhanta-悉曇-は定説の 意~アールダラートリカ学派のラータデーヴァのスールヤシッダーンタ(5世紀) とサウラ学派のスールヤシッダーンタ(8-9世紀)は異なる)にカスタマイズ・サ ンプル、13.batに使用法サンプル、indo.bat, indo.awk に五要素(曜日、ティ ティ、カラナ、ナクシャトラ、ヨーガ)表示例を示しましたので、参考にしてく ださい。V2.072 で13.batに追加した碑文の例は文献[73]によるものです。文 献[73]には問題のある例だけが載っているので、13.batをみて使いものになら ないとお考えになる必要はありません。たいていの場合は合うはずです(こうし た碑文でもっとも信頼のおけるのは曜日であるとのこと)。
V2.072 へのバージョンアップには矢野氏の pancanga.pas 及び文献[73]を参 考にさせていただきました。お礼を申し上げます。もちろん本プログラムは、 pancanga.pas とは独立したプログラムですから、その誤差(およびもし存在し ていた場合にはバグ)の責任は私にあります。
(*)この項、ダイアクリティカルマーク(文字に付加する'-'、'.'の類)を省略し て表記しています。
なお、暦法選択文字 'T' の暦法は、より一般的に1日の長さが24時間でない 暦を扱えるようになっています(関連があるためジャワ暦に続けて記述しました が、実はバリのシャカ暦もそうです)。