張智星 (Roger Jang) jang@mirlab.org http://mirlab.org/jang 清大資工系 多媒體檢索實驗室 MATLAB 程式設計進階篇 線性代數 張智星 (Roger Jang) jang@mirlab.org http://mirlab.org/jang 清大資工系 多媒體檢索實驗室
6-1 反矩陣與行列式 反矩陣: 一個矩陣 A 的反矩陣可表示成 ,滿足下列恆等式: 只有在 A 為方陣時, 才存在。 6-1 反矩陣與行列式 反矩陣: 一個矩陣 A 的反矩陣可表示成 ,滿足下列恆等式: 只有在 A 為方陣時, 才存在。 若 不存在,則 A 稱為 Singular
6-1 反矩陣與行列式 inv: MATLAB 的 inv 指令可用於計算反矩陣 範例6-1:inv01.m 6-1 反矩陣與行列式 inv: MATLAB 的 inv 指令可用於計算反矩陣 範例6-1:inv01.m 結果: B = 4.0000 -6.0000 4.0000 -1.0000 -6.0000 14.0000 -11.0000 3.0000 4.0000 -11.0000 10.0000 -3.0000 -1.0000 3.0000 -3.0000 1.0000 A = pascal(4); % 產生 4x4 的 Pascal 方陣 B = inv(A)
6-1 反矩陣與行列式 inv: 若矩陣 A 為 Singular (即其反矩陣不存在),則在使用 inv 指令時,會產生警告訊息 6-1 反矩陣與行列式 inv: 若矩陣 A 為 Singular (即其反矩陣不存在),則在使用 inv 指令時,會產生警告訊息 範例6-2:inv02.m 結果: A = [1 2 3; 4 5 6; 7 8 9]; B = inv(A)
6-1 反矩陣與行列式 det: 欲計算矩陣 A 的行列式,可用 det 指令 範例6-3:det01.m 結果: d = 29 6-1 反矩陣與行列式 det: 欲計算矩陣 A 的行列式,可用 det 指令 範例6-3:det01.m 結果: d = 29 A = [1 3 4; -3 -4 -1; 2 2 5]; d = det(A)
6-1 反矩陣與行列式 由 Crammer Rule 可知矩陣 A 的行列式和反矩陣有下列關係式: 6-1 反矩陣與行列式 由 Crammer Rule 可知矩陣 A 的行列式和反矩陣有下列關係式: 其中 代表 A 的行列式, 代表 A 的 Adjoint Matrix
6-1 反矩陣與行列式 若 A 為整數矩陣,則 乘上 必為整數矩陣,可驗証如下: 範例6-4:det02.m 結果: 6-1 反矩陣與行列式 若 A 為整數矩陣,則 乘上 必為整數矩陣,可驗証如下: 範例6-4:det02.m 結果: A = [1 3 4; -3 -4 -1; 2 2 5]; det(A)*inv(A)
6-1 反矩陣與行列式 若將 inv(A) 以有理形式 (Rational Format,即分子和分母都是整數的分數)來表示,亦可察覺出它和行列式的關係 從這裡可以很明顯的看出,inv(A) 中每個元素的分母值,就是 det(A) 範例6-5:det03.m 結果: A = [1 3 4; -3 -4 -1; 2 2 5]; format rat % 以有理形式表示數值 inv(A) format short % 改回預設的數值表示形式
6-2 固有值與固有向量 固有值分解(Eigenvalue Decomposition): 6-2 固有值與固有向量 固有值分解(Eigenvalue Decomposition): 一個方陣 A 的固有向量(Eigenvector) 與固有值 (Eigenvalue) 的關係式如下: 上式可化簡成 由於 x 不是一個零向量,因此 A 必須是 Singular,上式才會有解。當 是 Singular 時,其行列式為零:
6-2 固有值與固有向量 若 A 為 n×n 的矩陣,則上式為 的 n 次多項式 ,代表 將有 n 個解 ,…, ,滿足下列關係式: 或可寫成矩陣形式: 其中 如果 X-1 存在,則由上式可得
6-2 固有值與固有向量 eig: MATLAB 的 eig 指令可用於計算矩陣的固有值及固有向量。若只想計算固有值時,可輸入如下: 6-2 固有值與固有向量 eig: MATLAB 的 eig 指令可用於計算矩陣的固有值及固有向量。若只想計算固有值時,可輸入如下: 範例6-6:eig01.m 結果: A = magic(5); lambda = eig(A)
6-2 固有值與固有向量 若要同時計算固有值及固有向量,須提供兩個輸出引數 範例6-7:eig02.m 結果: A = magic(5); 6-2 固有值與固有向量 若要同時計算固有值及固有向量,須提供兩個輸出引數 範例6-7:eig02.m 結果: A = magic(5); [X, D] = eig(A)
6-3 奇異值與奇異向量 奇異值分解: 一個矩陣 A 與其奇異值(Singular Value) 及奇異向量(Singular Vectors)u 與 v 之間存在下列的關係式: 若將所有的行向量 u 並排成矩陣 U,所有的行向量 v 並排成矩陣 V。則上式可寫成: 其中 Σ 的主對角線即是對應的 值,其餘元素為零
6-3 奇異值與奇異向量 若 A 的維度是 m×n,則 U、Σ、V 的維度分別是 m×m、m×n 以及 n×n。一般而言,U 和 V 均是 Unitary 矩陣(即矩陣內的行向量均兩兩相互垂直,且行向量的長度均為 1),滿足下列條件: 因此矩陣 A 可寫成: 上式稱為奇異值分解(Singular Value Decomposition)
6-3 奇異值與奇異向量 svd: svd 指令可用於計算矩陣的奇異值及奇異向量 範例6-8:svd01.m 結果: 6-3 奇異值與奇異向量 svd: svd 指令可用於計算矩陣的奇異值及奇異向量 範例6-8:svd01.m 結果: A = [3 5; 4 7; 2 1; 0 3]; [U, S, V] = svd(A)
6-3 奇異值與奇異向量 若 A 為 m×n 的矩陣且 m >> n,則我們可在原先的 svd 指令加入另一個輸入引數 0,使其產生的 U 及 S 矩陣具有較小的維度 範例6-9:svd02.m 結果: A = [3 5; 4 7; 2 1; 0 3]; [U, S, V] = svd(A, 0)
6-4 聯立線性方程式 聯立線性方程式: 線性代數中最重要的問題,即是解決聯立線性方程式。一組線性方程式可用矩陣表示如下: AX = B 其中 A、B 是已知矩陣,而 X 則是未知矩陣
聯立線性方程式之可能情況 聯立線性方程式: 為簡化起見,我們可以假設 A、X、B 的維度分別是 m×n、n×1、m×1,其中 m 代表方程式的數目,n 則是未知數的數目,可分成三種情況: 若 m = n,則方程式的個數和未知數的個數相等,通常會有一組解滿足 AX = B 若 m > n,則方程式的個數大於未知數的個數,通常無一解可滿足 AX = B,但我們可轉而求取最小平方解(Least-Squares Solution)X,使得 為最小值 若 m < n,則方程式的個數小於未知數的個數,通常有無限多組解可滿足 AX = B,我們可尋求一基本解(Basic Solution)X,使得 X 最少包含 m-n 個零元素
斜線和反斜線運算 斜線和反斜線運算: MATLAB 提供一個反斜線運算(Back Slash Operator,即「\」)使得 X=A\B 能滿足上述三種情況 反斜線運算又稱「左除」(Left Division) MATLAB 也提供了斜線運算(Slash Operator,即「/」) 斜線運算又稱「右除」(Right Division) 可用於對付 XA = B 的方程組。
斜線和反斜線運算:記憶法 整理:MATLAB 常用的數學函數 在上表中,欲解 AX = B 或 XA = B,我們可以想像在等號兩邊各除以 A,並依 A 的位置分別取用「左除」或「右除」
範例:通過三點的二次曲線 斜線和反斜線運算: 範例6-10:leftDiv01.m 結果: X = 1.0000 2.0000 3.0000 此例代表通過 (1, 6), (2, 11), (3, 18) 的二次曲線為 A = vander(1:3); B = [6; 11; 18]; X = A\B >> A*X – B Ans = 0 0 0
範例:最小平方解 斜線和反斜線運算: 當 m > n 時,「左除」可以找到最小平方解 範例6-11:leftDiv02.m 結果: X = 1.0000 1.0000 在上例中,我們有 3 個方程式,但卻只有 2 個未知數,此 3 個方程式在 x-y 平面並未交於一點,故嚴格地說,此方程組無解,而 MATLAB「左除」找到的 X 為最小平方解,使得 為最小 A = [2 -1; 1 -2; 1 1]; B = [2; -2; 1]; X = A\B
範例:基本解 斜線和反斜線運算: 當 m < n 時,「左除」可以找到基本解 範例6-12:leftDiv03.m 結果: X = -3.0000 0 3.3333 基本解至少有 n-m 個零。 A = [1 2 3; 4 5 6]; B = [7; 8]; X = A\B
使用「左除」進行最小平方法 問題:在平面上找出一點 P,使得 P 到下列三條直線的距離平方和為最小: 解法:
6-5 本章指令彙整 與線性代數相關的函式,彙整如下:
6-5 本章指令彙整 與線性代數相關的函式,彙整如下:
6-5 本章指令彙整 與線性代數相關的函式,彙整如下: