カテゴリー(プログラミング) | メイン

2006年10月18日

軌道計算プログラム改良中

 自作の軌道計算プログラムOrbitLifeを久しぶりに改良しています。
 非公開の機能は時々改良しながら、いろいろ計算しているのですが、今回は一般公開の機能です。彗星や小惑星が惑星に接近する状況を知りたい時が良くありますが、改良後の表示方法では、それぞれの惑星への各回の接近での、最も接近した日のデータのみ表示するようにしますので、各惑星への接近状況が把握しやすくなります。
 あと、軌道計算用の観測データ(MPCフォーマット)に、天文台コード 500(Geocentric)が含まれていると計算ができない問題を解決しました。上記改良版に含めて公開する予定です。

 その他、軌道計算中に、今後の光度変化の様子が直感的にわかるような機能も追加したいと思います。しかし、この機能はまだ少し先のことです。

  

この記事へのリンクURL

2005年07月17日

うるう秒挿入で判明した軌道計算プログラムのミス

先日、『まあ、うるう秒が挿入されたからといって慌てて対策をしないといけない人はほとんどいないと思いますが。』なんて書いたのですが、実は慌てました。うるう秒挿入なんて自分には関係ないと思っていたのですが、大有りでした。

 軌道計算プログラムを修正しないといけません。

 なぜかというと、世界各地から届く彗星や小惑星の観測データは時刻が世界時(我々が一般に使っている日本標準時-9時間)ですが、この世界時は前記のように1秒挿入したり削除したりして、頻繁にずれます。これではまともな計算ができないので、"修正されない時刻系"のひとつである、力学時に変換して計算しています。力学時は原子時より32.184秒進んでいますが、修正されないので計算に都合が良いのです。 うるう秒が挿入されたり時刻系にその他修正があるときは、それらを考慮して力学時を計算しなければならないのです。

 「うるう秒が挿入されるのですが、OrbitLifeではどのようにすれば良いですか」という問い合わせがあるまで気づきませんでした。まったくお恥ずかしい....(OrbitLifeというのは私が作成して、インターネットで一般公開している軌道計算プログラムです)。

プログラムを修正しようと電卓でいろいろ計算していたら、なんか...、変!
調べるまでも無く、1991年1月1日のうるう秒の挿入までしか対応していないことが判明しました。
ガ~ン。
その後6回のうるう秒挿入があったので、力学時が6秒ずれたまま計算していました。まさかこんなミスがあったなんて。

実はその1ヶ月ほど前に、ある軌道計算者から「OrbitLifeは近日点日が数秒ずれているようだ」とのメールが届いていたのです。数秒の"誤差"ではなく、"ずれている"という表現で。しかも、「力学時の計算はどうやってますか」という的を突いた内容でした。
近日点日は一般軌道の場合小数点以下5桁目までで表現するので、数秒のずれは最小桁に現れます。私は、この最小桁のわずかな違いからは「ミスがあるのでは」とは気づきませんでした。他の軌道要素との関係から生じる結果だろうと考えていたのです。

本気で計算に取り組んでいる人からの指摘はもう少し真剣に話を聞かなければならないと反省しました。

うるう秒挿入がなければ永遠にこのミスに気づかなかったかもしれません。

ちなみに、「うるう秒が挿入されるのですが、OrbitLifeではどのようにすれば良いですか」と問い合わせてきた人は、その軌道計算者だったのでした。
重ね重ね、お礼申し上げます。

この記事へのリンクURL

2005年05月06日

引きこもって軌道計算プログラムを作ってます

 みなさん、5月の連休は遊び疲れたこととお喜び申し上げます(笑)。私は静かな職場で快適に仕事をしていました。一般事務社員(通称女子事務員)は全員休みだし、取引企業も休みなので電話は1本もかかってきません。もちろん、飛び込みのセールスもなく、うるさい電話の勧誘もないので大変仕事が進みます。でも、一日中椅子に座っているので、腰が痛くなります。連休明けは一斉に迷惑電話がかかってくるんだろうなあ....。
 仕事が終わったら軌道計算プログラムを作っています。すでにOrbitLifeというソフトを一般公開していますが、これにさらに強力な機能を追加中です。なにを追加しているかというと....。下の画面をクリックして想像してください(笑)。プログラムは完成しているような、不完全なようなあいまいな状態です。「特定目的のためには実用レベルにはあるが、万能ではない」という状況で、危ないのでまだ公開していません。
 教科書など無いので大昔の論文を探してみましたら、関連論文がぞくぞく出てきました。いろんなことが研究されてわかってきたんだなあと驚きました。でも全て英語なので読むのに時間がかかります。とりあえず、数式に注目して必要な部分だけつまみ食いしている状態です。
 3月、4月だけで100時間以上、論文+専門書+プログラムと格闘しています。休日なんか引きこもり状態で早朝から深夜までこれにかかっているので、どうにかして完成させたいです。

 こんな2ヶ月を送っているのでひとりごとのネタ切れご容赦。


OrbitLife開発中の画面
クリックすると原寸で表示されます(117KB)

【プログラミング実習 VC++入門】

私はこの本でMicrosoft Visual C++ を習得しました。何度も挫折した人にお勧めします。

この記事へのリンクURL

2004年10月18日

軌道計算プログラムOrbitLifeをバージョンアップしました

非常に大きく強い台風23号が近づきつつあります

 軌道計算プログラムをバージョンアップしました。今回は彗星(小惑星)と惑星など摂動体との接近具合が視覚的に把握できるようにグラフが表示できるようにしました。各惑星のタブをクリックすると、その惑星との距離が時系列で表示されるので、どの時期に急激に軌道が変化したのかがわかりやすくなりました。結構面白いです。
 これで、地味~なソフトに少しだけ色がつきました。
 さらにバージョンアップは続きます。


クリックすると原寸大の画面が表示できます

非常に難しい本ですが

この記事へのリンクURL

2004年09月08日

あきらめなくて良かったなあ

 軌道計算プログラムの開発で一番大変だったのは、やはり計算途中での正しい数値がわからなかったことです。電卓で計算してみて確認できるような計算量じゃないので、どの時点で数値がおかしくなっているのかさっぱりわからなかったのです。異常な数値が出るとそこから逆方向にとんでもない複雑な計算式をたどりながら、勘を働かせます。
 集中して考え、数日間も原因がわからないと、「プログラムが間違ってるんじゃない。自然界の統一法則が間違っているんだ」と本気で思うようになります(笑)。あらゆる角度から原因を追求するのですが、完全に行き詰まって、これ以上原因究明の材料が出ないというところまで何度も追い詰められました。「もうここまでが能力の限界か....」と何度もあきらめるしかない状況になりました。

 今回のアテネオリンピックでも日本選手が大活躍しました。最後の1秒で大逆転してメダルを取った柔道選手。タッチの差でメダルを取った水泳選手。最終ラウンドの最終得点まで争って勝利した卓球の選手。延長の末、最終の1矢でメダルを獲得したアーチェリーの選手。感動を与えた選手に共通しているものは、練習と試合を通じて「最後の瞬間まで絶対にあきらめなかった」ということです。

 『あきらめなければいつかは願いはかなう』。軌道計算プログラムを公開できた今、実感しています。

この記事へのリンクURL

2004年09月07日

軌道計算プログラムOrbitLife一般公開しました!

 公開直後にバグ(不具合)が多発するので、そーーっと公開したつもりでしたが、その日の夜のうちに何件か「おめでとう」っていうメッセージと不具合の報告がありました。現在のところバグ1件で収まっています。アクセスカウンターがいつもの2倍に跳ね上がり驚きました。

 軌道計算プログラムを作ったことがある人は多いはずなのに、一般に公開されているものは海外に少しあるだけで、日本には軌道決定から摂動計算まで一気に計算できるものがありませんでした。
 本当に「計算してやろう」という人は苦労しながらも自力で開発するでしょうが、ちょっと軌道計算の雰囲気を知りたいという人や、地球を含めた惑星への最接近日と距離を調べたいなどという人にとっては有用なソフトになると思います。

 ただし、軌道計算プログラムと言ってもどのような状況でも正しく計算できるとは限りません。もちろん、数学的というか、天体力学的と言いましょうか、計算上は正しい答えが出ますが、それが本当の軌道かどうかは計算者の判断が必要です。電卓を間違って使ったらおつりの計算すら間違ってしまうのと同じです。
 例えば、発見後間もない少ない観測データを使って一般軌道を計算したところ離心率(e)が2.5の軌道が計算され、残差も綺麗にそろっているような場合が頻繁にあります。いくら残差傾向が美しくても、このような軌道は誤っていると判断しなければなりません。なぜなら、これまで離心率が2.5などという天体は見つかっていないからです。(まあ、今後太陽系のずっと外からすごい勢いで太陽に向かい、太陽の重力影響で少しだけ軌道が曲がり太陽系の外に勢い良く飛び出す天体がないとはいえませんが....。)
 でもこの軌道が不安定な観測初期が計算者にとって最も楽しい時です。観測者達からの報告をまだかまだかと待って、届きしだいどんな軌道になるかなとドキドキしながら再度計算してみる。この段階で、将来地球と太陽に非常に接近し、大彗星になることが判明することもあります。まだ天文雑誌や新聞に掲載されてないうちに計算者のみが知る優越感を味わうこともできます。
 今後ノウハウのようなページや"このような場合は要注意"というようなページも作りたいと思っていますので、ご利用いただけたらと思います。

この記事へのリンクURL

2004年08月24日

軌道計算プログラムまもなく完成

 DE406のダウンロード→合体→Intel Binaryへの変換が自動的にできるようになり、ついに公開版軌道計算プログラム OrbitLife が完成した感じです。まだ改良点はたくさんありますが、とりあえず公開しても大丈夫なだけの機能と品質が得られたと思います。
 現在ダウンロードのページと最初の操作方法のページを作成しています。あと1~2日で最低必要な操作方法のページができると思うので、でき次第一般公開したいと思っています。
 OrbitLife をきっかけとして、一人でも多くの人に彗星や小惑星の軌道計算に興味を持って欲しいと思います。
 さあ、もうひとがんばりだ。

この記事へのリンクURL

2004年08月23日

DE406合体成功

 DE406(惑星座標ファイル)の合体ファイルの作成に成功しました。
 そこで、軌道計算プログラムのインストール用画面で[受信ボタン]をクリックすると、ジェット推進研究所のftpサーバーからDE406の分割ファイルを受信し、自動的に合体ファイルを作るところまでプログラムを作りました。あとは、Intel Binaryの形式にファイルを変換するプログラムを組み込むだけです。このプログラムは単体で完成しているので、あと少しの作業で完成します。
 これでいよいよ軌道計算プログラム OrbitLife リリースか!?

 書けば簡単ですが、実際は全てのことを放り出して、完全閉鎖モードで開発しています。メールの返信もほったらかし、早く連絡しないといけないことも後回し、ホームページの更新は忘れています。集中しすぎる癖が出て各所に歪が.....。

 胃の調子が良くなりました。原因は自分の精神力の限界を超えた状態に長期間置いたこと。でも苦闘する中で得たものは生涯の財産となるでしょう。人生、修行です。

この記事へのリンクURL

2004年08月17日

DE406の合体、突破口が開けるか

 SWAN彗星の発見者である、あの鈴木雅之氏からメールが届きました。そこにはDE406の合体ファイルを作る方法が示されていました。突破口が開けるかもしれません。これがうまくいったら、いよいよ軌道計算プログラムの一般公開です。現在未解決の問題はこの件だけ。
 ペルセウス座流星群は見られませんでした。0等級を1個だけみました。しかも高速道路走行中に。本気で観測した人たちからの報告では、1分間に50個とか100個とかって聞きました。ペルセウス座流星群って今まで一度も見たこと無いです。どうも相性が悪いです。気合が足りないだけか....。

この記事へのリンクURL

2004年08月08日

DE406の置き場所がありません

 軌道計算プログラムの公開版がほぼ完成していますが、最後に大どんでん返しが待っていました。計算に必要なDE406の置き場所がありません。会社のサーバーに居候しようと思っていましたが、会社側が最初はかなりいい感触だったのですが、1週間後に「ちょっとまずい」と言ってきました。残念。
 さあ、どうしましょ。
 自分のサーバーに置くとそれだけで容量を使い尽くしてしまいます。別途契約すると、DE406だけのために年間25000円も支払うことになるので負担が大きいです。やはりJPL(ジェット推進研究所)のftpサーバーから自動的にダウンロードする方法しかありません。ところが、JPLのサーバーには、以前は合体ファイルがあったのに現在は20個に分割されたファイルしか置かれていません。
 1個に合体させるサンプルプログラムもあるのですが、まともに動いてくれません。サーバーにあるドキュメントを読んだり、サンプルプログラムを動作させたり、 Fundamental Ephemeris Computations, Willmann-Bell, Inc. など朝からずっと読んだりしているのですが、いまだに合体がうまくいかず疲れてきました。JPLはなぜ合体ファイルを消してしまったのだろう。20個に分割したファイルよりも合体ファイルの方がずっと使いやすいのにねえ。
 ってことでDE406の合体ファイルの作成方法がわかるまで、軌道計算プログラムの公開は延期です。

この記事へのリンクURL

2004年08月01日

軌道計算プログラムのいじめ試験開始

 高知県地方は台風が過ぎ去った後、強い雨が断続的に降り続いています。雷雨も長時間におよび何度も停電します。日曜日だと言うのに会社でコンピュータのお守りをしています。無停電電源装置を増設することにします。

 軌道計算プログラムがほぼ完成したので、2人の軌道計算の心得のある方に動作試験していただいています。バグが出るでる.....。やはり自分ではプログラムがかわいいのでいじめることができませんね(笑)。2人の方にはマニュアルなしで(まだ執筆中)操作していただきました。あーでもない、こーでもない、どうやるんだ?っていう感じで適当に触って下さったのでしょう。想定外の操作で異常終了するケースがありました(あぶない)。それでもマニュアルなしでどうにか軌道決定から摂動計算まで完了し、結果ファイルの出力までやっていただきました。皆さんお疲れ様でした。
 公開までに解決すべき6件もの問題が洗い出されました。なんとか3日程度で解決したいと思います。その後マニュアルも書かないといけません。週末公開を目指したいと思います。

この記事へのリンクURL

2004年07月29日

DE406惑星座標ファイルの置き場所がない

 公開版軌道計算プログラムがとりあえず完成し、ダウンロード用のページやオンラインマニュアルのページ、ノウハウのページなど作成中です。でもその前にDE406惑星データが200MB近くもあり、私のサーバーに入りきらないんです。ZIPで圧縮しても170MBくらいにしか圧縮できないし....。勤務先のウェッブサーバーが70GBほどディスクが余っているので、そちらに居候させてもらえるように役員と交渉中。担当役員は私が天文の世界で活動していることを理解してくれているので協力は得られるとは思うのですが。明日返事をくれるそうです。

この記事へのリンクURL

2004年07月25日

軌道計算プログラム、Windows98で不具合発生

 軌道計算プログラムの公開版が完成直前に大問題発覚。Microsoft Visual C++.NETで開発すると(MFCを使うと)、Windows 98でファイルを開くためのダイアログボックスが表示されないのだ。Windows 2000でファイルアクセス機能の拡張に伴ってOPENFILENAME構造体のサイズを大きくしたのが関係していると言うことはすぐにわかったが簡単な対策が思いつかず、結局大格闘の末、下のようなプログラムにすると動作してくれた。MFCのどこかにバグがありそうだ。

memset(pPathName, 0, _MAX_PATH);
memset(&ofn, 0, sizeof(OPENFILENAME));
ofn.lStructSize = 76;
                // sizeof(OPENFILENAME)にすると
                // Windows 98でダイアログボックス
                // が開かない
ofn.hwndOwner = hWnd;
ofn.lpstrFilter = 
  "(*.obs)\0*.obs\0(*.txt)\0*.txt\0(*.*)\0*.*\0\0";
ofn.nFilterIndex = 1;
ofn.lpstrInitialDir = pApp->m_szObsFolder;
ofn.lpstrFile = pPathName;
ofn.nMaxFile = _MAX_PATH;
ofn.lpstrTitle= szTitle;
ofn.Flags = OFN_FILEMUSTEXIST;
ofn.lpstrDefExt = "obs";
if (::GetOpenFileName(&ofn))
        ret = OK;
else
        ret = NG;
 これでいよいよ一般公開かな~。
 

この記事へのリンクURL

2004年07月04日

雲の中を稲光が走り回っていました。怖~~。

 昨夜は久しぶりに観測できるかもしれないと思って、徹夜観測の準備をして観測地に行きましたが、霧のようなひどい透明度と薄雲に覆われてあきらめました。北斗七星の近くにあるニート彗星は観測できそうでしたが、近くに厚い雲があったようで雲の中を稲光が走り回っていました。怖いけど綺麗でしたよ。日本から見られる位置まで北上したスワン彗星 C/2004 H6(SWAN) の初観測はなりませんでした。

 今日は軌道計算プログラムの公開版を作っていました。自分しか使わない機能や開発用の画面などをメニュやツールバーから削除し、エラーメッセージが適切に表示されるようにしました。また、自由にいろいろなボタンがクリックされると誤動作するので、状態によってボタンやテキストボックスを無効化するように改良中です。自分で使う分にはエラーチェックもなにも必要ないのですが、公開版ともなるとちゃんとチェックしないとね。非重力効果の計算機能は、非重力が大きいと正しそうな計算値が出るのですが、小さい場合ちょっと怪しいので今後の研究課題ということで、画面上では無効化することにしました。
 だれか使ってくれますか?

大きな画像はここをクリック

難しい理論は理解できなくても、とにかく電卓で軌道計算してみたい人にお勧めします。



基礎理論はこちらで学びましょう。

この記事へのリンクURL

2004年02月10日

彗星の非重力効果の計算機能を追加中

 彗星の非重力効果の計算を大幅に効率化する方法があることに気づきました。早速改良します。
 軌道計算プログラムはMicrosoft Visual C++.NETで開発しています。画面の制御などのユーザインタフェースはVisual Basicなどが大変楽に開発できますが、完成したプログラムの速度が非常に遅いことが難点です。その点、Visual C++はプログラムコードが最高度に最適化されるので、軌道計算プログラムなどの膨大な繰り返し計算処理が必要なアプリケーションには適しています。デバッガーも大変使いやすく、下手にVisual Basicで開発するよりも効率が良いです。下の画像は軌道計算プログラムを開発中の画面です。こんな風に開発しています。
 画面に表示されている部分は非重力効果の計算の一部です。自己流なのでこれを真似してプログラムを作られても責任はもてません。「この計算方法よりもっと良い方法がある」というご指導はぜひ頂きたいと思います。
 ところで、軌道計算に取り組むアマチュア天文家って少ないですねえ。活躍している人はみんな40歳代以上だとか。この調子だと後継者がいなくなってしまいます。

クリックすると原寸大の画面が見られます

この記事へのリンクURL

2004年01月29日

軌道計算プログラム、元期の変更機能で苦戦中

 軌道計算プログラムに、観測期間からずっと大昔や未来まで計算期間を延ばして、過去軌道や未来軌道を計算できるように改良中ですが、現在の方法では計算できないことが判明。ああ、ここまでプログラム書くの結構大変だったのにーー。変更した部分を元に戻して仕切りなおしです。
 それと、小惑星2002 DB4の軌道が計算できません。観測データは十分そろっていると思うんだけどなあ。なぜ?

 下はかみのけ座の銀河M98です。

M98
1分間露出
CELESTRON C8 (f/6.3=1260mm)
BITRAN BT-10

この記事へのリンクURL

2004年01月27日

非重力計算、どうにか完成したかな?

寒くなってきました。山間部では雪が降ります。

 このところ自分のウェッブページの存在を忘れてしまうほど集中して軌道計算プログラムを改良していました。彗星の非重力効果を考慮した軌道が計算できるように機能追加していたのですが、非重力効果に関する文献が少なく散々苦労しました。でも軌道計算で実績のある村岡健治氏に重要なヒントを頂くことができ、どうにか完成した感じです。村岡氏の計算結果とほぼ一致しています。ただ、非重力の少ない彗星では非重力パラメータの数値がばらつく傾向があり、課題も残されている感じです。
 そして、また新たな機能追加を始めました.....。

この記事へのリンクURL

2004年01月11日

軌道計算プログラムにウエイト機能が付きました

 今日は1日中閉じこもって軌道計算プログラムを改良しました。各観測に、ウエイト(重み付け)をかけて軌道が計算できるようにしました。以前から開発していたのですが、昨夜最終テストをしたら、どうも思ったように軌道が改良できなかったので、別の方法に切り替えました。せっかく作ったプログラムはボツになってしまいましたが、今回のアルゴリズムの方がイメージに近い挙動をしてくれます。ここらへんは教科書や資料が無いので試行錯誤の連続です。
 次は非重力効果の計算ができるようにするともっと精度の高い計算ができるのですが、これもまた参考資料が少ないです。師匠宅に家庭訪問です。師匠の大好きなワインは発注済みです。


クリックすると原寸の画像が表示されます

この記事へのリンクURL

 
今日  昨日  累計