ホーム‎ > ‎

Reduce入門

はじめに

Knoppix/Mathに収められている数式処理/計算機代数システムREDUCEを使ってみる。

起動

次のいずれかの方法で起動する。
  • コンソールウィンドウを開き、"reduce"と入力してリターン。
  • Math->Reduce を選ぶ。
いずれの場合も、ウィンドウが開き、入力が可能になる。

REDUCEの入力プロンプトは
 1: 
のようになる。数字は入力毎に増えていく。
  • 一行の入力は $ ないし ;(セミコロン)で完結する。
  • $は出力を抑止する。
  • 入力中は上矢印で過去の入力を呼び出すなどの編集機能が使える。
  • 大文字と小文字の区別はない。

終了

bye$

やってみよう

(x + y)**2;
df(ws(1),  x);

ws(行番号)によって既に入力した行を参照できる。(wsは"working space"の略。)
int(1/(x**3-1, x);

つぎのようなことをするときには、入力編集機能を活用するとよい。
int(1/(x**2+1), x);
int(1/(x**2+1), x, 0, 1);
int(1/(x**2+1), x, 0, infinity);

変数と代入

代入は = などではなく、:= を使う。
a:=1/2$
b:=1/3$
c:=a+b;
変数としての代入もできる。
p:=s;
s:=12345.67;
p;

式の評価

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

関数の定義もできる。
clear x, y, z;
operator g;
g(x,y,z) := sin(3*x) - cos(3*y) * z;
g(x,y,z);
g(pi/4, pi/3, 1);

"let"コマンドの後は "=" を使う。
"clear"コマンドを実行するとそれまでの定義が消える。(時々やっておかないとはまる。)
どちらで定義しても次のように使える。
df(f, x);
df(g(x,y,z), x);

次は何をやっている?
let x**4 = 0;
z := (1 + x + x**2 + x**3)**2;
clear x**4;

行列

matrix aa(2,2), ee(2,2);
ee := mat ( (1,0), (0,1) );
aa := mat ( (a,b), (c,d) );
aa ** 2 - trace(aa) * a + det(aa) * ee;

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

Maximaでできなかった次の積分はやっぱりできません。
operator f;
f(x):=(cos(a*x) - cos(b*x))/x;
int(f(x), x, 0, inf);

Comments