| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
以降の章においては,Octaveの全機能について詳細に記述してあります。 しかし,その前に,その機能のいくつかについて例を示すことが役立つでしょう。
もしOctaveに初めて触れるなら,Octaveを学び始めるために,ここに示す例を 試すことをお勧めします。`octave:13>' のように示した行は,実際に打ち 込む行を表し,入力後に改行キーを押します。Octaveは答えを返すか,グラフ を表示します。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
新しい行列を作成して変数に格納しておけば,それを後から参照することが できます。以下のコマンドを入力してください。
octave:1> A = [ 1, 1, 2; 3, 5, 8; 13, 21, 34 ] |
Octaveは,きちんと列をそろえて,行列を表示してくれるでしょう。コマンドの 終端にセミコロンをつけると,結果を画面に表示しない命令になります。 たとえば,
octave:2> B = rand (3, 2); |
このコマンドは,3行2列の行列を作るものです。その各要素には,0から1までの 範囲のランダムな数値がセットされます。
任意の変数の値を表示するためには,単に変数名を入力するだけです。たとえば,
行列 B に格納された行列を表示するためには,以下のように入力してくだ
さい。
octave:3> B |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Octaveには,行列演算を行うための便利な演算子表記ができます。たとえば,
行列aにスカラを乗じるには,以下のコマンドを入力してください。
octave:4> 2 * A |
ふたつの行列 A と B を乗じるには,以下のコマンドを入力して
ください。
octave:5> A * B |
また,以下のような行列の積
transpose (A) * A,
を計算するためには,以下のコマンドを入力してください。
octave:6> A' * A |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
連立一次方程式 Ax = b を解くためには,左除算演算子 `\'
を使用します:
octave:7> A \ b |
これは,概念的には
inv (a) * b,
とすることと等しいです。
しかし,左除算演算子を使用することによって,逆行列を計算することを避けま
す。
もし係数行列が特異ならば,Octaveは警告メッセージを表示し,最小ノルム解を 表示します。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Octaveは,以下の形式の非線形微分方程式を解くための組み込み関数を備えて います。
dx -- = f (x, t) dt |
この初期状態は,
x(t = t0) = x0 |
です。
Octaveにて,この形式の方程式を積分するためには,最初に関数の定義
f(x,t).
を提供しなければなりません。
これは簡単なことで,関数の本体をコマンドラインから入力することで遂行でき
ます。たとえば,以下のコマンドは,非線形微分方程式の面白いペアについて,
右辺の関数を定義しています。関数を入力している間は,入力が完成するまで待っ
ていることを示す異なるプロンプトになることに注意してください。
octave:8> function xdot = f (x, t) > > r = 0.25; > k = 1.4; > a = 1.5; > b = 0.16; > c = 0.9; > d = 0.8; > > xdot(1) = r*x(1)*(1 - x(1)/k) - a*x(1)*x(2)/(1 + b*x(1)); > xdot(2) = c*a*x(1)*x(2)/(1 + b*x(1)) - d*x(2); > > endfunction |
初期条件を入力しておきます。
x0 = [1; 2]; |
そして,出力時間を列ベクトルとして入力します(最初の出力時間は,上で入力 した初期条件に対応したものであることに注意してください)。
t = linspace (0, 50, 200)'; |
微分方程式の組を積分することは簡単です:
x = lsode ("f", x0, t);
|
この関数 lsode は通常微分方程式に対するLivermore Solverを使用して
います。これは,以下の文献に記述されています:
A. C. Hindmarsh, ODEPACK, a Systematized Collection
of ODE Solvers, in: Scientific Computing, R. S. Stepleman et al. (Eds.),
North-Holland, Amsterdam, 1983, pages 55-64.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
前の例の解を,グラフで表示するためには,コマンド
plot (t, x) |
を使用します。
もしGUI(グラフィカルユーザインターフェース;WindowsやX Window Systemなど)を使用しているならば,Ocatveは,プロットを表示するために自動的に別ウインドウを開きます。
いちどスクリーンに表示した図を保存するには,printコマンドを使用してください。 たとえば,
print -deps foo.eps |
このコマンドは,`foo.eps' という名前のファイルを新規作成し,現在の プロットを保存します。コマンド
help print |
と入力することにより,print コマンドに関するより多くのオプションに
ついての説明が表示され,これ以外の出力ファイル形式の一覧も提供します。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Octaveのプロンプトでは,Emacsあるいはviスタイルの編集コマンドにより, 以前に入力したコマンドの再呼び出し,編集,再実行ができます。標準状態の キー割り当てでは,Emacsスタイルのコマンドを使用します。たとえば,以前 のコマンドを呼び出すには,Control-p(以降は,単に C-p と表 記します)と打ち込みます。これを行うことにより,以前の入力行を問題なく 呼び戻すことになるでしょう。C-n は,次の入力行に進めることになり ます。C-b はカーソルを行末に移動させ,C-f はカーソルを行頭 に向けて移動させます。このほかにも,いくつもキーが定義されています。
コマンドライン編集機能についての完全な記述は,このマニュアルの Command Line Editing にあります。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Octaveは,豊富なヘルプ機能をもっています。印刷物として入手できるドキュ メントは,Octaveのプロンプトからも読むことができます。これは,両方の文書 形式とも同じ入力ファイルから作成されているからです。
よいヘルプを得るためには,まず,あなたが使いたいコマンドの名前を知る必要
があります。関数の名前は,必ずしも明らかではないかもしれません。しかし,
始めるための良い方法は,単に help と入力することです。このコマンド
は,すべての演算子,予約語,関数,組み込み変数および関数ファイルを表示す
るものです。別の手段は,lookfor 関数を使用してドキュメントを検索す
ることです。この関数は,Commands for Getting Help 節において解説してあります。
使用したい関数名が分かっているならば,helpコマンドの引数に名前を含めることによって,より多くのヘルプを得ることができます。たとえば,
help plot |
これは,plot 関数に対するヘルプ文章を表示します。
Octaveでは,長すぎて一画面に収まらない出力は,less や more
のようなページャに送ります。1行進めるには RET,1ページ進めるには
SPC,ページャを抜けるには q を押します。
Octave内から印刷マニュアルの完全な文章を読めるような,Octaveのヘルプ機能の 一部は,Infoと呼ばれる別のプログラムを使用します。Infoを呼び出すとき,Octave のマニュアルを含むメニュー型プログラムに入ります。Infoを使用するためのヘ ルプは,このマニュアルの Commands for Getting Help に記述してあります。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] |
This document was generated on December, 26 2007 using texi2html 1.76.