基礎科学科 学籍番号10303 中田 庸一
今回やったこと: フリーの数値計算、数式処理ツールについて(主にMaxima)
数値計算…基本的に全てのデータは数値である。全ての処理はこれらの四則演算によって行われる。
(例えば関数を扱う場合、関数そのものを扱うのではなく標本点の列として扱うことになる)
数式処理…データは基本的にそのままで扱うことになる。処理方法はデータの種類によってその都度変わる。
(例えば多項式なら多項式のままで足したりかけたり出来る)
しかし両者の垣根は必ずしもはっきりしたものではない(どんどん曖昧になっているそうだ)。数式処理ツールでも数値計算のパッケージは入っているものもある。(逆は当たり前?)
数値計算 : Matlab
数式処理 : Mathematica,Maple,Reduce
しかし、これらのツールはとんでもなく高い(最も安いのでも10万円はする)。少なくとも学生がおいそれと手を出せる代物ではない(そのために学生用ライセンスを用意しているものもある)。
一方でオープンソースのツールというのもある。それが今回、紹介するOctaveやMaximaである。
OctaveはMatlab互換を謳ったフリーの数値計算ツールである。
MaximaはMathematica,Mapleとは互換ではないがLISPで書かれたフリーの数式処理ツールである。
| 商用 | フリー | |
| 数値計算 | Matlab | Octave |
| 数式処理 | Mathematica,Maple,Reduce | Maxima |
今回は特にMAXIMAについていろいろ試してその性能やMathematicaの違いを調べてみよう。
MaximaはLISPと言う言語で書かれている。
よく分からないが、微分とかそういうのを扱うのにLISPは向いているらしい(後述のリンク参照)
MaximaはどのLISP上で動くかによって、CLISP版とGCL版がある。
現在の最新版は5.9.0RC3、安定版は5.6である。
(CVSから落としたものを見ると5.9.0RC4と書いてあるので5.9.0RC4公開近い?)
今は5.9.0がリリースされています。
RPMはMomonga Linuxで5.9.0RC3(CLISP版)が、
現在はMomongaとVine(VinePlus)に5.9.0のRPM版がある(他は未確認)
Debianだと5.6(GCL版)が公開されている(追記:これはstableについて。unstableは5.9.0)。
(FreeBSDのportsには無いみたい) あります
微積分
方程式を解かせてみる

長いので一部しか載せられない…。
MathematicaにはGUIがある(むしろCUIのほうがおまけ的色彩が強いが)
MaximaにもGUI「的」なものがあるにはある。
Maximaに標準でついているGUIもどき。Mathematicaを強く意識しているが、基本的にはMaximaと全く同じ。強いて違いを挙げれば、グラフを書くとCUIだと別ウィンドウに結果が出力されるのだが、XMaximaだとMathematicaみたいに同じウィンドウの入力式の直後に出力されることになる。
TeXmacs自体はTeX文章をWYSIWYG感覚で編集できるようなソフト。Maximaのフロントエンドをこれにすることで、数式の表示処理をしてくれるので数式の見た目はぐっと良くなる(見た目Mathematica以上)。ただし、XMaximaのようにグラフを同じウィンドウで表示してくれるような事はしない。また、Maxima5.9はTeXmacs側から正しく認識されないため利用できない。
Mathematicaにあって、Maximaに無いもの
逆にMaximaにはあるが、Mathematicaにはないもの
注:とりあえず目に付くところだけさっとピックアップしたものです。実際はもっと沢山あります。
やはり直感的なインタフェースに弱いことが大きい。
(GUI関係もそうだが、素人が適当にいじって割と上手く行くようにはなっていない。)
あとは少し無理をさせると簡単に落ちて再起動せざるを得ないところ。
(この辺りはやはり商品としてのMathematicaの強みが大きい)
Mathematicaはヘルプにあるマニュアルを見れば日本語で大抵の情報が載っている。
Maximaには付属のman(当然英語)しか付いてこないが、インターネット上にさまざまなマニュアルや、入門書(?)があるので決して敷居が高い訳ではない。
しかしソースが公開されているので、もしバグなどを発見したときに自分でそのバグを修正することが出来る。
Maxima公式サイト (英語)
以下はMaximaの紹介サイト。はっきり言ってここより数倍きちんとしてます
Maximaとは直接関係ないけど、数式処理をLISPで実装する方法について書いてあるサイト
計算数学IIレポートと書いてありますが実際これを発表したわけではないので、「この程度やればよい」という目安にはならないと思います。むしろ、こんな程度の物を書かないように精一杯やってください>計算数学II受講(志望)者各位