Unix の場合 Risa/Asir を起動するには kterm や xterm などの シェルウインドーまたは Emacs のシェルウインドーで, asir と入力する.
bash-2.03$ | asir RETURN |
%
(C-シェルのプロンプト) もよく見かけるであろう.
なお, 入力行の編集機能を利用したい場合は fep asir と入力して
Risa/Asir を起動する.
Windows の場合, Risa/Asir のインストールされている フォルダ(ディレクトリ)を ファイルエクスプローラで開き asirgui (Graphical User Inteface 版 Asir) のアイコン
Risa/Asir は次のように起動メッセージを出力し,
bash-2.03$ | asir RETURN |
This is Risa/Asir, Version 20010917 (Kobe Distribution). | |
Copyright (C) 1994-2000, all rights reserved, FUJITSU LABORATORIES LIMITED. | |
Copyright 2000,2001, Risa/Asir committers, http://www.openxm.org/. | |
GC 5.3, copyright 1999, H-J. Boehm, A. J. Demers, Xerox, SGI, HP. | |
PARI 2.0.17(beta), copyright (C) 1989-1999, | |
C. Batut, K. Belabas, D. Bernardi, H. Cohen and M. Olivier. | |
[0] | |
quit;
を入力する.
この節では, まず Asir を対話型電卓として利用する方法を説明する.
Asir は数や文字列の処理のみならず, 多項式の計算もできる. 電卓的に使うための要点を説明し例をあげよう.
^
はそれぞれ足し算, 引き算, かけ算, 割算, 巾乗.
たとえば,
2*(3+5^4);
[0] |
2*(3+5^4);
RETURN |
1256 |
deval(sin(3.14));
$
(ドル記号) を用いると,
計算した値を印刷しない.
数学ではかっことして, [,],{,}などがつかえるが
Risa/Asir では (,) のみ.
[,] や {,}は別の意味である.
[0] |
((2+2/3)*4+1/3)+5;
RETURN |
16 | |
[1] |
((2+2/3)*4+1/3)+5$
RETURN |
[2] | |
[0] |
fctr(x^10-1);
RETURN |
[[1,1],[x-1,1],[x+1,1],[x^4+x^3+x^2+x+1,1],[x^4-x^3+x^2-x+1,1]] | |
[1] |
(2*x-1)*(2*x+1);
RETURN |
4*x^2-1 | |
[2] |
(x+y)^3;
RETURN |
y^3+3*x*y^2+3*x^2*y+x^3 | |
0 | |
[1] |
plot(sin(x));
RETURN |
0 | |
[2] |
plot(sin(2*x)+0.5*sin(3*x),[x,-10,10]);
RETURN |
interrupt ?(q/t/c/d/u/w/?)と表示されるので u RETURN を入力する. 次に
Abort this computation? (y or n)と表示されるので y RETURN を入力する. (q/t/c/d/u/w/) の各文字の説明は ? を入力すれば読むことができる.
[0] |
fctr(x^1000-y^1000);
RETURN |
CTRL + C | |
interrupt ?(q/t/c/d/u/w/?) u RETURN | |
Abort this computation? (y or n) y RETURN | |
return to toplevel | |
[1] | |
変数に値をとっておくこともできる. 変数名は大文字で始まる. 関数名等は小文字で始まる. 英字の大文字, 子文字を区別しているので注意. Risa/Asir では多項式計算ができるが小文字で始まる文字列は 多項式の変数名としても利用される.
[0] |
Kazu = 5;
RETURN |
5 | |
[1] |
Hehehe = x+ 8;
RETURN |
x+8 | |
[1] |
Kazu+Hehehe;
RETURN |
x+13 | |
くりかえしになるが, セミコロン ; を入力しないと, RETURN キーを押しても実行ははじまらない. 計算機用語では ; RETURN で ``入力の評価が始まる'' という.
[0] |
A=2+deval(3^(1/2));
RETURN |
3.73205 | |
[1] |
B=1/(2-deval(3^(1/2)));
RETURN |
3.73205 | |
[2] |
A-B;
RETURN |
1.33227e-15 | |
この例では, 値が異なるのにどちらも同じ値 (3.73205) と表示されている. これは, 小数第 5 位まで表示するよう初期設定されているからである. これを変更するには
[0] |
ctrl("real_digit",16);
RETURN |
16 | |
[1] |
A=2+deval(3^(1/2));
RETURN |
3.732050807568877 | |
[2] |
B=1/(2-deval(3^(1/2)));
RETURN |
3.732050807568876 | |
155302.42+157.05;
と入力すると
155459
が戻るがこれも小数点以下が表示されていないだけで,
やはり real_digit を調整すれば表示される.
なお, デフォールトでは表示形式が小数点形式と指数表示で自動的に切り替わるが,
ctrl("double_output",1)
とすると指数表示への自動切替えが
おきない.
さて Asir にはプログラム言語がくみこまれており, この言語の機能をもちいると複雑なことを実行できる. まず一番の基礎であるくりかえしおよび印刷の機能をためしてみよう.
for (K=初期値; K<=終りの値; K++) {ループの中で実行するコマンド};
はあることを何度も繰り返したい時に用いる.
for ループと呼ばれる.
``K<=N'' は, ``
++K
や K++
は K を 1 増やせという意味である.
K = K+1
と書いてもよい.
同じく, ++K
や K++
は K を 1 減らせという意味である.
end$
を書いておくこと.
asirgui では, ファイルメニューの ``開く'' でファイルをロードしてもよい.
[0] |
for (I=0; I<2; I = I+0.2) {
RETURN |
print(I,0); print(" : ",0);
RETURN |
|
print(deval(I^(1/2)));
RETURN |
|
}
RETURN |
|
0 : 0 |
0.2 : 0.447214 |
0.4 : 0.632456 |
0.6 : 0.774597 |
0.8 : 0.894427 |
1 : 1 |
1.2 : 1.09545 |
1.4 : 1.18322 |
1.6 : 1.26491 |
1.8 : 1.34164 |
2 : 1.41421 |
なおこの例題では, 入力を間違えたら最初からやりなおすしかない. これは当然面倒くさい. したがって, 次の節で説明するように 通常はこの入力をファイルに書いておいてロードして実行する.
Unix 版では help("fctr");
と入力すると関数 fctr の使い方の
説明が出る.
このように help(関数名); で オンラインマニュアルを読むことが
可能である.
flist() と入力すると現在定義されている関数の一覧を見ることが
可能である. Windows 版では, ヘルプメニューで,
各関数のオンラインマニュアルを読むことができる.
[0] |
help("fctr");
RETURN |
`fctr', `sqfr' -------------- fctr(POLY) :: POLY を既約因子に分解する. sqfr(POLY) :: POLY を無平方分解する. RETURN リスト POLY 有理数係数の多項式 * 有理数係数の多項式 POLY を因数分解する. `fctr()' は既約因子分解, `sqfr()' は無平方因子分解. * 結果は [[数係数,1],[因子,重複度],...] なるリスト. * 数係数 と 全ての 因子^重複度 の積が POLY と等しい. * 数係数 は, (POLY/数係数) が, 整数係数で, 係数の GCD が 1 となる ような多項式になるように選ばれている. (`ptozp()' 参照) [0] fctr(x^10-1); [[1,1],[x-1,1],[x+1,1],[x^4+x^3+x^2+x+1,1],[x^4-x^3+x^2-x+1,1]] [1] fctr(x^3+y^3+(z/3)^3-x*y*z); [[1/27,1],[9*x^2+(-9*y-3*z)*x+9*y^2-3*z*y+z^2,1],[3*x+3*y+z,1]] [2] A=(a+b+c+d)^2; a^2+(2*b+2*c+2*d)*a+b^2+(2*c+2*d)*b+c^2+2*d*c+d^2 [3] fctr(A); [[1,1],[a+b+c+d,2]] [4] A=(x+1)*(x^2-y^2)^2; x^5+x^4-2*y^2*x^3-2*y^2*x^2+y^4*x+y^4 [5] sqfr(A); [[1,1],[x+1,1],[-x^2+y^2,2]] [6] fctr(A); [[1,1],[x+1,1],[-x-y,2],[x-y,2]]
help コマンドを用いると, このように Asir の組み込み関数 についての解説が表示される. 説明が専門家向けの記述もあるので, 用語については, 数学や数式処理関係の本を参照する必要な場合もある. たとえば, 無平方分解 とはなにか調べよ.
Asir のマニュアルは Web ページおよび asirgui のヘルプメニューでもみることが可能である.
参考:
Asir の中には起動時に必要な関数達をよみこんでしまうものもある.
たとえば,
OpenXM 版の Risa/Asir の場合次の起動メッセージを出力する.
この Risa/Asir を OpenXM/Risa/Asir とよぶ.
bash-2.03$ asir This is Risa/Asir, Version 20020802 (Kobe Distribution). Copyright (C) 1994-2000, all rights reserved, FUJITSU LABORATORIES LIMITED. Copyright 2000,2001, Risa/Asir committers, http://www.openxm.org/. GC 6.1(alpha5) copyright 2001, H-J. Boehm, A. J. Demers, Xerox, SGI, HP. PARI 2.2.1(alpha), copyright (C) 2000, C. Batut, K. Belabas, D. Bernardi, H. Cohen and M. Olivier. OpenXM/Risa/Asir-Contrib(20020808), Copyright 2000-2002, OpenXM.org help("keyword"); ox_help(0); ox_help("keyword"); ox_grep("keyword"); for help messages (unix version only). Loading ~/.asirrc [873]
この例では, 最初のプロンプトは [873] であるが, この数は起動時によみこまれる Asir プログラムの サイズにより変化する. OpenXM/Risa/Asir の場合, Asir Contrib ライブラリを起動時に 読み込むので, この数が 873 になっている. Asir Contrib ライブラリには, 行列計算, TeX への変換など さまざまな便利な関数が用意されている.
現在の Asir 配布形態は下のように 2 通りある. どの版でも, version number が 20001200 以上のものなら この本のサンプルプログラムはすべて動作する.