針對 Octave 初學者的入門教學,包含基本的 Octave 使用方式、簡單的數值運算、向量與矩陣、線性聯立方程式、微分方程式、繪圖與其他常用的功能。
開啟 Octave
首先開啟 Octave 軟體(若您的系統尚未安裝 Octave 軟體,請參考下載與安裝 Octave),若您的系統是 Linux 則直接在終端機(terminal)下執行 octave 指令即可:
octave
若是 Windows 則在安裝完成後桌面上應該就會有 Octave 的啟動圖示,或是在開始功能表中也會有。
Octave 在開啟時會出現一些訊息,首先是版權宣告與一些注意事項,接著最後一行 octave:1> 是 Octave 的提示符號,從這裡可以輸入指令操作 Octave,冒號之後的數字是標示輸入的指令編號,從 1 開始依序遞增。若要離開 Octave 則輸入 quit 或 exit 按下 Enter 鍵。在本教學中的程式碼都可以直接複製後貼在這裡執行,若需要複製與貼上的功能,可以點選視窗左上角的圖示即會出現選單,若要複製命令列中的文字,可先使用標記功能將文字選取後再複製(或是選取後點滑鼠右鍵):

要將程式碼貼在 Octave 中,除了使用選單的功能外,亦可以將程式碼複製後,在 Octave 視窗中點滑鼠右鍵貼上。
簡單的計算
Octave 最簡單的使用方式就是把 Octave 當作計算機使用,包含加減乘除(+、-、*、/)與指數(^)等,都可以直接用在 Octave 中,操作的方式就直接在 Octave 中的提示符號(Octave 預設的提示符號是 octave:##>,## 是行的編號)之後輸入指令,再按下 Enter 鍵,Octave 就會執行使用者所輸入的指令,並傳回結果,例如要計算 12 加 3 乘上 7,則在提示符號後輸入:
12 + 3 * 7
輸入完之後,按下 Enter 鍵,Octave 就會執行使用者所輸入的指令,輸出為
ans = 33
Octave 預設會將結果儲存在 ans 變數之中。
Octave 亦可以使用指數,例如計算 2 的 3 次方:
2 ^ 3
輸出為 ans = 8
括弧 () 亦可以在 Octave 中使用:
(1 + 2)^2
輸出為 ans = 9
亦可使用變數,例如將變數 a 指定為 10:
a = 10
使用變數做各種運算:
b = (a + 10) * 2
c = b / 2
除了一般的運算之外,Octave 也提供了很多數學上基本的函數:
cos():Cosine of an anglesin():Sine of an angletan():Tangent of an angleexp():Exponential functionlog():Natural logarithmlog10():Logarithm to base 10sinh():Hyperbolic sinecosh():Hyperbolic cosinetanh():Hyperbolic tangentacos():Inverse cosineacosh():Inverse hyperbolic cosineasin():Inverse sineasinh():Inverse hyperbolic sineatan():Inverse tangentatan2():Two-argument form of inverse tangentatanh():Inverse hyperbolic tangentabs():絕對值sign():Sign of the number(-1 或 +1)round():Round to the nearest integerfloor():Round down(towards minus infinity)ceil():Round up(towards plus infinity)fix():Found towards zerorem():Remainder after integer divisionsqrt():平方根。
例如:
exp(1)
ans = 2.7183
exp( (4.5 - 2.1) / sqrt(2 * 5.6) )
ans = 2.0486
一般工程計算機可以處理的數學運算,Octave 都可以透過這些內建的數學函數來處理。
向量與矩陣
在 Octave 中要建立一個矩陣,可以使用中括弧,矩陣的元素以逗號分別隔,每個列(row)之間則以分號分隔,例如要產生一個 2 乘 3 的矩陣:
A = [ 1, 6, 2; 3, 5, 8 ]
輸出為
A =
1 6 2
3 5 8
若要存取向量或陣列中的元素,可以使用索引的方式,使用方法就是以小括弧將元素的索引包起來,例如要取出矩陣 A 裡面第一列第二行的元素:
A(1, 2)
輸出為 ans = 6
在 Octave 中,若是在指令後面加入分號(;),就不會自動將結果輸出:
B = rand(3, 2);
所產生的 B 是一個 3 乘以 2 的矩陣,其每個元素都介於 0 與 1 之間。
若要顯示任何變數的內容,直接輸入其變數名稱即可,例如要查看矩陣 B 的內容:
B
矩陣運算是 Octave 最擅長的部份之一,例如將矩陣乘上一個倍數:
2 * A
矩陣相乘:
A * B
矩陣轉置:
A'
關於更詳細的矩陣使用說明,請參考數值資料。
線性聯立方程式
在 Octave 要解線性聯立方程式,可以使用反斜線運算子(\),例如要解下列聯立方程式:
以矩陣表示:
\[ Ax=b \]其中
\[ A = \left( \begin{array}{clr} 1 & 2 \\ 3 & 5 \end{array}\right),\quad x = \left( \begin{array}{clr} x_1 \\ x_2 \end{array}\right),\quad b = \left( \begin{array}{clr} 3.5 \\ 1.6 \end{array}\right) \]接下來以 Octave 來解此方程式,首先設定 A 與 b
A = [ 1, 2; 3, 5 ]
b = [ 3.5; 1.6 ]
接著以反斜線運算子解此聯立方程式:
x = A \ b
輸出為
x =
-14.3000
8.9000
所得到的解為
$$ x = \left( \begin{array}{clr} x_1 \\ x_2 \end{array}\right) = \left( \begin{array}{clr} -14.3 \\ 8.9 \end{array}\right) $$
A \ b等同於A的反矩陣乘以b,但是可以避免直接計算A的反矩陣。
微分方程
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))
畫出的圖形為

接續前一節的範例,要將微分方程式的解畫出來可以使用
figure(2);
plot (t, x)
畫出的圖形為

若是在圖形介面之下,Octave 會開啟另一個繪圖視窗顯示圖形,若要將此顯示在螢幕上的圖形儲存至檔案中,可以使用 print 指令:
print "-S500,400" -dpng output.png
此指令會將目前顯示在螢幕上的圖形輸出成 500 乘 400 像素的 png 圖檔儲存至 output.png 檔案中。關於更進一步的繪圖功能可以參考繪圖。
命令列操作
在 Octave 中可以使用 Ctrl + p 鍵顯示上一個執行過的指令,Ctrl + n 顯示下一個指令,而 Ctrl + b 與 Ctrl + f 可以左右移動輸入游標進而鍵編輯指令內容,在大部分的系統上亦可以使用上下左右鍵來操作,詳細的操作方式請參考操作環境。
線上說明
Octave 有非常完整的說明文件,要查詢某一個函數的使用方法,可使用 help,例如查詢 plot 函數的使用方法:
help plot
有時候 Octave 所輸出的說明文件太多,所有的文件無法一次顯示在螢幕上時,按下 Enter 鍵可以顯示下一行,按下空白鍵可以顯示一頁,在部份的系統中亦可以使用上下鍵瀏覽,若要離開則按下 q 鍵。
除了 help 之外亦可以使用 doc 查看線上參考手冊,
doc
若要搜尋線上文件,可使用 lookfor 指令,詳細的說明請參考操作環境中的線上說明文件。