微分方程

Octave 有內建一些函數專門用於解非線性的微分方程式,要讓 Octave 解這樣的微分方程式,首先必須定義此函數 f(x, t),定義方式很簡單,基本上就是直接輸入函數內容即可:

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

設定起始條件(initial condition):

x0 = [ 1; 2 ];

設定輸出的時間:

t = linspace (0, 50, 200)';

使用 Octave 解此微分方程式:

x = lsode ("f", x0, t);
lsode() 函數是 Livermore Solver for Ordinary Differential Equations 的縮寫。

繪圖

在 Octave 中最簡單的繪圖函數就是 plot() 函數,例如畫出 sin() 函數的圖形:

a = 1:0.1:8;
figure(1);
plot(a, sin(a))

畫出的圖形為

octave-sin-plot

接續前一節的範例,要將微分方程式的解畫出來可以使用

figure(2);
plot (t, x)

畫出的圖形為

octave-differential-equation-plot

若是在圖形介面之下,Octave 會開啟另一個繪圖視窗顯示圖形,若要將此顯示在螢幕上的圖形儲存至檔案中,可以使用 print 指令:

print "-S500,400" -dpng output.png

此指令會將目前顯示在螢幕上的圖形輸出成 500400 像素的 png 圖檔儲存至 output.png 檔案中。關於更進一步的繪圖功能可以參考繪圖。

命令列操作

在 Octave 中可以使用 Ctrl + p 鍵顯示上一個執行過的指令,Ctrl + n 顯示下一個指令,而 Ctrl + bCtrl + f 可以左右移動輸入游標進而鍵編輯指令內容,在大部分的系統上亦可以使用上下左右鍵來操作,詳細的操作方式請參考操作環境。

線上說明

Octave 有非常完整的說明文件,要查詢某一個函數的使用方法,可使用 help,例如查詢 plot 函數的使用方法:

help plot

有時候 Octave 所輸出的說明文件太多,所有的文件無法一次顯示在螢幕上時,按下 Enter 鍵可以顯示下一行,按下空白鍵可以顯示一頁,在部份的系統中亦可以使用上下鍵瀏覽,若要離開則按下 q 鍵。

除了 help 之外亦可以使用 doc 查看線上參考手冊,

doc

若要搜尋線上文件,可使用 lookfor 指令,詳細的說明請參考操作環境中的線上說明文件。