MaximaのインストールとMaximaPHPの導入

Maximaとはオープンソースの数式処理システムです。製品で有名なのはMathematicaなどがあるのですが。
ちょっと計算の確認をしたり、やってみたいけど面倒な数式処理。あるいはグラフの描画など、本格的な利用でなくても大変便利なシステムです。(くわしいことは割愛。というより、本当に使える人に申し訳ない…。大学に入ったら使うようになりたいなと…)

こんなグラフも簡単に描けます。
2cos3t_2sin5t.png
plot3d_cosx3ycosx-2_sinx3ycosx-2ysinx-2_x-pipiy-11grid5015.png
で、そのMaximaをブラウザ経由(PHP)で外部から使えるようにするのがMaximaPHPです。
今回はその導入手順のメモです。

Maximaのインストール
これはAPTITUDEで簡単にインストールできますが、目当てのバージョンは5.11.0なのでソースからコンパイルします。
ここを参考に「cmucl + Maxima」でインストールします。

$ cd /tmp/
$ sudo apt-get install rlwrap
$ wget ftp://anonymous@ftp.gnu.org:21/pub/gnu/readline/readline-5.2.tar.gz
省略

$ tar zxvf ./readline-5.2.tar.gz
省略

$ cd readline-5.2/
$ ./configure
省略

$ make
省略

$ sudo make install
省略

$ cd ../
$ wget http://jaist.dl.sourceforge.net/sourceforge/maxima/maxima-5.11.0.tar.gz
省略
23:54:23 (8.39 MB/s) - `maxima-5.11.0.tar.gz' を保存しました [13924132/13924132]

$ tar zxvf ./maxima-5.11.0.tar.gz
省略

$ cd maxima-5.11.0/
$ ./configure
省略

$ make
省略

$ sudo make install
省略


ここで動作確認をします。

$ maxima
/usr/lib/maxima/5.10.0/binary-gcl/maxima: error while loading shared libraries: libgmp.so.3: cannot open shared object file: No such file or directory


ところが、当方の環境では「libgmp」が無いと言われたのでインストールします。

$ apt-get install libgmp-ocaml
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
以下の特別パッケージがインストールされます:
  libgmp3c2
以下のパッケージが新たにインストールされます:
  libgmp-ocaml libgmp3c2
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 15 個。
451kB のアーカイブを取得する必要があります。
展開後に追加で 786kB のディスク容量が消費されます。
続行しますか [Y/n]?
取得:1 http://ftp.jp.debian.org etch/main libgmp3c2 2:4.2.1+dfsg-4 [430kB]
取得:2 http://ftp.jp.debian.org etch/main libgmp-ocaml 20021123-11 [21.3kB]
451kB を 0s で取得しました (1167kB/s)
未選択パッケージ libgmp3c2 を選択しています。
(データベースを読み込んでいます ... 現在 124543 個のファイルとディレクトリがインストールされています。)
(.../libgmp3c2_2%3a4.2.1+dfsg-4_i386.deb から) libgmp3c2 を展開しています...
未選択パッケージ libgmp-ocaml を選択しています。
(.../libgmp-ocaml_20021123-11_i386.deb から) libgmp-ocaml を展開しています...
libgmp3c2 (4.2.1+dfsg-4) を設定しています ...

libgmp-ocaml (20021123-11) を設定しています ...

もう一度起動してみます。起動できたらなにか計算をやってみましょう。

$ maxima

こんな風に正しく動作すればOKです。

Maxima 5.11.0 http://maxima.sourceforge.net
Using Lisp CMU Common Lisp CVS 19d 19d-release (19D)
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
This is a development version of Maxima. The function bug_report()
provides bug reporting information.
(%i1) f(x):=3*x^2+5;
					  2
(%o1) 			       f(x) := 3 x  + 5
(%i2) f(1);
(%o2) 				       8
(%i3) f(0);
(%o3) 				       5
(%i4)

TeX to MathML translator(TtM)のインストール
TtMとは名前の通りTeXをMathMLに変換してくれるライブラリです。
MaximaPHPで利用されるのでインストールします。
公式サイトはこちら

$ cd /tmp/
$ wget http://hutchinson.belmont.ma.us/tth/mml/ttmL.tar.gz
$ tar zxvf ttmL.tar.gz
$ cd ./ttmL
$ ./ttminstall
Making directory /root/bin
 I've added /root/bin to your PATH, but that needs to be made permanent.
 Edit your shell resources file, typically .bash_profile.
 The directory /root/bin is where the TtM programs are kept.
 Copying ttm, ps2gif, and latex2gif to /root/bin.
 You don't seem to have KDE installed.

MaximaPHPのインストール
これは公式サイト(http://maximaphp.sourceforge.net/)からダウンロードしてきます。
あらかじめWeb公開ディレクトリに移動しておきます。(勝手にそうさされないよう認証のあるディレクトリを推奨します)

$ wget http://jaist.dl.sourceforge.net/sourceforge/maximaphp/maximaphp-0.1.3-alpha.tar.gz
$ tar zxvf ./maximaphp-0.1.3-alpha.tar.gz


次に「INSTALL」の説明にしたがってParlスクリプトを移動させ実行許可を与えます。

$ sudo mv ./scripts/* /bin/
$ sudo chmod 755 /bin/_maxima_with_timeout_.pl
$ sudo chmod 755 /bin/_ttm_with_timeout_.pl

そして「INSTALL」の説明にしたがって「mpxhtml.php」を編集します。(後日詳しく追記する予定)

画像作成用のディレクトリも作成しておきます。

$ mkdir ./temp
$ mkdir ./png
$ chmod -R 777 ./temp
$ chmod -R 777 ./png

そしてrewriteするためにデフォルトの「.htaccess」を持ってきます。

$ cp ./rewriteurl/htaccess-yes ./.htaccess
$ cp ./rewriteurl/mprewriteurl-yes.php ./mprewriteurl.php 

MaximaPHPの動作確認
今回は「http://chibiegg.net/maxima/」に導入したとします。
http://chibiegg.net/maxima/に接続したページで、「Example」ボタンを押すと計算結果が表示されればOKです。
maximaphp-example1.jpg

ちなみにこのようにプロットが表示できれば画像もOKです。
maximaphp-example2.jpg

カスタマイズなどはまた後日…

One Comment

  1. kafuka より:

    MaximaをWebで使えないかとGooglってたら、こちらを見つけました。
    MaximaPHPっておもしろそうですね。
    早速、上記のウェブサイトに入れて、MimeTeXと連携させてみようと思います。
    php は、だいたいわかりますので、、、

    何をしたいかと言うと、
    ∫x^2 dx と入れてボタンを押せば、1/3 x^3  と出したいのです。

コメントを残す

メールアドレスが公開されることはありません。

question razz sad evil exclaim smile redface biggrin surprised eek confused cool lol mad twisted rolleyes wink idea arrow neutral cry mrgreen

*