Yacas

Yacas

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 でインストールすることもできます。

パッケージの更新履歴

[2002/12/28] yacas-1.0.53rev2-1_mlb1.i386.rpm
1.0.46 と比べると安定度が向上し、実行速度の改善も図られているようです。 embedding Yacas のためのライブラリが含まれるようになって RPM のサイズはかなり大きくなってしまいました。
[2001/04/19] yacas-1.0.46-1_mlb1.i386.rpm
1.0.44 からの変更点は yacas のホームページで Change log を 御覧ください。

その他

emacs で使うための YacasNotebook もあります。

参考

類似アプリケーション

関連アプリケーション

[2001/02/24 作成] [2007/02/02 更新]


このページに関する御意見、御要望を science@mlb.co.jp までお寄せ下さい
Copyright © 2001-2007 Media Lab. All Rights Reserved.