Maximaとはオープンソースの数式処理システムです。製品で有名なのはMathematicaなどがあるのですが。
ちょっと計算の確認をしたり、やってみたいけど面倒な数式処理。あるいはグラフの描画など、本格的な利用でなくても大変便利なシステムです。(くわしいことは割愛。というより、本当に使える人に申し訳ない…。大学に入ったら使うようになりたいなと…)
こんなグラフも簡単に描けます。
で、そのMaximaをブラウザ経由(PHP)で外部から使えるようにするのがMaximaPHPです。
今回はその導入手順のメモです。
Maximaのインストール
これはAPTITUDEで簡単にインストールできますが、目当てのバージョンは5.11.0なのでソースからコンパイルします。
ここを参考に「cmucl + Maxima」でインストールします。
1234567891011121314151617181920212223242526272829303132333435 $ 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
省略
ここで動作確認をします。
12 $ 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」が無いと言われたのでインストールします。
12345678910111213141516171819202122 $ 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) を設定しています ...
もう一度起動してみます。起動できたらなにか計算をやってみましょう。
1 $ maxima
こんな風に正しく動作すればOKです。
1234567891011121314 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で利用されるのでインストールします。
公式サイトはこちら。
1234567891011 $ 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公開ディレクトリに移動しておきます。(勝手にそうさされないよう認証のあるディレクトリを推奨します)
12 $ 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スクリプトを移動させ実行許可を与えます。
123 $ sudo mv ./scripts/* /bin/
$ sudo chmod 755 /bin/_maxima_with_timeout_.pl
$ sudo chmod 755 /bin/_ttm_with_timeout_.pl
そして「INSTALL」の説明にしたがって「mpxhtml.php」を編集します。(後日詳しく追記する予定)
画像作成用のディレクトリも作成しておきます。
1234 $ mkdir ./temp
$ mkdir ./png
$ chmod -R 777 ./temp
$ chmod -R 777 ./png
そしてrewriteするためにデフォルトの「.htaccess」を持ってきます。
12 $ 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 と出したいのです。