Maxima

前からちょっと気になっていた Maxima をインストールしてみた。Windows のインストーラがあったので簡単にインストールして使えた。wxMaxima が出来がいい?というコメントをどこかで見たのだけど、全然使い方がわからない。今一度チャレンジしたら、ctrl-enter で評価してくれた。enter じゃ評価しないのか、、、
wxMaxima のどこがいいのかわからないので(ctrl-enter であること自体が手間)command line Maxima を使うことにする。
lisp 環境にすることが出来るのが面白い。lisp 環境で $ で始まる関数 defun すると、そのまま Maxima の関数として使える。to_lisp(); で lisp 環境に移り

(defun $myfunc (x) (+ x 123))

と定義して、(to-maxima) で maxima の環境に戻ると、

v:myfunc(5);

なんてことができる。ちょっと戸惑ったのが、lisp 風の関数名で良く使われる - の扱い。最初、 $my-func で defun したら、defun はできるものの Maxima からはその関数がうまく使えない。 - マークがマイナスマークとして評価されてしまった。つまり、関数名に - でつなぐ関数を使うことが出来ない(出来るかもしれないが知らない)。

v:my-func(5);

は my - func(5) なので v はその数式そのものとなる。その代わり、my に値を入れて func を定義して、ev(v); とするとその結果がでる。さすが数式処理システム。