Octave を使う - Octave 入門
三好 明

Octave を使う - Octave 入門

GNU Octave は John W. Eaton らによって開発された 科学技術計算用の高級プログラミング言語 (フリーウェア) です.   この解説は 2018 年 3 月 現在の Octave 4.2.2 に基づいています.   改良やアップデートによって最新のバージョンと異なる場合がありますが, その場合はご容赦下さい.

Octave の入手とインストール

マニュアル

起動と終了

インタラクティブな使い方

スクリプトの実行

行列・ベクトル

微分方程式

  1. 解くべき微分方程式を関数 f として定義します.
    >> function xdot = f(x, t)↵
      xdot(1) = -5 * x(1);↵
      xdot(2) =  5 * x(1) - 1 * x(2);↵
      xdot(3) =             1 * x(2);↵
    endfunction↵
  2. 初期条件 x0 と出力時間 t を設定します.   linspace は一定間隔の数値の並び (横ベクトル) を生成する関数です.
    >> x0 = [1; 0; 0];↵
    >> t = linspace(0, 3, 31)';↵
  3. lsode を呼び出して数値解を計算します.
    >> xout = lsode("f", x0, t);↵
  4. 計算結果を, 第一列に時間 t を追加して出力します.   format は出力書式を設定する関数です.   [t, xout] は縦ベクトル t と同じ行数の行列 xout を連結した行列です.
    >> format short;↵
    >> [t, xout]↵
    ans =
       0.00000   1.00000   0.00000   0.00000
       0.10000   0.60653   0.37288   0.02059
         :         :         :         :
       3.00000   0.00000   0.06223   0.93777
  5. 計算結果をプロットします.  
    >> plot(t, xout)↵

非線形方程式

  1. 解くべき非線形方程式が f(x) = 0 となるように, 関数 f を定義します.
    >> function y = f(x)↵
    >   y = 1e13 * x^(-1.39) * exp(-17921/x) - 1;↵
    > endfunction↵
  2. 解の初期推定とともに fsolve を呼び出して解を得ます.
    >> [x, fval, info] = fsolve("f", 800)↵
    x =  873.34
    fval = 9.4820e-007
    info =  1

例:Gray-Scott モデル