2011/07/18

数式処理ソフト Maxima

数式処理ソフト? 簡単に言ってしまえばプログラム・グラフ関数電卓のようなもの。単なる数値計算だけでなく、文字式も扱えて、式の変形、展開など、手で行うような計算が出来てしまう。またグラフ出力、統計処理も可能なので守備範囲はすごく広い。この手のソフトで有名なのはMathematica。でも有料かつ高価。それに対してMaximaは無料で利用できる。最近のバージョンから日本語表示もできるようになって使いやすくなった。

120828
最新バージョン:  maxima-5.28.0-2.exe

http://maxima.sourceforge.net/
リリース: 2012-08-28
ダウンロードサイズ:  31.6 MB

110718

何に使うのか?

数式を扱うシーンなら、どこでも使えるが、個人的にはグラフで確認したいとき、複雑な展開をするとき、きれいな数式を画像として欲しいときに使っている。簡単な数値計算はハードの関数電卓を使った方が早い。

簡単な入力例

まず四則演算の例。1+2と直接文字を打って、shift + Enterすることで計算結果が表示される。同じ要領で簡単な演算ならできる。割り算に関しては普通に打つと分数になってしまうので、小数で表示させたいときはfloatをつける必要がある。
基本的な使い方はWikibooksあたりを参考にするといいかも。
http://ja.wikibooks.org/wiki/Maxima

LISP言語

中身は古いプログラム言語のひとつLISPで作られている。LISPは数値計算と相性がよいようだ。AudacityのNyqusitでLISPを少しやったことがあるが、どうも馴染めない・・・ちょっとMaximaでもやってみたが、あれれ、コメントアウトは;ではなく、/*・・・ */を使うのか。LISPぽくないなぁ。こういう部分はCライクな感じ。

グラフのグリッド

標準の状態でプロットするとグリッド等が10進単位になってしまって、sin,cos波形では見にくくて使えない。
plot2d([cos(x), sin(x), tan(x), cot(x)], 
 [x, -2*%pi, 2.1*%pi], [y, -2, 2])$

そこでパイを単位とするようなグリッドを自分で設定している。こんな感じ。
pi_grid: "set grid; set xtics ('-2pi' -6.283, \
'-3pi/2' -4.712, '-pi' -3.1415, '-pi/2' -1.5708, '0' 0, \
'pi/2' 1.5708, 'pi' 3.1415,'3pi/2' 4.712, '2pi' 6.283)"$

plot2d([cos(x), sin(x), sin(x)+cos(x)], 
 [x, -2*%pi, 2.1*%pi], [y, -2, 2],
 [plot_format, gnuplot],
 [gnuplot_preamble, pi_grid] );

近似値で適当に設定しているけど、まぁ問題はないです。上のグラフのようにx軸はパイのところにグリッドがあるのが確認できると思う。

関数電卓ではうまく行かない計算

そもそもそんな計算は個人的にはあまり関係ない世界なのだが、複素数関係では、たまにその手の計算が出てしまったりする。
たとえば有名なオイラーの公式関係とか。

というやつ。HP35sだと-1,i-2.0676E-13とか出て、そこそこよいのだが、他の関数電卓ではお手上げだ。Maximaでは、こんな感じで入力すると数値計算してくれる。
float(%e^(%i*%pi));
-1.0 と歯切れよく出てくれる。でも、もっと意地悪な計算をさせていくと、結果を歯切れよく出すのはGoogle電卓のみだったりするけど。