木曜日, 1月 31, 2008



マセマティカのバージョンの違いによる演算の表現の差が少し気になり、例によって、梶原教授の解説に範をとって、入試問題の数式処理を試行してみた。

先生の使用したVersionは2.03で、インストール方法を含め、懇切丁寧に解説されている。もちろん、Mac用で、先生が大蔵大臣に御相談申し上げて購入された当時は、マセマティカは、まだMac用しかなかった。

院入試問題や、上級公務員試験などへの解説が刊行された1994年(Windows95も出ていない!)には、ようやくNECのPCなどでも何とか走る版が出てきたが、知名度が低く、別人の梶原教授は、私のNECでは、問題なくマセマティカが動いている、と雑誌などで誇らしげに書いておられた。NECのシェアは1993年に52.8%、二位のMacが13.9%、三位が富士通の6.8%だった、という。



数学を通じてのMacintosh活用入門も兼ねているが、Mac意外のほとんどすべてのパソコンやワークステイションの愛用者にも活用いただけるものである、と書かれており、ワークステションでの速度比較や、NECのBasicでの別解なども掲載されたり、もある。

『連立微分方程式を解かせるコマンドは、DSolve[  〕の中にまず、幾つかの式をタイプ、その中には、初期条件が含まれていてもよいが、式を二つの==で顕わして{ }で囲み、次にコンマを打ち、その次に{ }の中に従属変数をいれ、また、コンマを打ち、最後に独立変数をタイプすればよい、』などと懇切丁寧な解説がなされている。・・・以上数行をタイプし、enterキーを押せば(enterキーがない場合はshift+return)大学院入試問題の解答は終わりであるが、あまりにも風情がなく、あまりにも非教育的であるので、一般の正方行列の上右三角行列化のvariationとして本問を解説、あわせてパソコンMacおよび数式処理ソフトMathematicaの解説を行う、などとの但し書きも。



まず、マセマティカの2.2をインテルMac上で走らせた場合を示す。ちょっと見には出力が2.03での実行例の場合と違うように見えるが、出力を吟味すれば、同一の結果になることが分かり、なぜかホッとした。ここまでなら見開き2ページで十分足りてしまうが、マセマティカの機能の解説部分が、ワークステイションの事例も含めて、なかば別解風にさらに約5ページもあり、買った当時は、最後まで試していなかった。今回、BasilskIIというエミュレーター上での動作であるため、忠実に追試してみたが、ほぼ満足のいく結果だと思った。ほぼ、というのはバージョンの違いから来るものらしく、教授の使用された2.03と同じ操作をすると、いろいろの警告が連発して出てくるが、結果は、冗長であるものの、同一の答えを出してくる。



しかし、あるところまで来ると、根本的に違った結果が返されて、???と思った。ウィンドウズ版、パワーPC版、インテル版ともに同じである。BasiliskII上では、DSolve[y3’[x]== -2 y3[x],x]]の結果が単なるSolve[・・・]と同じ結果になってしまって微分を実行していないではないか!?。

それで試しに、パワーPC上でクラシック環境を起動し(MacOS 9.2.2)、マセマティカの3.0.1.1xで実行するとちゃんと教授の実行例と同じ結果を返す、ことがわかった。BasiliskII上での2.2のノートブックでは、単なるSolveの結果、そのコマンドをコピーして、3.0のクラシック環境でペーストして実行するとちゃんとDSolveの結果を返す。

私は、ヒヤリ、ドキリとした。所詮、エミュレータはあくまでも実機ではないので、これはエミュレータの構造上の問題だと最初は感じた。しかし、時間がたつと、インテルMac上では、ちゃんととDSolveを実行し、表現が少しちがうだけで、数学上は同一の結果を出しているではないか。



さらに、不思議なことには、次にもう一度、クラシック環境上で3.0を立ち上げて、2.2で実行したノートブック(マセマティカの実行ファイル)を開いて、問題のDSolve文のところを、そこだけ実行させると、BasiliskII上と同じ結果しか出なくなる。単なるSolve文実行と同じになってしまう。

それで、初めて厚さ7センチ近いマセマティカ3.0の基本解説書を、買ってから多分初めて本気で、DSolveの項を開いてみたが、例文には教授が2.03で実行されたようなDSolve[y3’[x]== -2 y3[x],x]]というような表現はされていなく、皆DSolve[ D[y3[x],x]== -2 y3[x],x]]と同じ表現が用いられている。試した限りでは、基本的に2.2と3.0は同じ構造らしく、2.03と同じことをすると、警告メッセージは同一である。3.0は、積分記号のインテグラルなどを表示したまま演算実行が出来るぐらいの差しかないようである。

y3’[x]とD[y3[x],x]は同じことなのであるが、Dsolveでは、2.2以上では対応しないようだが、クラシック環境では対応するとは、その辺が、BasiliskIIとの違いかとも思った。何しろ、キーボードが基本的に
実機とは違い、クーリエフォントでBasiliskII上でy3’と入力するのは至難のワザなのである。ウィンドウズ上ではさらにまたキーボードがちがう。パワーPCのデスクトップ機では、’はテンキーでない7のキーをシフトキーを押せば難なく入力でき、昔の実機と同一である。

一方、BasiliskII上では、option+eを押して簡易微分記号を入力せねばならない。optionキーにはMacでもちいさくaltと印字されているので、たぶんウィンドウズ上ではAlt+eで入力するのだろう。(ウィンドウズのDELL機では、ウィンドウズマークキー+eでした。)



しかも、困ったことにクラシック環境でも、出力が安定しないことである。試しに、再起動して1+1を実行後にDSolveの例題を試すと、y’なら実行するが、y3’となると実行していない。最初の方で上げた、BasiliskIIで作ったファイルからコピーしてもy3’のほうは正しく実行したのにである。まあ、9.2.2
環境などというのは、3.0発売時はなかったことだし、ましてやクラシック環境というのもなかった。すべての8.x環境のソフトがちゃんと動くとはアップルも保証していない。いままで、まず大丈夫と思っていたが、
それなりに不安定なのかもしれない。

Mapleでも、dsolveというコマンドで実行されるようだ。
http://www.cybernet.co.jp/maple/interview/002.shtml
には、大阪大学でも昨年までマセマティカを使っていたが、今年からMapleに重点を移す予定の研究室もあるような話題が出ていた。先生も、まだMapleには十分に慣れておられない御様子。



マセマティカ3.0は、入出力番号が、ブルーで表示される。これは、インテルMac上のBasiliskIIでも同様。しかし、クラシック環境は、以前述べたように1+1を事前に実行しないと(他の選択肢を排除するものではないが)、適当な結果が出たりすることが今回改めて分かった。しかし、今のところ、梶原教授の2.03での実行例と同じ結果を出力したのは一回きりで、特に添字付き変数に’を付けたものはまず実行しない(スクリーンショットの2番目の図での実行例)。すると、BasiliskIIと基本的に同じことになる。まだ、単独のMacOS9.x環境では試していないが。・・・・



なかのひと

0 件のコメント: