Maximaは、数式処理を行うための強力なシステムであり、
GNU General Public License (GPL) の下で配布されている自由ソフトウェアです。その起源は、
マサチューセッツ工科大学 (MIT) のMACプロジェクトで開発された
Macsyma に遡ります。
歴史
Maximaの歴史は、DOE
Macsymaの1982年バージョンをGNU Common Lispに移植したことから始まりました。ビル・シェルターが1982年から
Macsymaの独自のバージョンを管理していましたが、1998年にGPL
ライセンスを適用することを条件に公開が許可され、Maximaとしてリリースされました。シェルターの死後も、開発者とユーザーコミュニティによって開発が継続されています。
実装
Maximaは、GNU Common Lispで動作するように開発されましたが、CLISPやCMU Common Lisp (CMUCL) でも動作するように改良されています。Maximaは、
ALGOLに類似した文法とLispに類似した意味を持つ独自のプログラミング言語を備えており、教育目的にも利用できます。
Maximaは、有理数、多倍長整数、多倍長浮動小数点数などの高度な記号処理機能をサポートしており、高精度な計算が可能です。また、浮動小数点数や配列の処理を効率化するために、FORTRANなどの言語で記述されたプログラムを生成することもできます。
Maximaの操作には、以下の様なフロントエンドが利用可能です。
GNU [[TeXmacs]]: TeXとEmacsのコンセプトを取り入れたインターフェース
wxMaxima: wxWidgetsに基づいた
クロスプラットフォームなGUI
imaxima: GNU Emacs用のパッケージ
他のシステムとの比較
積分計算の結果が超幾何関数になる場合など、MathematicaやMapleといった商用システムと比較して、実装上の限界が指摘されることもあります。しかし、Maximaは自由ソフトウェアであり、ユーザーによる改良が可能です。
使用法
Maximaは、コマンド処理とバッチ処理をサポートしています。
基本操作
コメント: `/
コメント行 /` (C言語と同様)
式の実行:
結果を表示: `式;`
結果を非表示: `式$`
代入:
変数への代入: `変数: 代入式;`
関数定義: `関数(変数) := 代入式;`
式の評価: `ev(式, 変数=数式);`
n次解の表示: `[解[1], 解[2], ...]` (リスト形式)
演算
加算: `+`
減算: `-`
乗算: ``
除算: `/`
べき乗: `*
` または `^`
括弧: `()` (優先順位の指定)
三角関数: `sin()`, `cos()`, `tan()` など
抽出
分数:
通分: `ratsimp(有理式);`
分子の抽出: `num(分子/分母);`
分母の抽出: `denom(分子/分母);`
右辺・左辺:
右辺の抽出: `rhs(左辺=右辺);`
左辺の抽出: `lhs(左辺=右辺);`
多項式
展開: `expand(多項式);`
因数分解: `factor(多項式);`
テーラー展開: `taylor(関数, 変数, 展開中心, 近似次数);`
解法
方程式を解く: `solve([方程式リスト], [変数リスト]);`
極限値を求める: `limit(関数, 変数, 近づける値);`
微分: `diff(関数, 変数, 階数);`
積分: `integrate(関数, 変数, 開始値, 終了値);`
総和: `sum(関数, 添え字変数, 初期値, 終値);`
総積: `product(関数, 添え字変数, 初期値, 終値);`
微分方程式
初期値の代入: `atvalue(関数, 独立変数=値, 関数値);`
微分方程式を解く: `desolve(微分方程式, 求める関数);`
グラフ表示
2次元グラフ: `plot2d([関数, ...], [変数, 始値, 終値]);`
3次元グラフ: `plot3d([関数, ...], [変数1, 始値1, 終値1], [変数2, 始値2, 終値2]);`
プログラミング
条件式:
等しい: `=`
等しくない: `#`
大小関係: `<`, `>`, `>=`, `<=`
論理演算: `and`, `or`
分岐: `if 条件式 then 真の場合の処理 else 偽の場合の処理;`
ループ:
`for カウンタ名:初期値 step 増分 thru 終了値 do (反復実行手続き);`
`for カウンタ名:初期値 step 増分 while 条件式 do (反復実行手続き);`
関数定義: `block([局所変数のリスト], 一連の手続き, return(計算結果));`
ファイル入出力
書き出し: `save("ファイル名", all);`
読み込み: `loadfile("ファイル名");`
実行結果表示: `playback(all);`
Maximaは、数式処理、数値計算、グラフ表示など、幅広い機能を提供します。自由ソフトウェアであるため、無償で利用でき、ユーザーのニーズに合わせてカスタマイズすることも可能です。