マツド・サイエンティスト研究所
研究報告7 時間と空間のシミュレーション(中間報告) 21st October 1998
はじめに
恒星間飛行等、物体の亜光速での運動を考慮する場合、また、ブラックホールやカーのリング、重力波等を考えるためには、相対性理論を理解する必要がある。
相対性理論には、曲がっていない空間を等速度運動した場合の時空の座標軸の傾きを示す特殊相対性理論と、質量やエネルギーが時空を曲げ、曲がった空間での物体の運動を示す一般相対性理論の二種類がある。
前者の特殊相対性理論は、比較的理解しやすいもので、高校生程度の力があれば、式の導出を追いかける事も可能であるため、ここでの説明は省略する。
後者の一般相対性理論の中でも中核となる空間の曲がりを示す場の方程式(一般的にはアインシュタイン方程式と呼ばれる)は、大変複雑な式で、一般的な解析解が存在しない。この事が、一般相対性理論を理解する上で高い敷居になっている。
場の方程式のダイナミズムをコンピュータでシミュレートするプログラムがあれば、一般相対性理論を理解する上でも、相対論的な効果を使った運動や重力波の振る舞いを観る上でも役に立つと思われる。このような試みは色々と行なわれ居るようで、このこのページのように美しい3Dムービーを公開しているところもある。
しかし、場の方程式のダイナミズムをシミュレートするためには、大量かつ複雑の数値演算を必要とするため、スーパーコンピュータを使った場合が多く、私が調べた限りでは、アマチュア/個人レベルで使えるようなシミュレーション・プログラムは存在しない。
但し、現在のパソコンは、一昔前のスーパーコンピュータに匹敵する性能を持ち、更に年々計算速度と記憶容量は増加している。従って、ごく小規模なものならパソコンを使った時空シミュレータを作る事に意味があると思われるので、これに挑戦するものである。将来的には、Foxを一万個連結して、時空シミュレータ専用のコンピュータでも作ろうかと密かに考えている。
なお、現時点では、アインシュタイン方程式の展開を終えたところで、未だ、プログラムのコーディングをしておらず、今回は中間報告とさせていただく。それでも、リッチのテンソルの完全展開や対角化された座標でのアインシュタインのテンソルの公開、さらに式を展開する為のプログラムのリリースと言った野心的な内容を含んでいる。
一般相対性理論における物体の運動
一般相対性理論では、物体の運動に関して二つの方程式がある。一つは曲がった時空中における物体の運動を記述するのもで、もう一つはアインシュタイン方程式とよばれる場の方程式である。
前者の方程式を解くのは、時空が与えられていれば、さほど難しいものではない。後者のアインシュタイン方程式が時空の曲がりを求めるものである。アインシュタイン方程式から時空の曲がりを得た後、前者の方程式を用いて、物体の動きを求める。但し、実際には、物体の動きがアインシュタイン方程式を変化させるので、両者は複雑に絡みあう。
一般相対性理論における物体の運動や時空のダイナミズムをシミュレートするためには、アインシュタイン方程式から時空の曲がりを求める事が、まず必要である。
アインシュタイン方程式
アインシュタイン方程式(場の方程式)は、下の(1)で与えられる。
・・(1)
但し、以下の通りである。
・・(2)
はアインシュタインのテンソル、はリッチのテンソル、はスカラー曲率、はリーマン計量と呼ばれる。リーマン計量は、局所慣性系の座標と、一般の座標との関係を示し、以下の式で与えれる。
・・(3)
なお、は、
・・(4)
である。
このリーマン計量が、時間的・空間的に変化する事が空間の曲がりであり、アインシュタインの方程式は、リーマン計量の変化を表すものである。
なお、真空中で電磁場も無い場合は
・・(5)
である。
また、
・・(6)
である事から、(1)は(7)式に書き直せる。
・・(7)
なお、(1)から(5)の式は、Ray d'Inverno著 "Introducing Einstein's
Relativity" を参考にしている。実は、幾つかの文献を調べた結果、リーマン計量の符号やリッチのテンソルの定義式が微妙に異なる事を発見したため、前述の文献に統一したものである。ちなみに、符号や定義式の微妙な違いは、本質的な違いではなく、あくまでも表記上の問題に限られている。
リッチのテンソルを求める
アインシュタインの方程式(1)は(7)式と等価である事から、より簡単な(7)式を使って、時空のシミュレーションを行う。
まず、リッチのテンソルを求める。
前節では、何の断り無しにいきなりテンソルが登場し、特に(1)から(7)式は、アインシュタインの規約の下に書かれているために非常に簡単に見える。しかし、実はリッチのテンソル及びアインシュタインのテンソルを求める式は、大変複雑である。
テンソルとは、ベクトルとか行列を拡張したようなものである。但し、ベクトルの添え字は一つ、行列の場合は二つに決まっているが、テンソルの場合は任意である。また、アインシュタインの規約とは、テンソルの上の添え字と下の添え字が同じ場合、その数を0から3までの数を代入して足しあわせる事を意味する。(テンソルの詳しい説明は、このコンテンツの主旨ではないので、省略する。専門的な書籍が数多く出ているので参照してもらいたい。)
リッチのテンソルを求める(2)式を、アインシュタインの規約を用いずに、テンソル自体を理解していない人やコンピュータでも判るように、泥臭く書き直す。従って、(8)式では、アインシュタインの規約を使っていないので、注意してもらいたい。
・・(8)
リッチのテンソルの完全展開
前節の(8)式を使えば、リッチのテンソルを展開する事ができる。
が、人間が展開できる量ではないので、止めておいた方が良い。
実は、2年ほど前に盲腸の手術をし入院した時に、病室での時間潰しに、紙と鉛筆を使って展開を始めたのだが、一週間後に退院しても、何ヶ月経っても一向に終わる気配が無い。多分、数年いや数十年かかっても終える作業では無かったかと思う。
そこで、文明の利器・コンピュータを使って、リッチのテンソルを展開する事にした。この結果をPDFファイルにしたので、次の行からダウンロードできる。
GR.PDF(310,254bytes)
上のPDFの内、何と1頁から46頁が、リッチのテンソルの完全展開である。ちなみに、日本語版Acrebat Reader 3.0Jにはバグがあるらしく、上記のPDFの画面上での表示は良いが、プリントアウトすると数式中の-(マイナス記号)が印刷されない。英語版のAcrebat Reader 3.01では、問題無いので、プリントアウト時には英語版の使用を推奨する。
なお、コンピュータを使ってのリッチのテンソルや、この後説明する対角化された座標でのアインシュタインのテンソルの展開方法及びプログラムは、ソースコード込みで付録に添付する。インターネットからダウンロードできるフリーソフトのみで、この複雑な展開を行いPDFファイルを作る事ができる。
座標の対角変換
前記のGR.PDFの1頁から46頁を見ると、このリッチのテンソルの展開では、正直に言って、何処から手を付けて良いか判らんのである。
リッチのテンソル、ひいてはアインシュタインの方程式は、リーマン計量の時間を含めた四つの次元での偏微分方程式である。従って、コンピュータシミュレーションを行う場合、有限要素法のようにある時点(この『ある時点』と言うのが実はあやふやなのだが)の空間をメッシュで切り、各ノード上での時間での一階もしくは二階微分を求めて、時間による変化を数値計算すれば良い。
が対称かつ逆行列を持つ事から、各ノードにおける座標を上手く変換すれば、を対角にする事が可能である。気を付けてもらいたいのは、当該の時空点において、リーマン計量の非対角要素をゼロにしたが、非対角要素の偏微分までゼロに限定したわけではない事である。
つまり、下のようにしている。
・・(9)
この場合のリッチのテンソルも前述のGR.PDFの中に含まれている。GR.PDFの中で、46頁から52頁が、この対角化された座標でのリッチのテンソルの展開である。
微分方程式を立てる・・立たない!!
GR.PEFの46頁から52頁を見ると、自明(?)の事だが、当該ノードにおける状態変化の微分方程式が立たない事が判る。
当該ノード(当該する時空点)において、リーマン計量は、4x4で全部で16個あるのだが、対称なので、実際は独立の10個の状態がある。また、リッチのテンソルも同じく10個あるので、これを連立方程式として解き、10個のによる一階または二階の微分方程式を求める事ができれば問題は無い。
ところが、46頁から52頁を見れば、連立方程式として成立するのは、10個の内、7個だけで、残り3個は適当でない事が判る。具体的には、さえ無視すれば、については一階の微分方程式を、については二階の微分方程式を得る事ができる。しかし、リッチのテンソルの内、が適当でない事もあり、については、どうしても微分方程式が求まらないのである。
このことに気付いてから、数ヶ月間、計算違いは無いか、何か見落としているものは無いかを検討し直した。特にリッチのテンソルの展開は、何通りもの異なる方法で行ったが、全て同じ結果となった。
悶々と悩んだ結果、専門家に相談する事し、S.Matsu氏に、大阪教育大学の福江純先生を紹介してもらい、更に福江先生から、東京大学の江里口良治先生と早稲田大学の前田恵一先生を紹介してもらった。
私のような素人が大学の先生に質問のメールを出しても、おいそれとは返事は貰えまいと思っていた。ところが、先生方から、即座に丁寧な説明でお返事を頂いた。この親切、誠にありがたい限りである。この場を借りてお礼を申し上げたい。
先生方から来たメールを見て驚いた。
先生方、皆さん、おっしゃる事は同じで、私のリッチのテンソルの展開に問題があるのではなく、アインシュタイン方程式の解釈、そのものが間違っていると言われるのである。
アインシュタイン方程式の解釈
リーマン計量は、全部で10個存在し、これに対応するようにアインシュタイン方程式は10個の方程式で構成されている。
このため、有る時空の一点における状態変数を10個用意し、各状態変数の微分方程式を10個用意すれば、時間と空間のシミュレーションを行えると思っていた。
ところが、状態変数と成り得るのは、6個だけで、残りの4個については束縛方程式になるのだそうである。アインシュタイン方程式には、エネルギー・運動量の保存則が内在しており、4つの束縛方程式で初期値を決めると、後の時間変化は6個の微分方程式だけで計算できるそうである。
私の展開したリッチのテンソルに、これを当てはめると初期値については、リッチのテンソルの内、を使って求め、時間変化についてはのと各々の一階の時間微分を状態変数とし、リッチのテンソルの内を用いて、二階の時間微分方程式とする。
従って、
・・(10)
とすることで、リッチのテンソルを簡略化できる。この簡略化を行ったものをGR.PDFの52頁から57頁に示す。
(注:先生方の御教授ではとする事も可能なようであるが、私が完全に理解していないので残している。プログラムの変更は簡単なので、この辺の場合分けを行ったリッチのテンソルの展開は、自分でやってみると良いだろう。)
GR.PDFの52頁から57頁を見れば、これで時間変化が示され、時間と空間のシミュレーションをコーディングする準備ができる事が判る。
調子にのって、スカラー曲率、アインシュタインのテンソルまで展開し、GR.PDFの57頁から66頁に載せたので、これもあわせて見てもらいたい。
そして、将来
時間と空間のシミュレーションについて、大まかな目処が立ったところで、今回の中間報告は終わる。
ただし、先生方からの御教授を、私が完全に理解したわけではないので、これを理解する事、境界条件とか無限遠をどう扱うかの問題、更に大量のプログラミング作業が残っている。
結論
時間と空間のシミュレーションについて、準備作業の一部が終わったに過ぎない。
が、シミュレーション・プログラムができた暁には、一般相対性理論についての理解をしやすいようにすると共に、時空の振る舞いや、それを用いた新しいアイデアを実験できるようにしたいと思っている。
最初に述べた亜光速での宇宙船の動きやブラックホール、さらには、スティーブン・バクスターの「ジーリーの宇宙船」のように時空に波を起こして推力を得るような推進システムをシミュレーションできれば理想的である。
謝辞
快く専門家を紹介して下さったS.Matsuこと松浦晋さんと大阪教育大学の福江純先生に感謝します。
アインシュタイン方程式の解釈について、丁寧な説明をして下さった東京大学の江里口良治先生と早稲田大学の前田恵一先生に感謝します。
pdfTeXについて、問題点の克服に協力していただき、ホームページのリンクを快く承諾してくださった角藤亮氏に感謝します。
付録
リッチ及びアインシュタインのテンソルを展開する事は本文中でも述べた通り、人間が行える作業量を遥かに超えている。
そこで、コンピュータを使って展開を行い、PDFファイルにする方法を述べる。
ここで述べる方法は、Windows95/98/NTに限定するが、全て、インターネット上からフリーでダウンロードできるソフトだけで作業が出来る。
リッチ及びアインシュタインのテンソルを展開方法の概念
作業フローの概念を下図に示す。
図 テンソルの展開方法・概念フロー
図で判るように、幾つかのプログラムを組みあわせて使用している。本当は、数式処理プログラムのMuPADだけで、テンソルの展開ができるのかも知れないが、今回は数式の簡略化機能しか使っていない。また、HTMLは本来、HTML3.0以降は、Mathタグが使用でき数式を織り込む事が可能な筈なのに、インターネットエクスプローラーもネットスケープもサポートをサボっている。仕方が無いので、TeXを用いて、PDFに変換している。
必要なプログラム・ファイルのダウンロードとセッティング
私の作ったプログラムのダウンロードとコンパイル
PreRuv0/1/2, PreR2, PreGuv2, PostRuvのソースコードを、下の行より、ダウンロードする。
GR.LZH (8,974bytes)
適当なディレクトリで展開した後、コンパイルする。
> lha x gr.lzh
Borland-C++やC++ Builderを使っている人は、MS-DOSプロンプトより、
> make -f makefile.bcc
とmakeする。また、GCC(Cygnus)を使っている人は、Cygnusプロンプトより、
$ make -f makefile.gcc
とmakeすること。(Cygnusは、Windows95/98/NT用のフリーのC/C++コンパイラである。)
Visual-C++や、その他のC/C++コンパイラでも、コンパイルは可能だと思う。が、makefileを用意していないので、コンパイラのマニュアルを参考にコンパイルに挑戦してもらいたい。
MuPAD light for Windowsのダウンロードとインストール
MuPAD light for Windowsは、個人で使う分には、無料で使用できるWindows95/98/NT用の数式処理プログラムである。このページからダウンロードできる。ダウンロードの時、後でキー番号を送ってくるので、自分のメールアドレスを正確に入れておくこと。
ダウンロードから、ほとんど即日、メールでキー番号を送ってくるので、それからインストールする。インストールはダウンロードしたファイルを実行するだけの簡単なもので、最初の実行時にキー番号を聞いてくるので、ここに入力する。
pdfTeXのダウンロードとインストール
pdfTeX for Win32は、文字通り、TeXソースファイルから、PDFを直接作るWindows95/98/NT用のフリーソフトである。残念ながら現状では日本語はサポートしていない。このページに詳細説明があるので、それを参考にインストールをしてもらいたい。
なお、Windows95/98で、pdfTeXのみを使いたい場合、最小限必要なファイルは、targzip.lzh, web2c-7.2-w32bin.tar.gz, web2c-7.2-w32lib.tar.gz, latex.tar.gz,
pdftex-w32.tar.gz, pdftex-lib.tar.gz, dlltex.tar.gz だけである。また、上記のページは、回線が細いようなので、ミラーである会津大学(ftp://ftp.u-aizu.ac.jp/pub/tex/ptex-win32/)からダウンロードする事をお勧めする。
pdfTeXのみのインストールは、ダウンロードした全てのファイルをc:\usr\localに入れた後、MS-DOSプロンプトから、以下の
> lha x targzip.lzh
> gzip -cd web2c-7.2-w32bin.tar.gz| tar xvf -
> gzip -cd web2c-7.2-w32lib.tar.gz| tar xvf -
> gzip -cd latex.tar.gz| tar xvf -
> gzip -cd pdftex-w32.tar.gz| tar xvf -
> gzip -cd pdftex-lib.tar.gz| tar xvf -
> gzip -cd dlltex.tar.gz| tar xvf -
コマンドを実行し、展開する。展開の後には、ダウンロードした圧縮ファイルは削除して良い。その後、C:\autoexec.batを編集し、
Pathにc:\usr\local\binを追加し、最後に
TEXMF=c:/usr/local/share/texmf
TEXMFCNF=.;c:/usr/local/share/texmf/web2c
の二行を追加する。再起動すれば、pdfTeXが使えるようになる。
リッチ・アインシュタインのテンソル展開の実行手順
PreRuv0/1/2.exe, PreR2.exe, PreGuv2.exeの実行
PreRuv0.exeはフルのリッチのテンソル、PreRuv1.exeは(9)式の下でのリッチのテンソル、PreRuv2.exeは(9)と(10)式の下でのリッチのテンソル、PreR2.exeは(9)と(10)式の下でのスカラー曲率、PreGuv2.exeは(9)と(10)式の下でのアインシュタインのテンソルを展開する。
生成される式は、簡略化していないが、MuPAD light for Windowsで入力できるようにしている。MuPAD light for Windowsで入力できる式は、英数字と+-*/()などの記号だけであるので、微分の記号やギリシャ文字などは使えない。そこで、各項を次のような変数で、表す事にする。
・・(11)
もちろん、(11)式中のギリシャ文字は、具体的な文字が入る。また、になるように変換を行っている。
また、MuPAD light for Windowsで処理しやすいように、MuPADの式簡略化コマンドである
simplify(式);
と言う形で出力するようになっている。
各プログラムのコマンドフォーマットは以下の通りである。
> PreRuv0μ ν (filename)
> PreRuv1μ ν (filename)
> PreRuv2μ ν (filename)
> PreR2 (filename)
> PreGuv2μ ν (filename)
もちろん、ギリシャ文字のところには、0から3までの具体的な数字が入る。また、filenameは、出力のファイル名だ。
コマンドの簡略化の為に、do1.batを用意している。MS-DOSプロンプトから実行するときは、
> do1
と入力するが、Cygnusのbash上から実行するときは
$ do1.bat
と入力しないと、ハングアップするので注意する事。
MuPAD light for Windowsで式を簡略化する。
MuPAD light for Windowsを起動し、赤い丸マークのプロンプトが出るのを待った後、メニューの「Session」「Pretty Print」を選んで、チェックを外す。
do1.batで、作られた???.txtをエディターなどで開いて、内容全てを選択・コピーし、クリップボードを経由して、MuPADにPasteする。その後、Enterキーを押すと、式の簡略化を始める。
式の簡略化が終わると、青い文字で何行にも渡って、結果が出力されるから、これをマウスで選択し、メニューの「Edit」「Copy」でクリップボードを経由して、適当なエディターにコピーする。元々のファイルが???.txtの場合、???r.txtとファイル名にrを付け加えた名前を付けてセーブする。
PostRuv.exeを実行し、LaTeXのソースを作る
PostRuvのコマンド・フォーマットは次の通りである。
> PostRuv filename.txt (filename.tex) (n)
filename.txtは入力のファイル名、filename.texは出力するファイル名、nは、一行当たりの項数であり、デフォルトは4である。
なお、コマンドの簡略化の為に、do2.batを用意しているが、Cygnusのbash上から実行するときは
$ do2.bat
と入力しないと、ハングアップするのは、do1.batと同じであり、注意する事。
出来たLaTeXのソースファイルは、必ず、で始まるから、エディター等で適当に編集する必要がある。
pdfTeX for Win32を実行し、PDFファイルを作る。
MS-DOSプロンプトから、
> pdflatex filename.tex
とコマンドするだけで、PDFファイル、filename.pdfが作成できる。
著作権・文書及びプログラム等の取り扱いについて
この文書及び図表、プログラムはフリーであるが、著作権まで放棄したわけではない。
この文書及び図表とPDFを無断で本・雑誌等の出版物に載せる事は禁じる。
論文等での引用・参照については、論文に準じた扱いとし、私のメールアドレスとURLを含めて出典元を明記する事。
プログラムについては、使用上の注意、転載等の制限に関しては、付属のドキュメントを参照して欲しいが、要は一切の修正の無い場合は、ネット上の転載に制限はない。また、修正のあった場合は、オリジナルの著作権表示とドキュメントを残したまま、何処を修正したかの表示をした上でのネット上の転載はかまわない。
これだけ、堂々と展開式やプログラムのソースまで、公開しているので、私よりも先に時間と空間のシミュレーション・プログラムを作っても、一向に構わない。が、もし、完成したら、是非、一報下さると有り難い。
本研究に対する御意見、御感想、御指摘等、ございましたら、メールで送っていただければ大歓迎です。
Copyright (C) 1998 野田篤司