2007/11/19
Maxima その2
前エントリーの続き。
今回はMaximaの簡単な使い方。
Maximaを起動するには,UNIXツールらしくターミナルで"maxima"と入力。
Maximaが起動してプロンプト"(%i1)"が表示されます。
$ maxima Maxima 5.13.0 http://maxima.sourceforge.net Using Lisp SBCL 1.0.11 Distributed under the GNU Public License. See the file COPYING. Dedicated to the memory of William Schelter. This is a development version of Maxima. The function bug_report() provides bug reporting information. (%i1)
最初は小手調べ。a=3,b=2とおいて,a+bを解いてみましょう。
まずは,変数aに3を代入するため,"a:3;"と入力し,続けてリターン・キーを押すと,
"(%o1) 3"のようにプロンプト及び実行結果が表示されます。
(%i1) a:3; (%o1) 3
同様に,"b:2;",さらにリターン入力し,bに2を代入します。
(%i2) b:2; (%o2) 2
さて,a+bはいくつかというと...
(%i3) a+b; (%o3) 5
たしかにa+b=5が得られました。
ちなみに,プロンプトである(%i1)や(%o2)の数字の部分は通し番号で,後の計算で利用することが出来ます。
例えば,(%o1),つまり3を利用して,これの平方根を求めると...
(%i4) sqrt(%o1); (%o4) sqrt(3)
ここで,sqrt()ってのは,平方根を求める関数。%o1が3なので,その平方根は当然ルート3。
じゃぁ,ルート3を小数で表したいなら,float()関数を使って...
(%i5) float(%); (%o5) 1.732050807568877
ここで使った"%"というのは,直前の結果を参照する記号です。つまり"%o4"。よってルート3。なので1.732....。
さて,これまでの計算により,aに3,bに2が代入されています。これらをここで一旦初期化しちゃいましょう。
(%i6) kill(a,b); (%o6) done
これで,変数a及びbは真っ新になりました。なので,a+bを計算してみると,結果は5ではなく,そのまんま,抽象的な"b+a"となりました。
(%i7) a+b; (%o7) b + a
さて,2元1次連立方程式(x+y=6, 3x+2y=14)のxとyを求めてみましょう。
(%i8) solve([x+y=6, 3*x+2*y=14], [x,y]); (%o8) [[x = 2, y = 4]]
x=2,y=4が求まりました。
続きまして,1元2次方程式,ax^2+bx+c=0の解を求めてみましょう。念のため説明すると,x^2は,xの2乗のことネ。
(%i9) solve(a*x^2+b*x+c=0,x);
2 2
sqrt(b - 4 a c) + b sqrt(b - 4 a c) - b
(%o9) [x = - --------------------, x = --------------------]
2 a 2 a
以上のように,Maxima使えば答えがバッチリ。鶴亀算や解の公式を忘れても,Maximaがあれば計算できちゃう。
しかも,具体的な数値ではなく,aとかbとかcとか,シンボルのまんまで計算できちゃう所が数式処理システムと呼ばれる所以でありMaximaの凄いところ。
世の学生,生徒,児童諸君。Maximaで宿題を解いちゃダメだぞ。
続く。

