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)

また、EmacsLaTeX、Ghostscriptを構築している環境であれば、、本田康晃さんがメンテナンスされているimaximaを用い、美麗な出力結果をインタラクティブに得ることが出来ます。

Cocoa EmacsとteTeXで構成している私の環境でimaximaを動作させるにはimaximaをインストールする以外にmhというTeXのパッケージをインストールしなければなりませんでしたが、今回はMaximaのインストールについてのみ記載し、imaximaのインストールに関しては後日別のエントリで記載しようかと思っています。


さて、MaximaCommon Lisp処理系上で動作するシステムです。そのため、まずCommon Lisp処理系をインストールする必要があります。Maximaが対応しているCommon Lisp処理系として、カーネギーメロン大学が開発したCMUCLGNUが開発している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としてインストールされています。シェルスクリプトによる薄いラッパですので、興味のある人は中身を覗いてみてください。

まとめ

今回はMaximaを簡単に紹介し、Mac OS X 10.6にインストールする方法を記載しました。次回以降のエントリとして、Cocoa EmacsとteTeXで構成している私の環境にimaximaをインストールした手順について記載したいと思っています。