10.1 線性矩陣應用指令
線性代數以矩陣表示,會有諸多特殊名稱,在應用上相當普遍,有必要進行瞭解。有些部份在前面之說明中業已經提到,但在這裡則特別另加說明。
行列式與反矩陣
在工程數學或線性代數中,行列式與反矩陣是常用的矩陣特性。尤其在討論聯立方程式之解的過程中更常用到。反矩陣有如一個矩陣的倒數,一個方矩陣若為A,則其反矩陣可以A-1表示,而其與原矩陣之關係為:
AA-1=I A-1A=I
其中,I稱為單位矩陣(Identity matrix),其大小為方矩陣,而對角線元素值均為1。在MATLAB中有一個指令稱為eye,可以用以建立這種單位矩陣。例如:
eye(4)
ans =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
矩陣A之反矩陣以inv(A)表示,有如一個數之倒數一樣。例如,設A為一魔術方陣magic(4):
A=rand(4)
A =
0.9355 0.0579 0.1389 0.2722
0.9169 0.3529 0.2028 0.1988
0.4103 0.8132 0.1987 0.0153
0.8936 0.0099 0.6038 0.7468
其反矩陣即為inv(A)表示,其結果設為B,則:
B=inv(A)
B =
-1.5054 3.6825 -1.4860 -0.4013
5.3255 -7.0376 3.9063 -0.1473
-20.0637 22.9531 -8.5486 1.3769
17.9531 -22.8718 8.6384 0.7080
根據定義,原矩陣與其反矩陣相乘應等於單位矩陣,且相乘之順序不拘,亦即:A*B與B*A均應等於I:
B*A
ans =
1.0000 0.0000 0.0000 -0.0000
0.0000 1.0000 -0.0000 0.0000
-0.0000 0.0000 1.0000 -0.0000
-0.0000 0.0000 -0.0000 1.0000
上述結果即為單位矩陣,可以試試以A*B,其結果應相同。此處A、B及I均為方矩陣,且A矩陣之行列式值或det(A)需不得為零,否則其反矩陣不能存在。此種矩陣不存在的情形,稱為奇異矩陣(singular)。一個矩陣若具奇異特性,則其行列值為零,例如:
D=magic(4)
D =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
d=det(D)
d = 0
行值式之值為零,表示其反矩陣不存在,故即使用inv(D)指令也會產生一些數字,但其結果並不可靠,而且會有一些警告訊息出現,例如:
dd=inv(D)
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 1.306145e-017.
dd =
1.0e+014 *
0.9382 2.8147 -2.8147 -0.9382
2.8147 8.4442 -8.4442 -2.8147
-2.8147 -8.4442 8.4442 2.8147
-0.9382 -2.8147 2.8147 0.9382
上述結果之值也變成很大,顯然不是正確的值。不信的話可以用AA-1=I, A-1A=I 印證一下(在此至少證實一下「垃圾進拉圾出(Gabage in, gabage out」這句名言)。
所以,某矩陣是否為奇異矩陣,可以使用det進行檢驗。其值若為零則屬奇異矩陣。
特徵值及特徵向量(Eigen Value & Eigen Vector)
線性代數中,最重要的工具是利用特徵值與特徵向量(Eigenvalues & Eigenvectors)來說明方矩陣之多項式特性,此兩者均為方型矩陣。利用矩陣之操作,可以作出相等效果之矩陣等式,但型式更為簡化,或容易得解。設特徵矩陣值與特徵向量其分別為D與V,則其與原矩陣A之關係如下:
A * V= V * D
假設有一個方矩陣A係由亂數函數產生,其V與D可以利用eig(A)指令如下求得:
A=rand(3);
[V, D]= eig(A)
A =
0.4103 0.3529 0.1389
0.8936 0.8132 0.2028
0.0579 0.0099 0.1987
V =
0.4053 0.6812 0.0680
0.9136 -0.7124 -0.4004
0.0319 -0.1688 0.9138
D =
1.2167 0 0
0 0.0068 0
0 0 0.1987
A*V
ans =
0.4931 0.0046 0.0135
1.1116 -0.0048 -0.0796
0.0388 -0.0011 0.1816
V*D
ans =
0.4931 0.0046 0.0135
1.1116 -0.0048 -0.0796
0.0388 -0.0011 0.1816
由上述的演算,得知A*V及V*D是一樣的。eig()之指令尚有另外一種型式,即:
[V,D] = eig(A,B)
其中,AB分別為兩矩陣,D為對角矩陣特徵值,而V為對應之特徵向量。其關係如下:
A * V = B * V * D
其使用範圍可以參考線性代數的內容。
沒有留言:
張貼留言