[[takataka]] | [[Docs]]
*Octaveの使い方 [#u52a44d4]
#contents
**はじめに [#c9e3c6ab]
この文書は,フリーの数値解析ソフト GNU Octave (以下 octave )の使い方のごく一部を説明するためのものです.
2008年5月現在,octaveの最新版は version 3.0.1 ですが,この文書は,
龍谷大学瀬田学舎の計算機室のLinux-PCにインストールされている version 2.1.73 を想定して書いてあります.
ver.3 と ver.2 は結構違うところがあるようです.
**起動と終了 [#eb519c26]
ターミナル上で octave というコマンドを実行すると,octaveが起動します.
#pre{{
$ octave
GNU Octave, version 2.1.73 (i686-pc-linux-gnu).
(途中の出力省略)
octave:1>
}}
最後の "octave:1>" というのは octave がキー入力を促していることを示すもの(プロンプト)です.
quitと入力すると終了します.
#pre{{
octave:1> quit
$
}}
**とりあえずやってみよう [#i7490c6e]
***その1 [#h5e5ec12]
#pre{{
octave:1> A = [4 -1 1; -1 4 -1; 1 -1 4]
A =
4 -1 1
-1 4 -1
1 -1 4
octave:3> s2=1/sqrt(2)
s2 = 0.70711
octave:4> s3=1/sqrt(3)
s3 = 0.57735
octave:5> s6=1/sqrt(6)
s6 = 0.40825
octave:6> U = [s3 s2 -s6; -s3 s2 s6; s3 0 2*s6]
U =
0.57735 0.70711 -0.40825
-0.57735 0.70711 0.40825
0.57735 0.00000 0.81650
octave:7> U'*A*U
ans =
6.00000 0.00000 0.00000
0.00000 3.00000 0.00000
0.00000 0.00000 3.00000
}}
上記では,(手計算で求めた)行列Aの固有値分解の結果を確認していますが,octave に固有値・固有ベクトルを計算させることももちろんできます(方法は自分で調べてみよう).
***その2 [#vf5a138b]
下記のようなファイルを作成し,demo01.m という名前で保存してあるとする.
#pre{{
A = [4 -1 1; -1 4 -1; 1 -1 4]
s2=1/sqrt(2)
s3=1/sqrt(3);
s6=1/sqrt(6)
U = [s3 s2 -s6; -s3 s2 s6; s3 0 2*s6];
U'*A*U
}}
このとき,demo01.m のあるディレクトリ上でoctaveを起動し
octave> demo01
とすると,demo01.m が読み込まれて実行される.
#pre{{
octave:2> demo01
A =
4 -1 1
-1 4 -1
1 -1 4
s2 = 0.70711
s6 = 0.40825
ans =
6.00000 0.00000 0.00000
0.00000 3.00000 0.00000
0.00000 0.00000 3.00000
}}
セミコロン ";" のついてる行とついてない行の動作の違いに注意(その1のようにインタラクティブに実行する場合も同様).
**行列データのテキストファイルの読み書き [#oaa5c21f]
カレントディレクトリに次の内容のテキストファイル hoge.txt があるとき,
#pre{{
11 12 13.33
21 22 23
}}
#pre{{
octave> x = load hoge.txt
octave> x = load("hoge.txt")
x =
11.000 12.000 13.330
21.000 22.000 23.000
}}
とすれば,このファイルの内容を行列 x に読み込むことができます(テキストファイル中の見た目そのままの行,列のならびになることに注意).
一方,書き込みは次のようにします.
#pre{{
octave> x = load hoge.txt;
octave> x = load("hoge.txt");
octave> y = x'
y =
11.000 21.000
12.000 22.000
13.330 23.000
octave> save fuga.txt y
octave> save("fuga.txt", "y") ← 変数名も""で囲むことに注意
}}
カレントディレクトリに fuga.txt というファイルが作られているはずです.ただし,内容を less などで確認してみるとわかりますが,次のようにコメント付きになっていますので注意が必要です.
#pre{{
# Created by Octave 2.1.73, Tue May 20 16:34:51 2008 JST <takataka@s1542f160>
# name: y
# type: matrix
# rows: 3
# columns: 2
11 21
12 22
13.33 23
}}
**リンクなど [#w05f00f8]
-Octaveのホーム http://www.gnu.org/software/octave/
--LinuxなどのUNIX系OS, Windows, Mac OS Xのいずれでも使えます