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