マセマティカ氏の悪癖  

 インターネット経由のK君との共同研究は、早くも佳境に入ってきた。期待以上に面白い結果が出るかもしれない。想定外の計算結果が出てきたので、その物理的説明を考えている。こういうところは理論も実験とあまりかわらない。

 しかし、同時に困った問題も見えてきた。

 課題は、ある種の輸送問題を解くことである。原子がずらりと並んだ1次元鎖上の問題なので、何とでもなるだろうと見当をつけて始めた。グリーン関数と呼ばれる関数が計算できればよい。これは漸化式によって数値的に計算できる。行列の漸化式ではあるけれど、1ステップごとに順繰りに計算していけばよいので、原子の数(=鎖の長さ)も100個や200個程度は軽くやれそうだ。1000個でもやれるかも知れない。オレってなんて頭がいいんだろう。

 チェックのためにK君と並行して私も計算することにした。計算のソフトは二人ともマセマティカである。ところが原子の数を10個ぐらいにするとMathematica shut downというメッセージが出て計算機が勝手に止まってしまうのである。メモリーが足りないと言っている。たった10個で!

 途中経過を書きださせてみたら、とてつもない長い数式がずらずらと出てきた。どうやら数値的に計算するのでなしに、数式処理で厳密解を求めているらしい。だから漸化式の過去の履歴を全部引きずった式が出てくる。それを処理し続けるからすぐにメモリーが溢れてしまうのだ。

 マセマティカは数式処理(数式のまま変形して答えを式で出すこと)に強いということは聞いていたが、私の知りたいのは数値であって式ではない。だからー、過去のことはキッパリ忘れて、現在の数値だけで計算をしてくれよと、ありとあらゆる工夫をしたが、ガンとして式の記憶を忘れないのだ。

 

 これをK君にメールで伝えるとマセマティカはそういうものだ、と返事がきた。私はMr. Mathematicaをののしるメールを書いた。名前の語感としては、男ではなくロシアかどこかの女性のようだが・・・。

 Mr. Mathematicaは頭がよい。頭が良すぎて必要もないのに厳密な理論にこだわる。これでは数値計算に使えない。

 K君は、さすがに慣れていて原子の数で25個くらいならば1時間で計算できるプログラムを工夫して作ってくれた。それを使ったら私の安物のラップトップ(Dell社製)では5時間かかったが、とにかく計算はできる。

 知りたいことは原子の並びが無限に連なった極限の様子だ。無限大と10とでは開きが大きすぎるが、25ならかなり無限大に近づく。(物理屋はこういう凄い考え方をするのです。)

 

 私は昔から数値計算ではフォートラン一辺倒だった。研究室を持つようになって、自分で数値計算することはやめた。複数の学生やスタッフに対応しなければならないので、自分の問題に没頭しているわけにはいかないからだ。

 定年退職して数年後、いよいよ何でも自分でやらなければいけなくなってから数値計算に何を使おうかと考えた。マセマティカが簡単に手に入る環境なので深く考えもせずにそれにした。違和感を覚えながらも、ようやくマセマティカに慣れてきたのだが今回、ついに破綻してしまった。

 Mr. FortranはMr. Mathematicaとは違って頭が悪い。やるべき仕事をすべてこちらが指定してやらないといけない。そうすれば馬力はあるから、愚直に順繰りに計算してくれる。実は多くの物理計算で必要なものはそれである。私はMr. MathematicaにMr. Fortranのように働いて欲しいのだ。どなたかその方法をご存じないだろうか。

 

 K君はわれわれの目的にはPythonがよいと言ってきた。実際、すぐにPythonで計算をやり直し、そのプログラムファイルもつけて結果を送ってくれた。おそろしく仕事がはやい。大学の書籍部を覗くと、Pythonの手引書ばかりが並んでいる。どうやら、いま流行のようだ。私はMr. Pythonに乗りかえて、また一からやり直さなければならないのだろうか。

                                        (Jan. 2018)

目次に戻る