Skip to content

Latest commit

 

History

History
229 lines (160 loc) · 4.72 KB

intro.md

File metadata and controls

229 lines (160 loc) · 4.72 KB

Maxima入門

はじめに

MathLibreに収められている数式処理/計算機代数システムMaximaを使ってみる。 自分でインストールするのは、LISPの選択から始めなければならずそれなりに面倒だが、すぐに動かせる形となっているMathLibreは大変ありがたい。

起動

次のいずれかの方法で起動する。

  1. ターミナル(左下にあるこれ です)を開き、"maxima"と入力してリターン。最も基本的なもの。
  2. Math->Maxima Algebra System を選ぶ。xmaxima. GUI付き。チュートリアルも表示される。(VirtualBoxで画面サイズが小さいとあまりうれしくないようだ。)
  3. Math->wxMaxima を選ぶ。wxMaxima. GUI付き。基本的なコマンドや操作がメニューになっている。出力結果を見やすくフォーマットしてくれる。
  4. Math->GNU TeXmacsでTeXmacsを起動し、メニューバーから挿入->セッション->Maxima を選ぶ。出力結果を見やすくフォーマットしてくれる。

以下の操作ではターミナル版を想定している。他の場合は編集機能や実行時の操作がやや異なることがあるので、それぞれの画面に表示されるガイドを参照すること。

Maximaの入力プロンプトは

(%i1)

のようになる。数字は入力ごとに増えていく。一行の入力は ;(セミコロン)で完結する。 入力中は上矢印で過去の入力を呼び出すなどの編集機能が使える。

終了

quit();

やってみよう

(x + y)^2;
diff(%,  x);

直前の出力(一つ前のコマンドの実行結果)は % で参照できる。 もっと古い実行結果 %o3 を参照したければ %o3 とする。

integrate(1/(x^3-1), x);

つぎのようなことをするときには、入力編集機能を活用するとよい。

integrate(1/(x^2+1), x);
integrate(1/(x^2+1), x, 0, 1);
integrate(1/(x^2+1), x, 0, inf);

変数と代入

代入は = などではなく、:(コロン)を使う。

a:1/2;
b:1/3$

$ で行を終始すると表示を抑制できる。

c:a+b;

変数としての代入もできる。

p:s;
s:12345.67;
p;

変数 p にではなく、 p の値(今の場合 s)に代入するには :: を使う。

p::a-b;
s;

p の値は変わっていない(sのまま)ことを確認せよ。

values;

で今まで使った変数の一覧を得ることができる。

Help

? keyword
describe(command);

でkeywordに関連するコマンドの一覧が出る。

example(command);

はcommandの使い方の例。

式の評価

ev() 関数を使って評価することができる。

f:sin(3*x)-cos(3*y)*z;
ev(f, x=%pi/4);
ev(%, y=%pi/3);
ev(%, z=1);

一度にやってもよい。

ev(f, x=%pi/4, y=%pi/3, z=1);

関数の定義もできる。

g(x,y,z) := sin(3*x) - cos(3*y) * z;
g(%pi/4, %pi/3, z);

どちらで定義しても次のように使える。

diff(f, x);
diff(g(x,y,z), x);

いろいろできる

quotient(19, 5);
remainder(19, 5);
divide(19, 5);
11!;
factor(11!);
sum(n^2, n, 1, 10);

多項式

r0:x^8+x^6-3*x^4-3*x^3+8*x^2+2*x-5;
r1:3*x^6+5*x^4-4*x^2-9*x+21;
quotient(r0, r1, x);
remainder(r0, r1, x);
divide(r0, r1, x);

展開など。

r0*r1;
expand(%);
diff(%, x, 14);
%/14!;
integrate(r0, x);
integrate(r0, x, 0, 1);

式の整理

式を整理するには ratsimp(), factor(), trigsimp()(三角関数を含む場合)などを使う。

2*x^2+4*x^3+x^4-2*x^5-x^6;
factor(%);
1/(x+1) + x^2/(x^2-1);
ratsimp(%);

代数方程式

solve(x^2+2*x+1 = 0, x);

(" = 0"はなくても同じ意味に解釈される。)

連立方程式も。

eq1:[x^2+y*x-1, x*y^2-x+y];
algsys(eq1, [x,y]);

その他

その他にも、行列計算、微分方程式、グラフ表示などいろいろできる。 Webでかなり情報が得られるようにもなってきているので、各自調べてみてください。

限界

できないこともあります。

f:(cos(a*x) - cos(b*x))/x;
assume(a > 0, b > 0);
integrate(f, x, 0, inf);

この積分値は log (b/a) になるはずです。

余裕のあるひとは

にすすんでください.

文献

例題のいくつかは

  • 横田博史、『はじめてのMaxima』(工学社、2006)
  • 渡辺隼郎、「Macsymaの使い方」、archive No. 12, 「数式処理 入門から高度利用まで」(CQ出版社、1990)所収

から引用しました。