takataka | Docs

Octaveの使い方

はじめに

この文書は,フリーの数値解析ソフト GNU Octave (以下 octave )の使い方のごく一部を説明するためのものです.

2008年5月現在,octaveの最新版は version 3.0.1 ですが,この文書は, 龍谷大学瀬田学舎の計算機室のLinux-PCにインストールされている version 2.1.73 を想定して書いてあります. ver.3 と ver.2 は結構違うところがあるようです.

起動と終了

ターミナル上で octave というコマンドを実行すると,octaveが起動します.

$ octave
GNU Octave, version 2.1.73 (i686-pc-linux-gnu).

(途中の出力省略)

octave:1> 

最後の "octave:1>" というのは octave がキー入力を促していることを示すもの(プロンプト)です. quitと入力すると終了します.

octave:1> quit
$

とりあえずやってみよう

その1

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

下記のようなファイルを作成し,demo01.m という名前で保存してあるとする.

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 が読み込まれて実行される.

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のようにインタラクティブに実行する場合も同様).

行列データのテキストファイルの読み書き

カレントディレクトリに次の内容のテキストファイル hoge.txt があるとき,

11 12 13.33
21 22 23
octave> x = load("hoge.txt")
x =

  11.000  12.000  13.330
  21.000  22.000  23.000

とすれば,このファイルの内容を行列 x に読み込むことができます(テキストファイル中の見た目そのままの行,列のならびになることに注意).

一方,書き込みは次のようにします.

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")     ← 変数名も""で囲むことに注意

カレントディレクトリに fuga.txt というファイルが作られているはずです.ただし,内容を less などで確認してみるとわかりますが,次のようにコメント付きになっていますので注意が必要です.

# 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

リンクなど


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-08-13 (水) 13:45:19