next up previous
Next: 2 今日の講義 Up: 計算天文学 II Previous: 計算天文学 II

1 はじめに

この講義では、前学期の計算天文学 I の内容からもう少し発展した課題を扱 う。具体的には、一応以下のような内容をカバーしたいというつもりである。

  1. 偏微分方程式
    ここでは、熱伝導等の拡散過程による時間発展を記述する放物型方程式、 流体中の波動等の時間発展を記述する双曲型方程式、これらの定常解や固 有値問題を記述する楕円型方程式について、その数値的取り扱いの基礎を 学ぶ。

    1. 放物型方程式
    2. 陽解法と陰解法
    3. 精度と安定性
    4. モンテカルロ法
    5. 楕円型方程式と変分法
    6. 双曲型方程式

  2. 常微分方程式とハミルトン系
    常微分方程式を精度良く解くことは、天文シミュレーションにおいて非常 に重要な位置を占める。ここでは、主に太陽系内の惑星・彗星の運動、3連 星の運動といった重力多体問題を例に、高精度な解法について学ぶ。
    1. 高精度の解法概論
    2. 高次ルンゲ・クッタ
    3. 線形多段法
    4. 補外法
    5. 自動時間刻み調節
    6. シンプレクティック法と対称型解法

  3. 最適化・解探索
    一般に実験、観測では、結果をもっともよく表すモデルを見つけることが 必要になる。これは、数学的には最適化問題ということになる。最近の太 陽系外惑星探査や重力レンズ観測等を例に、データからどのようにモデル を決めることができるのか考える。
    1. 線形最適化
    2. 非線形最適化
    3. 確率的方法:シミュレーテッド・アニーリング と遺伝的アルゴリズム

  4. 非数値アルゴリズム
    大規模なシミュレーションや観測データ処理では、数値計算の方法以外に 大量のデータをどのように扱い、必要なものをどうやって見つけるかといっ たことが問題になる。その基本はデータをある順番に並べかえたり、n番 目のものを見つけるといった処理となる。上にあげた重力多体問題を例に、こ のような非数値アルゴリズムがどんな役にたつか考える。
    1. 基本的データ構造
    2. サーチ・ソート
    3. ツリー構造とその応用

週1の講義で本当にこれだけの内容を全部カバーするのはだい ぶ大変なので、まあ、ぼちぼちいきましょう。

1.1 使用言語

計算天文学 I では言語として Fortran を使ったことと思う。 Fortran は 1950年代に最初の版(Fortran I)が開発された極めて古い言語(実際上、最初 の計算機言語)であるが、Fortran 66, Fortran 77, Fortran 95 と3度に渡る 大きな仕様改訂(拡張)を経て、現在でも計算科学の広い分野で使われている。 特に、

は大体 Fortran 77 で書かれているので、指導教官とコミュニケートするため だけにでも Fortran の知識は必要である。

が、それでは、 Fortran だけ使っていればいいかというと、最近はそれでは すまなくなってきている。これにはまたいろいろな理由があるが、端的には、 天文の世界でも、新しく書かれるプログラムにはほとんどの場合 C++ が使わ れるようになってきているからである。

C++ は、C言語をベースに1980年代にベル研で開発された比較的新しい言語で ある。C言語自体は、やはりベル研で1970年代に開発されたものであり、当初 は UNIX オペレーティングシステムの記述言語として普及した。さらに、1980 年代にはいってパーソナルコンピュータが普及すると、その OS (CP/M, MS-DOS, Windows)の上での主なプログラム開発言語として揺るぎない地位をし めるようになった。

そうなったのはどうしてかというのは、どうもよくわからないところもなくは ない。当時から C はあまり評判の良くない言語であり、それは C++ になって もあまり変わっていないからである。もっとも、どう評判が悪いかというのを 細かく見ていくと、結局、広くなんにでも使え、しかも計算機の能力を十分発 揮できるように作られているために、あまり見た目が良くないというのが大き い。見た目のわかりやすさというのは本当は重要だが、だからといってこの講 義であまり広く使われていない言語を使うというわけにもいかない。

C++ は、本当は C の上に「オブジェクト指向」というなんだか難しい理念を 実現するための言語だが、この講義ではそういうところにはあまり触れないで、 必要に応じて使っていくということにしたい。

1.2 講義資料のありか

http://grape.astron.s.u-tokyo.ac.jp/~makino/kougi/keisan_tenmongakuII/overall.html
にシラバス、配布資料があるので必要に応じて見ること。

1.3 参考書

ええと、C++ 自体の参考書はあまりに沢山あるのではっきりいってなにがいい のか僕にも良くわからない。 Web 上だと、とりあえず理物の院生の渡辺尚貴 さんの作っているページ

http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/
あたりから見ていくのがいいと思う。

なお、 C++ の文法等自体についてはあんまりちゃんとは説明しないので、そ のつもりで。

問題に応じた参考書は別に指定していく。

1.4 評価

レポート である。一応、来週以降は毎週課題を出すということにする。で、 原則として次の週には提出してもらう。いうまでもないが、全部提出しなけれ ば単位はつかない。

一応計算機の講義なので、手書きのレポートというのもちょっとそぐわないで あろう。したがって、Latex で書いて PS ファイルにしたものか、または HTML で出すということにする。 PS ファイル(あるいは pdf ファイル)になっ ていればどうしても Latex で作らないといけないということはないが、将来 のことを考えるとあまり Word とかそういうものではやらないほうがいいと思 う。

HTML で作りたい人は、自分ホームの下にどこかディレクトリをつくってそこ に置いておくこと。で、メイルで

makino@ed00.astron.s.u-tokyo.ac.jp

あてに、 Subject を、今日のものなら 「Report 10/12」として送ること。PS ファイルとかの場合でもこの方法でも構わない。

1.5 講義形式

基本的には、始めに少し説明して、あとは適当に計算機室で課題等をやっても らうということにする。説明は講義室を使うか、計算機室を使うかはちょっと 人数等を見て決めたい。



Jun Makino
Wed Oct 11 11:55:04 JST 2000