Search on the blog

2010年10月31日日曜日

Pythonで数値計算

Pythonのいいところは、何といってもinteractiveなconsoleモードがあるところ。
ちょっとした数値計算をしたいときに重宝する。

例えば、階乗の計算をしたいとき。。
C/C++だと、64bitまでしか計算できない。。JAVAだとBigIntegerが使えるが書くのが面倒。
Pythonならコマンドラインを立ち上げて、サクサクっとかくことが出来る。
こんな感じ。

>>> def f(x):
... if x == 1:
... return 1
... else:
... return x * f(x-1)
...
>>> f(50)
30414093201713378043612608166064768844377641568960512000000000000L
>>>

さらに、Pythonには強力な数値計算モジュールが存在する。
固有値計算なんかも簡単に出来てしまう。。Page Rankの簡易バージョンを実装しようと考えていたが、Pythonだったら簡単に出来てしまう@_@
でも、固有値・固有ベクトルについてはいつか自分でも勉強しなおさないと、と思っている。。
Pythonで固有値・固有ベクトルを求めるとこんな感じ。。

>>> import numpy
>>> A = [
... [1,2,3],
... [4,5,6],
... [7,8,9]
... ]
>>> l,v = numpy.linalg.eig(A)
>>> l
array([ 1.61168440e+01, -1.11684397e+00, -1.23190993e-15])
>>> v
array([[-0.23197069, -0.78583024, 0.40824829],
[-0.52532209, -0.08675134, -0.81649658],
[-0.8186735 , 0.61232756, 0.40824829]])
>>>

楽すぎる(笑)

プログラミング言語には一長一短あるが、
個人的には、
  • 基本はC++
  • 多倍長、正規表現の文字列処理を用いる場合はJAVA
  • 数値計算、ネットワークプログラミングはPython
という感じだろうか。。

0 件のコメント:

コメントを投稿