GNU Octave

#contets

 

Octaveって?

OctaveはMatlabと互換性のある数値解析ソフトである。
学生諸君にはうれしい あの計算や あれの計算が一瞬でできてしまう。
レポートをoctaveでやりだすと止められないだろう。
Matlabとの違いは、オープンソースであることと、Matlabより若干記述が楽なところ。
シェルスクリプトで言うとB-ShellとZ-Shellの違いみたいな。

つかプログラミング言語じゃないよな・・・まあいいか

導入

Windows

Unix系

大抵のディストリはパッケージ配ってると思うのでそれぞれ入れてください。
ソースからコンパイルする時もそんなに依存関係はありません。

プロットにgnuplot-x11を使うので入れておきましょう。
最新バージョンは2.9以降かな

使ってみようh

端末でoctaveと打つと

octave:1>

こんなかんじにでるとおもう。ので1+1などと入れてみよう

octave:1> 1+1
ans =  2

と言った感じに単純に計算をしてくれる。 他にも四則演算もろもろ括弧,二乗やsinなども使える。

octave:1> (1+2)*3 - 2*2
ans =  5
octave:2> sin(2.3)
ans =  0.74571
octave:3> 4^2                    # ^はXORじゃないので注意!
ans = 16

変数

変数ももちろん使える。

octave:1> a=3
a =  3
octave:2> b=1-2
b = -1
octave:3> a-b
ans =  4

定義済み変数ももちろんある `pi`などだ

octave:1> pi
ans =  3.1416

C言語で言うdefineではないので、書き換えることがもちろん可能

octave:1> pi * 2
ans =  6.2832
octave:2> pi = 1
pi =  1
octave:3> pi * 2
ans =  2

行列

ここまでなら「他の電卓とかわらないし、bcこまんどで事足りるだろ常考……遅いし。」
と言われるだろうが、ここからが本領発揮。octaveでは行列演算が出きるのだ。

octave:1> [1 2 3]                    # [ ]にスペースを入れて記述
ans =
   1   2   3
octave:2> [1 2 3; 4 5 6; 7 8 9]    # ; を入れて次の行へ
ans =
   1   2   3
   4   5   6
   7   8   9

演算は普通に演算子を書くだけ、変数にももちろん代入できる。

octave:3> [1 2] + [3 4]
ans =
   4   6

octave:4> a = [1 2; 2 1] * [1 0; 0 1]
a =
   1   2
   2   1

以下、応用例

octave:5> [[1 2]; [3 4]; [5 6]]   # 二重に行列を書く。
ans =
   1   2
   3   4
   5   6

octave:6> a=[1 2; 3 4], b = [a [5;6]] #ちょいとややこしく
a =
   1   2
   3   4
b =
   1   2   5
   3   4   6
#[[  a  ]    ] ←こんなかんじ

octave:7> sin( [pi*0/2 pi*1/2; pi*3/2 pi*4/2])
ans =
   0.00000   1.00000               # 要素ごとに関数をかける。
  -1.00000   0.00000