Maxima

Maxima: 高機能な数式処理システム



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]]: TeXEmacsのコンセプトを取り入れたインターフェース
wxMaxima: wxWidgetsに基づいたクロスプラットフォームなGUI
imaxima: GNU Emacs用のパッケージ

他のシステムとの比較



積分計算の結果が超幾何関数になる場合など、MathematicaMapleといった商用システムと比較して、実装上の限界が指摘されることもあります。しかし、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は、数式処理、数値計算、グラフ表示など、幅広い機能を提供します。自由ソフトウェアであるため、無償で利用でき、ユーザーのニーズに合わせてカスタマイズすることも可能です。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。