« 洋の東西、文理を問わず。 | Main | またね。 »

2008.03.27

ちょっとだけ、Sageてみる。

Webをぐるぐるしていたら、Sageというソフトウェアを見つけた。
なんでもMathematicaに対抗するフリーでオープンソースなソフトを作っちゃおう、という代物だとか。
貧乏人にはとても興味深いお話でありますよ。Mathematicaの20万って価格はそろそろ科学者が暴動を起こしてもいいと思うんだ。まあ、企業なら経費で落ちるからいいのかも知れないけれど。
話はそれたけれど、とにかくSageの200メガバイトの実行ファイルをダウンロードして、展開して、チュートリアルを読みながらちょこちょこといじってみる。
基本的に構文はpythonそのもの。python上で実装しているから当然だけど。マニュアルを見る。どうやら数論や代数幾何方面の機能が充実しているようだなあ。うちの研究室は数値計算や微積分がメインなので、その辺の機能を使う機会はちょっと少ないかな。

…しかし。
この『Sudoku』って関数はなんですか。
そういえばアメリカ行ったときも、本屋に『Sudoku』本が大量にあったなあ。おそるべし、Sudoku…。

|

« 洋の東西、文理を問わず。 | Main | またね。 »

Comments

Maxima も入っているそうなので、それなりに使えると思います。というか数学会のところで説明を聞きました。KNOPPIX/MATH の CD 配ってました。

まぁ GAP なんてそれこそ代数計算のパッケージですし。たまに使いますが。

Posted by: | 2008.03.28 12:15 AM

そーですね、そこそこ使えますね。
でも、『exp(-a*x*x)をxについて積分してね』と入力したら、『aってなーにそれ食べれるの?』と言って拒否されました。うーん、aを実数として定義しなくちゃいけない…のかな?

Posted by: いちのみや | 2008.03.28 06:03 AM

sage-2.10.4 をソースからビルドして試してみました。7時間ほど掛かりました(笑)。個人的要望:libsigsegv も同梱して欲しかった(readline は同梱しているのに)。

で、積分ですが

http://www.sagemath.org/doc/html/tut/node24.html

を参考にやってみました。以下、結果です。

./sage
----------------------------------------------------------------------
| SAGE Version 2.10.4, Release Date: 2008-03-17 |
| Type notebook() for the GUI, and license() for information. |
----------------------------------------------------------------------

sage: integral( exp( - a * x * x ) , x )
---------------------------------------------------------------------------
<type 'exceptions.NameError'> Traceback (most recent call last)

/opt/sage-2.10.4/<ipython console> in <module>()

<type 'exceptions.NameError'>: name 'a' is not defined
sage: a = var("a")
sage: integral( exp( - a * x * x ) , x )
sqrt(pi)*erf(sqrt(a)*x)/(2*sqrt(a))

ということで、a を宣言(変数として?)してあげないとダメみたいです。マニュアルを一切読んでいないのでa = var("a") の意味する所は分かりませんが、此れが無いと望む結果を得ることが出来ませんでした。因みにRuby 使いのため、Python は存じません。良い機会なので Python にも手を出してみましょうか。

で、maxima の場合、

sage: maxima( ' integrate( exp( - a * x * x ) , x ) ')
sqrt(%pi)*erf(sqrt(a)*x)/(2*sqrt(a))

で済みました。これは sage から maxima を呼ぶ場合の書き方です。

sage: maxima_console()

で、sage から maxima に切り替わります。

(%i1) integrate( exp( - a * x * x ) , x ) ;
sqrt(%pi) erf(sqrt(a) x)
(%o1) ------------------------
2 sqrt(a)
(%i2) quit();
sage:

こんなところでしょうか。


# 空白を勝手に埋めるのをドウニカして欲しい。

Posted by: | 2008.03.30 02:33 AM

sage: diff( exp( -a*x*x), x )
---------------------------------------------------------------------------
<type 'exceptions.NameError'> Traceback (most recent call last)

<ipython console> in <module>()

<type 'exceptions.NameError'>: name 'a' is not defined
sage:

ということで、微分もダメでした。融通が利きませんね。

ソースからビルドしたら 1GB 以上喰われました(涙)。

Posted by: | 2008.03.30 03:19 AM

ども。
やはり変数として宣言しないとだめなんですね。うーん、代数を使う機会があまりないので微妙かなー。pythonは普段使っているからいいんだけど…。

しかし、コンパイルしたら1Gとは…。

Posted by: いちのみや | 2008.03.30 06:30 AM

Mac 用のバイナリを拾って来ましたが、やはり 890MB ほど喰われました。

make clean を実行しても、余計なものを【全て】消してくれる訳ではないので、無駄なファイルも抱えていると思います(1GB 超の理由)。仕方が無いので、せめて *.o だけは手動で消しました。

install.log は 9MB を越えました。テキストファイルなのに。

Posted by: | 2008.03.30 09:41 AM

890メガですかー。
まあ、pythonだのmaximaだのも一緒にまとめてバイナリに入っているみたいですからねぇ。
普通にパッケージにしてくれればディスク容量が助かるんだけどなあ。

Posted by: いちのみや | 2008.03.30 05:32 PM

The comments to this entry are closed.

TrackBack


Listed below are links to weblogs that reference ちょっとだけ、Sageてみる。:

« 洋の東西、文理を問わず。 | Main | またね。 »