Maximaとはオープンソースの数式処理システムです。製品で有名なのはMathematicaなどがあるのですが。
ちょっと計算の確認をしたり、やってみたいけど面倒な数式処理。あるいはグラフの描画など、本格的な利用でなくても大変便利なシステムです。(くわしいことは割愛。というより、本当に使える人に申し訳ない…。大学に入ったら使うようになりたいなと…)
こんなグラフも簡単に描けます。
で、その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です。
カスタマイズなどはまた後日…
MaximaをWebで使えないかとGooglってたら、こちらを見つけました。
MaximaPHPっておもしろそうですね。
早速、上記のウェブサイトに入れて、MimeTeXと連携させてみようと思います。
php は、だいたいわかりますので、、、
何をしたいかと言うと、
∫x^2 dx と入れてボタンを押せば、1/3 x^3 と出したいのです。