Skip to content

Latest commit

 

History

History
131 lines (94 loc) · 2.26 KB

intro.md

File metadata and controls

131 lines (94 loc) · 2.26 KB

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);