[[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のいずれでも使えます

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS