MathLibre では多くの数学用のソフトウェアが利用できるが、 ここではかなり汎用性の高い Maxima を扱う。 Mathematica というソフトウェアを聞いたことがある人も多いと思うが、 Mathematica は高価であり、利用できる場所が限られる。 Maxima とは、大雑把に言えば無料で利用できる Mathematica のようなものである。 Maxima は多くの OS に対応しており MS Windows などにもインストールして無料で利用できる。 ユーザー数も多く、インターネット上にも多くの解説が見つけられるだろう。
実習では2回に渡って Maxima を扱う。 今回は基本的な操作を扱い、次回は簡単なプログラムを書くことを学ぶ。
MathLibre では 3 種類の異なるインターフェイスをもつ maxima が利用できる。 ターミナルから実行する「maxima」, GUI をもつ「xmaxima」、「wxMaxima」である。 「xmaxima」と「wxMaxima」はメニューの「math」にある。 (「Maxima Algebra System」となっているのが「xmaxima」である。) 「maxima」はターミナルに「maxima」と入力して起動できる。 インターフェイスが違うだけでできることは同じと思ってよいので、 触ってみて使いやすく感じるものを使えばよいであろう。
演習 : maxima, xmaxima, wxMaxima をそれぞれ起動、終了してみなさい。
起動すると
(%i1)のように表示される。これが入力待ちの状態である。 簡単な例を計算してみよう。
コマンドの最後は ; (セミコロン) で区切る。 入力 (%i1) に対する出力が (%o1) となる。 2つめの計算で多項式の計算をさせようとしたが展開してくれなかったので、次に (%o2) を展開させている。 このようにある計算の出力を別の計算に用いることもできる。 (%i1) は関数 f(x) の不定積分であるが、f(x) が与えられていないので、そのままを出力する。 (wxMaxima で試してみると・・・。) 最後の quit() は maxima を終了させる。
wxMaxima を利用するときはちょっと異なることがあるので注意が必要である。 (%i1) のような表示はなく「-->」と表示される。 ここには勝手なコメントなどを書き込むことが出来る。 wxMaxima へのコマンドを入力する際には「shift+リターン」とする。 すると「-->」が (%i1) などと変わり、他の maxima と同じようになる。 wxMaxima では、計算済みのコマンドでも、それを修正して再計算できる。 (xmaxima でも似たようなことができるが、やや動きが違う。 maxima では上矢印を押すことで、前の入力が表示されるので、それを修正して計算することができる。)
どの maxima でも、現在の状況を保存し、あとでそれを再開することができる。 マニュアルなどを参照して欲しい。 これは独自の関数などを多く定義している場合などに役に立つ。 関数の定義などのより高度な利用法については次回学ぶ。
起動や終了などの基本的なことが分かったら、実際に maxima を使って計算をしてみよう。 今回の MathLibre のホームページにあるマニュアルを利用する。 maxima のマニュアルはいくつもあるが、ここでは Maxima 入門ノートを見てみよう。
演習 : Maxima 入門ノートの4章までを、ざっとでよいので目を通して試してみなさい。 特に微分、偏微分、不定積分、定積分、数列や関数の極限、などの計算の仕方を確認しなさい。 (学部 1 年の微積、線形代数でやるような計算はほぼ全てできる。)
演習 : maxima に何かグラフを描画させ、それを LaTeX で表示させなさい。
Maxima 入門ノートの5,6章を行う。 5章ではリスト、ベクトル、行列の扱いについて学ぶ。 6章では簡単なプログラミングを行う。
演習 : Maxima 入門ノートの5章をざっと読み、リストの扱い、ベクトル、行列などの計算の仕方を確認しなさい。
演習 : Maxima 入門ノートの6章をざっと読み、条件分岐、反復命令について確認しなさい。 またデータファイルの扱いなどを学びなさい。 (csv ファイルを扱うためには numericalio.lisp というファイルを読み込む必要がある。 しかし説明にある場所を指定してもそこにはないであろう。 ターミナルから「locate numericalio.lisp」とすることで、このファイルの絶対パスを調べることができる。)
演習 : 与えられた実数が正なら 1、負なら -1、0 なら 0 を返す関数を定義しなさい。
演習 : 与えられた自然数 n に対して、 1 から n までの和を求める関数を反復命令によって定義しなさい。
maxima で複雑なことを行うようになると、端末にコマンドを間違えずに入力することが大変になってくる。 誤って入力しても簡単に修正できるエディタなどでコマンドが記述できると楽である。 これを最も簡単に行うには、エディタで書いたコマンドをコピーして maxima に貼り付けることである。 しかしコマンドが多くなると、これも楽ではない。 そこで maxima にはバッチモードというものがある。 一連のコマンドをファイル、例えば test.maxima、に記述しておき
mathsci[10]$ maxima -b test.maxima
のように実行する。すると一連のコマンドが実行され、maxima は自動的に終了する。 実行結果は画面に表示されるが、これを保存しておきたいときには
mathsci[10]$ maxima -b test.maxima > output
のようにリダイレクトを用いればよい。
演習 : 適当にいくつかのコマンドを書いたファイルを用意し、 バッチモードを試してみなさい。