二十四節気を計算する

もはや天文というよりも暦の話になってますが。
先日見つけた PyEphem で二十四節気を計算するプログラムを書いてみました。いくつか懸案が残ってますが、とりあえず理科年表との誤差 1分以内くらいで求まるようになりました。雑学ですが、国民の祝日である春分秋分は、実際には瞬間的な事象である春分秋分を日本時間で含む一日ということになっています。もし、春分が 3月20日の 23:59:59…とかだったりすると、予測計算の精度によっては 20日なのか 21なのか決定が大変なのだそうです。(← 耳知識) 結局、最終的には前年に発表される官報が出るまで、春分秋分は確定しない場合があるそうです。
閑話休題。PyEphem では標準で春分秋分を計算してくれるライブラリがあるのですが、それ以外の黄経については簡単には計算できません。しかし、Ephem.newton() というニュートン法関数と、座標系を変換する関数があるので、それを使ってみました。黄経に何を使うがで悩んだのですが、とりあえず太陽の視赤緯と視赤経(地心位置です)を求めて、そこから黄経に変換してみました。うーむ、微妙に(数十秒ほど)ずれる理由が理解できていませんが、とりあえずカレンダーくらいは作れそうです。
もう一つの悩みは、PyEphem が黄経を角度(radian)で計算してくれるのですが、2πから 0 に跳躍してしまうため、単純なニュートン法では交点が求まらないことです。もうちょっとエレガントな方法を考えてみようと思います。