像是在 1-2 中講過的, Octave 建構向量或是矩陣的方法就是用中括號包起來的一串數字,而矩陣中的元素以逗號或是空白分隔,每個 row 之間已分號分隔。像是這樣
A=[0 1 3 -3; 2 4 5 -1;4 -2 3 5]
就可以得到矩陣了
A =
0 1 3 -3
2 4 5 -1
4 -2 3 5
然後也跟 1-2 時一樣,矩陣內部元素也是有編號的,像是
$A =
\begin{bmatrix}
a_{1,1} & a_{1,2} & ... & a_{1,n}\\
a_{2,1} & a_{2,2} & ... & a_{2,n}\\
\vdots & \vdots & \ddots & \vdots\\
a_{m,1} & a_{m,2} & ... & a_{m,n}\\
\end{bmatrix}$
其中,在第 i 個 row,第 j 個 column 的元素 $a_{i,j}$,便是以 A(i,j)
來表示的。
像是剛剛上面那個例子中的矩陣 A ,他的 A(2,3)
的值就是 5 。
另外,如果想取出矩陣 A 的第 i 個 row vector,便可以用 A(i,:)
,
如果想取出矩陣 A 的第 j 個 column vector,便可以用 A(:,j)
舉例來說:
A = [0 1 3 -3; 2 4 5 -1;4 -2 3 5]
a = A(2,3)
v = A(:,3)
u = A(2,:)
A =
0 1 3 -3
2 4 5 -1
4 -2 3 5
a = 5
v =
3
5
3
u =
2 4 5 -1
至於矩陣相乘、矩陣相加減、矩陣的常數乘法都很直觀。
A = [0 1 3; 2 4 5;4 -2 3]
B = [3 1 3; 2 9 7;4 -6 3]
C = A + B
D = 5 * A
E = A * B
A =
0 1 3
2 4 5
4 -2 3
B =
3 1 3
2 9 7
4 -6 3
C =
3 2 6
4 13 12
8 -8 6
D =
0 5 15
10 20 25
20 -10 15
E =
14 -9 16
34 8 49
20 -32 7
當你打完一個矩陣,但是忘記它的尺寸 (size) 的時候,你可以在 Octave 裡查詢,只要使用
size()
就可以
A = [0 1 3 8 1; 2 4 5 1 0;4 -2 3 6 7]
size(A)
A =
0 1 3 8 1
2 4 5 1 0
4 -2 3 6 7
ans =
3 5
如何建構 zero matrix 及 identity matrix
所謂的零矩陣(zero matrix),也就是所有元素都是 0 的矩陣,一個 $m \times n$ 的 zero matrix 即為
zeros(m,n)
,
而一個 $n \times n$ 的 zero matrix 可以寫成
zeros(n,n)
或者是簡單的
zeros(n)
都可以。
A = zeros(2,4)
B = zeros(3)
A =
0 0 0 0
0 0 0 0
B =
0 0 0
0 0 0
0 0 0
所謂的 identity matrix,根據我們課本上的定義,是一個 $n\times n$ 矩陣,其中主對角線 (左上到右下) 上的元素為 1 ,其餘的元素為 0 。
在 Octave 上會用
eye(n)
表示 $n\times n$ identity matrix 。
不過 Octave 也支援使用
eye(m,n)
形式的矩陣。同學們可以自己用來乘上其他矩陣試試。
A = eye(3)
B = eye(2,4)
C = eye(4,2)
A =
Diagonal Matrix
1 0 0
0 1 0
0 0 1
B =
Diagonal Matrix
1 0 0 0
0 1 0 0
C =
Diagonal Matrix
1 0
0 1
0 0
0 0
如何建構矩陣的 transpose matrix
一個矩陣的 transpose matrix 就是把它的行列互換,而在 Octave 裡的表示方式就是使用
transpose( )
,或是當矩陣裡的係數均為實數的時候,可以也可以只幫矩陣加上一個
'
A = [1 2 3 4]
B = transpose(A)
C = A'
A =
1 2 3 4
B =
1
2
3
4
C =
1
2
3
4
Ch 1 - 4
找尋矩陣的 reduced row-echelon form (rref)
給定矩陣之後,只要使用
rref()
即可找出矩陣的 reduced row-echelon form。像是 1-4 的習題第 5 題。只要輸入
A = [-1 3 0 1 4;1 -3 0 0 -1;2 -6 2 4 0;0 0 1 3 -4]
rref(A)
就可以輕鬆算出答案了。
A =
-1 3 0 1 4
1 -3 0 0 -1
2 -6 2 4 0
0 0 1 3 -4
ans =
1 -3 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
不過求聯立方方程組的解,這部分就還是要麻煩各位同學自行判斷了。
矩陣的 inverse 是使用
inv()
像是課本 1-5 的例子 4,就是這樣計算的:
A = [ 1 3 -2;2 5 -3; -3 2 -4]
inv(A)
就可以輕鬆算出答案了。
A =
1 3 -2
2 5 -3
-3 2 -4
ans =
14 -8 -1
-17 10 1
-19 11 1
或者是利用 rref 的性質
A = [ 1 3 -2;2 5 -3; -3 2 -4]
B = [ A, eye(3)]
rref(B)
也可以看出 A 的 inverse matrix 就出現在 rref(B) 的右半側。
A =
1 3 -2
2 5 -3
-3 2 -4
B =
1 3 -2 1 0 0
2 5 -3 0 1 0
-3 2 -4 0 0 1
ans =
1 0 0 14 -8 -1
0 1 0 -17 10 1
0 0 1 -19 11 1
不過像是課本 1-5 例題 2 題這種給定 $A\vec{x}=\vec{b}$ 要求 $\vec{x}=A^{-1}\vec{b}$ 的題目,我們有兩種做法:
首先是確認我們的矩陣是否有 inverse matrix,確定好了之後,我們可以用
inv(A) * b
或者是
A \ b
來求解。
A = [2 9;1 4]
b = [-5; 7]
v = A \ b
u = inv(A) * b
看得出來,這兩種算法得到的答案是一樣的。
A =
2 9
1 4
b =
-5
7
v =
83
-19
u =
83
-19