octaveの使い方

octaveの使い方(kyoto-u.ac.jp)。うちのマシンだと、コンパイルオプションは


g++ testoctave.C -I/usr/include/octave-2.1.36 -L/usr/lib/octave-2.1.36 -lblas -loctave -lcruft -llapack -ldl -loct-readline -lreadline -lcurses -lg2c -Wl,-rpath /usr/lib/octave-2.1.36

になる。長い。C++かぁ。わざわざライブラリとして使わんでもいいか、とも思う。どっちにしても、octaveの使い方はどっかにメモしておかなきゃ必ず忘れてしまう。

こいつをPythonから使えないかなぁとも思ったが、PythonにはNumeric Pythonがある。Numarray(stsci.edu)に名前が変わったのかな?? よくわからないがnumarray-0.6.2をインストールしてみた。Packagesの下にあるやつも忘れずにインストールする。bdist_rpmするためには各所にある.hをMANIFESTに入れないと失敗する。lapackみたいに、もともとその環境にライブラリがあれば使わないんだけど。

Numarrayは行列演算ができる。でも行列の積は「*」演算子じゃなくて、matrixmultiply(a,b)らしい。「*」は要素を全部掛けるだけみたいだ。転置はa.transpose()。transpose()は破壊的なメソッドです。

…なんか大袈裟かも、と思う。使い方をこれから調べなければならないし。私は単に「コンピュータでn次方程式を解きたい」だけなのだけどなぁ。というかむしろ解くまでいく必要はなくて、プロットされた点を通る線を近似したいだけ。今時のコンピュータってそういうもんじゃないのかな。行列演算なんて、bashに最初から組み込まれててもいいくらいだ(迷惑?)。n元一次方程式なら、たぶんNumarrayのlinear_algebraのsolve_linear_equations(a,b)で済むような気がする。

それで、近似ならoctaveではpolyfit()一発みたいだ。むかしもっと難しいやりかたしたような気がするが…。numarrayにもpolyfit()みたいなのがあるといいな。

(追記) 2003-09-24 10:47

ちなみにpolyfitの例。

GNU Octave, version 2.1.36 (i686-pc-linux-gnu).
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 John W. Eaton.
This is free software; see the source code for copying conditions.
There is ABSOLUTELY NO WARRANTY; not even for MERCHANTIBILITY or
FITNESS FOR A PARTICULAR PURPOSE.  For details, type `warranty'.

Report bugs to <bug-octave@bevo.che.wisc.edu>.

octave:1> x=[0,1,2,3,4]
x =

  0  1  2  3  4

octave:2> y=[576,579,634,613,591]     # 最近の某社の株価
y =

  576  579  634  613  591

octave:3> polyfit(x,y,1)              # 1次式で近似
ans =

    6.4000
  585.8000                            # y=6.4x+585.8

octave:4> polyfit(x,y,2)              # 2次式で近似
ans =

    -9.0000
    42.4000
   567.8000                           # y=-9x^2+42.4x+567.8

(追記) 2003-09-24 11:38

z=polyfit(x,y,d)で代入しておいて、polyval(z,n)とすると値を求められる。

(追記) 2003-09-24 11:02

グラフにしてみた。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です