之前我們看到 Matlab 是一個超級的工程型計算器, 不僅如此,它還「認得」複數、向量、矩陣。 現在介紹幾種作用在矩陣上的幾種基本的線性代數函式。
隨便輸入一個矩陣
A = [1 2 3 4; 5 6 7 8; 4 3 2 1]這是一個三列、四行的矩陣,簡稱為三乘四矩陣, 我們稱其維度 (dimension) 為 3 x 4。 Matlab 用 size( ) 計算維度,例如
size(A)得到回應 3 4,這就是 A 的維度。
A 的階數 (rank)是指 A 的線性無關的行向量個數, 例如 A 有四個行向量,每個行向量有三個維度
第一行 | 第二行 | 第三行 | 第四行 |
---|---|---|---|
1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 |
4 | 3 | 2 | 1 |
rank(A)得到答案 2,表示這四個向量之中,最多只有兩個是線性無關的。 用眼睛觀察,看起來第一行和第二行是無關的。不妨用 Matlab 實驗看看:
rank( [1 2; 5 6; 4 3] )答案是 2,果然它們線性無關。 因此,第三行與前兩行是線性相關的,因此第三行可以寫成前兩行的線性組合。 換句話說,我們可以找到不全是 0 的常數 a1 和 a2, 使得
2*A(:,2) - A(:,1)
同理,A 的第四行也和前兩行是線性相關的,因此第四行可以寫成前兩行的線性組合。 換句話說,必定存在不全是 0 的常數 x1 和 x2, 使得
x1 + 2 x2 | = | 4 |
5 x1 + 6 x2 | = | 8 |
4 x1 + 3 x2 | = | 1 |
[1 2; 5 6; 4 3] \ [4; 8; 1]得到答案
-2.0000因此 x1 = -2 而 x2 = 3,讀者不妨再用 Matlab 驗算
3.0000
-2 * A(:,1) + 3 * A(:,2)看看結果是不是 A 的第四行?
根據線性代數理論,A 和 A' 的階數是一樣的。 換句話說,A 的列向量之中也只有 2 個線性無關向量。亦即
第一列 | 第二列 | 第三列 |
---|---|---|
1 | 5 | 4 |
2 | 6 | 3 |
3 | 7 | 2 |
4 | 8 | 1 |
rank( [1 2 3 4; 5 6 7 8] )而第三列與前兩列線性相關。因此第三列可以寫成前兩列的線性組合。 換句話說,可以找到不全是 0 的常數 x1 和 x2, 使得
x1 + 5 x2 | = | 4 |
2 x1 + 6 x2 | = | 3 |
3 x1 + 7 x2 | = | 2 |
4 x1 + 8 x2 | = | 1 |
[1 5; 2 6; 3 7; 4 8] \ [4; 3; 2; 1]得到答案
-2.2500請讀者自行驗證。
1.2500
如果 B 是一個方陣,則可以計算它的行列式。例如
B = [1 2 3; 4 5 6; 7 8 9]則 size(B) 是 3 3,它是個三乘三矩陣, 又稱為三階方陣。但是我們發現 rank(B) 是 2,所以 B 是「不滿階」的方陣, 因此它不可逆。由
det(B)計算得知 B 的行列式是 0,再度驗證它不可逆。
最後我們介紹 trace,就是矩陣之對角線和的意思。例如
trace(B)就是 1+5+9 也就是 15。即使不是方陣也可以有對角線和,例如
trace(A)就是 1+6+2 也就是 9。不管是不是方陣,一個矩陣的「對角線」元素就是 A(1,1), A(2,2), A(3,3), ... 這些元素。
習題
M = [1 2 3 4; 5 6 7 8; 4 3 2 1]則 M 的階數是 2,請寫出 M 的第一行如何成為倒數兩行的線性組合?
M = [1 2 3; 4 5 6; 7 8 9]則 M 的階數是 2,請寫出 M 的第三行如何成為前兩行的線性組合?
M = [1 2 3; 4 5 6; 7 8 9]則 M 的階數是 2,請寫出 M 的第一行如何成為後兩行的線性組合?
a*x + b*y = z求解 a 和 b
a*x + b*y = z求解 a 和 b