Installing Maxima on Snow Leopard
Mac OS X 10.6にMaximaをインストールしました。
Maximaは数式処理システムです。数値計算ではなく、数式のまま計算を行なう非常に強力なシステムです。例えば、2数の和の3乗を考えてみましょう。以下の等式の右辺は左辺の括弧を展開したものであり、また左辺は右辺を因数分解したものです。
Maximaでは、多項式の展開をexpand、因数分解をfactorで求めることが出来ます。
> maxima Maxima 5.20.1 http://maxima.sourceforge.net using Lisp CMU Common Lisp 20a (20A Unicode) Distributed under the GNU Public License. See the file COPYING. Dedicated to the memory of William Schelter. The function bug_report() provides bug reporting information. (%i1) expand((a + b) ** 3); (%o1) b + 3 a b + 3 a b + a (%i2) factor(b ** 3 + 3 * a * b ** 2 + 3 * a ** 2 * b + a ** 3); 3 (%o2) (b + a)
また、EmacsとLaTeX、Ghostscriptを構築している環境であれば、、本田康晃さんがメンテナンスされているimaximaを用い、美麗な出力結果をインタラクティブに得ることが出来ます。
Cocoa EmacsとteTeXで構成している私の環境でimaximaを動作させるにはimaximaをインストールする以外にmhというTeXのパッケージをインストールしなければなりませんでしたが、今回はMaximaのインストールについてのみ記載し、imaximaのインストールに関しては後日別のエントリで記載しようかと思っています。
さて、MaximaはCommon Lisp処理系上で動作するシステムです。そのため、まずCommon Lisp処理系をインストールする必要があります。Maximaが対応しているCommon Lisp処理系として、カーネギーメロン大学が開発したCMUCLやGNUが開発しているGCL等があります。初めにGCLのインストールを試みてみたのですがどうも上手く行かず、また、CMUCLをソースからビルドすることも出来なかったため、Intel Mac OS X用に用意されていたCMUCLのバイナリをインストールすることにしました。CMUCLからIntel Mac OS X用のcmucl-20a-x86-darwin.tar.bz2をダウンロードし、適当なディレクトリに展開してからコピーします。私の環境には/usr/local/docがなかったため、docディレクトリごとコピーしました。
> mkdir cmucl > tar jxvf cmucl-20a-x86-darwin.tar.bz2 -C cmucl > cd cmucl > sudo cp -pR bin/lisp /usr/local/bin/ > sudo cp -pR doc /usr/local/ > sudo cp -pR lib/cmucl /usr/local/lib/ > sudo cp -p man/man1/* /usr/local/man/man1/
次にMaximaをインストールします。このエントリを記載している時点での最新のソースパッケージは、maxima-5.20.1.tar.gzでした。configureにCMUCLを使用することを明記しつつ、インストールします。
> tar zxvf maxima-5.20.1.tar.gz > cd maxima-5.20.1 > ./configure --enable-cmucl && make > sudo make install
以上でインストールは終了です。
MaximaではReadline Libraryを直接サポートしていないらしく補完等を行なうことは出来ませんが、Hans Lubさんが作成したrlwrapを用い、間接的にGNU Readline Libraryを用いることが出来ます(Mac OS X 10.6にGNU Readline Libraryをインストールするには以前のエントリを参照してください)。GNU Readline Libraryを検索させるため、rlwrapのconfigure時に環境変数を用いてサーチパスを指定します。
> tar zxvf rlwrap-0.36.tar.gz > cd rlwrap-0.36 > CFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib ./configure && make > sudo make install
Maximaを起動するにはmaximaを用いますが、rlwrapを併用したMaximaを起動するにはrmaximaを用います。rmaximaは/usr/local/bin/rmaximaとしてインストールされています。シェルスクリプトによる薄いラッパですので、興味のある人は中身を覗いてみてください。