Yacas (Yet Another Computer Algebra System) は、コンソールで動作する小さくて柔軟性に富むコンピュータ代数言語 (インタープリタ) です。 シンボリックな計算が可能で、分数の計算、多項式の計算、微分や積分、 テーラー展開などが簡単にできます。 もちろん、普通の算術計算も任意の桁数で計算できます。
(右図をクリックすると大きく表示します。)
作者: Ayal Pinkus さん
ホームページ:
http://yacas.sourceforge.net/
バージョン: 1.0.53rev2 (2002/08/17)
ライセンス: GPL
付属ドキュメントを読む
[2007/02/02]
以下の内容は古いものです。最新の情報は
Yacas のホームページを参照して下さい。
インストールしたら、 適当なターミナル・エミュレータから yacas と入力します。
$ yacas [editvi.ys] [unix.ys] True; Numeric mode: "Internal" To exit Yacas, enter Exit(); or quit or Ctrl-c. Type ?? for help. Or type ?function for help on a function. Type 'restart' to restart Yacas. To see example commands, keep typing Example(); In>
Yacas はインタープリタですから、
$ yacas ファイル名
としてプログラムをファイルから読み込むことができますが、 引数を付けない場合はターミナルから対話的に使うことができます (bash などと同じですね)。 キーボードからの入力は、bash と同じような行編集機能、ヒストリー機能を備えています。
入力プロンプト
In>
が出て来たら、手始めに 1 + 2
を計算してみましょう。
In> 1 + 2 Out> 3;
出力は "Out>
" で示されます。
Yacas の本領は代数的な計算です。例えば、
In> 1/2 + 1/3 Out> 5/6;
この結果を数値で欲しいときは N()
という関数を使います。
直前の結果は %
で参照できます。
In> N(%) Out> 0.8333333333;
桁数は Precision()
関数で任意に指定できます。
In> Precision(1000) Out> True; In> N(Sqrt(2))
で 2 の平方根を 1000 桁計算できます。
数値計算が目的の場合は専用の関数が用意されています。
平方根の計算ならは MathSqrt()
を使えば
N(Sqrt())
よりも速く計算できます。
In> MathSqrt(2) Out> 1.4142135623730950488016887242096980785696718753769480731766797379907324784 ...
数式の計算もできます。
In> (a+b)^2 Out> (a+b)^2; In> Simplify(%) Out> a^2+2*a*b+b^2; In> PrettyForm(%) 2 2 a + 2 * a * b + b Out> True;
方程式を解くこともできます。
a + x·y = z
を x について解いてみます。
In> Solve(a+x*y==z,x) Out> (z-a)/y;
連立方程式
11x + 3y = 1, 2x + y = 0
を解いてみます。
In> Solve({11*x+3*y==1,2*x+y==0},{x,y}) Out> {{1/5,(-2)/5}};
微分、積分は次のようにします。
In> D(x) x*Sin(x) Out> x*Cos(x)+Sin(x); In> Integrate(x,a,b)Sin(x) Out> Cos(a)-Cos(b);
今度は 24 と 36 の最大公約数および最小公倍数、120 の素因数分解を求めてみましょう。
In> Gcd(24,36) Out> 12; In> Lcm(24,36) Out> 72; In> Factor(120) Out> 2^3*3*5;
式の因数分解も素因数分解と同じように行います。 x2 + 2x - 3 を因数分解すると
In> Factor(x^2+2*x-3) Out> (x-1)*(x+3);
複素数も使えます。虚数単位 i
として定数 I
が定義されています。
In> I Out> Complex(0,1); In> I^2 Out> -1; In> (1+I)*(1-I) Out> 2;
定数 Pi
も定義されています。
In> N(Pi,50) Out> 3.1415926535897932384626433832795028841971693993751; In> Sin(Pi/3) Out> Sqrt(3/4);
ベクトルや行列、一般的なリストも扱うことができます。
そのほか、Example()
を実行すると
ランダムにいくつかの実行例を見ることができます。
Yacas はプログラミング言語ですから変数をセットしたり 関数を定義したりできます。infix オペレータを定義することも可能です。 変数名、関数名は大文字小文字の区別があります。長さには特に制限はありません。
In> a := 4 Out> 4; In> f(x) := 2*x^2 Out> True; In> f(a) Out> 32;
処理フローの制御には
If()
、While()
、Until()
、
For()
、ForEach()
などがあります。
グラフのプロットは gnuplot を使います。 次の例は sin(1/x) を x の範囲 [-1,1] で描きます。
In> Plot2D(Sin(1/x), -1:1) Out> True;
これで gnuplot が起動して次のようなウィンドウが現れます。
Yacas のヘルプコマンドは ?? です。 デフォルトではコンソールベースの Web ブラウザ Lynx が使われます。 Lynx は MLD7 の DVD-ROM、MLD6 の Disc4、MLD5 の Disc3 に収録されています (同時に indexhtml パッケージが必要です)。 Mozilla/Galeon など一般的なブラウザに設定することもできますが、 いずれにしろ ?? でドキュメントを読んでいる間 Yacas でのコマンド入力はできなくなりますから、 ブラウザを単独で起動して
file:///usr/share/yacas/documentation/books.html
を読むほうがいいでしょう。
LinuxMLD 5,6,7 用の RPM
yacas-1.0.53rev2-1_mlb1.i386.rpm (1,185,568 bytes)
をインストールします。
rpm コマンドでインストールするにはスーパーユーザになって
# rpm -i yacas-1.0.53rev2-1_mlb1.i386.rpm
とします。
MLD 5,6 では
Gnome の GUI でインストールすることもできます。
emacs で使うための YacasNotebook もあります。
類似アプリケーション
本格的な数式処理システムである DOE Macsyma を Common Lisp で実装したもの
フリーではありませんが
教育機関や個人のユーザは登録だけで無料で使用できるようです
(ライセンスが変更になっているようです)。
富士通研究所で開発され、非営利的な利用では無料です。
九州工業大学の古賀さんの開発によるフリーソフトウェア (営利目的の配布は禁止)
数論のための有理数演算パッケージ (ライブラリとインタプリタ)
関連アプリケーション
本来の機能は TeX の Emacs 風エディターですが、 Yacas、Maxima、PARI-GP など多くの数式処理アプリケーションの インターフェースとして利用できるようです。 上記 横田さんのページ に Maxima での使用例があります。