簡單介紹線性代數的最小平方法以及該方法所涉及到的部分,包含:
餘因子矩陣(cofactor matrix)、克拉瑪公式(Cramer's rule)。




最小平方法 (least squares)

最小平方法 是對過度確定系統以遞迴的方式求得近似解的標準方法,所謂的過度系統是指系統中,存在比未知數更多的方程式。

利用最小平方法,可以簡便地求得未知的數據,使得這些數據與實際數據間的誤差平方和為最小。

最小平方法的問題分成兩種:線性(普通)的最小平方問題、非線性的最小平問題。
取決於在所有未知數中的殘差是否為線性。
線性的最小平方問題有一個封閉形式的解決方案,而非線性的問題通常經過迭代來解決,在每次迭代的過程中,系統為線性近似,因此這兩種情況下的核心演算法是相同的。

舉例來說,如果得到四個數據點 (x,y): (1,6)、(2,5)、(3,7)、(4,10):


而希望可以找出與這四個點最匹配的直線:y = β1 + β2x,也就是:
β1 + 1β2 = 6
β1 + 2β2 = 5
β1 + 3β2 = 7
β1 + 4β2 = 10


採用最小平方法來求得β1, β2 的值,就是使等號兩邊的平方差為最小,也就是找出以下函數的最小值:
S(β12) = [ 6 - (β1 + 1β2)]2 + [ 5 - (β1 + 2β2)]2 + [ 7 - (β1 + 3β2)]2 + [ 10 - (β1 + 4β2)]2

這個最小值可以透過對 S(β12) 分別求 β1 和 β2 的偏導數,並令它們等於 0 後,得到:

如此得到了兩個二元一次方程式,可以解出:
β1 = 3.5
β2 = 1.4


也就是說直線 y = 3.5 + 1.4x 是最佳解。




線性函數模型

以線性函數模型來舉例,最簡單的線性方程式是 y = b0 + b1t,它的最小誤差平方和以矩陣表示為:

也就是求 Σ(b0 + ti b1 - yi)2 的最小值。

透過分別對 b0 及 b1 作偏微分,並令其等於 0,可以得到:
n b0 + Σ ti b1 = Σyi (同除2)
Σti b0 + Σ ti2 b1 = Σyi ti (同除2)


接著利用克拉瑪公式,可以求得 b0 及 b1
b1 = [n Σyiti - Σyi Σti] / [n Σ(ti)2 - (Σti)2]
b0 = [Σyi Σ(ti)2 - Σti Σyiti] / [n Σ(ti)2 - (Σti)2]


令 1/n Σti 為 t 的算術平均值, 1/n Σyi 為 y 的算術平均值,再經過化簡(上、下消去 n),可以得到:

為了方便計算,可以以如下方式表示 b1,與上式的算式是相等的:





簡單線性模式的實例

選定 10 艘戰艦,尋找它們的長度與寬度的關係,其長、寬資料如下:


可以得到 t 的平均值為 Σti / n = 1678 / 10 = 167.8
y 的平均值為 Σyi / n = 184.1 / 10 = 18.41
再參考上述 b1 的公式:

可以得到戰艦的長度每變化 1 公尺,則寬度便會變化 16 公分,再接著計算 b0 的值:





餘因子矩陣(cofactor matrix)

對一個 n × n 矩陣 A,在 (i,j) 的子行列式(餘子式) Mij 定義為刪掉 A 的第 i 橫列與第 j 縱行後得到的行列式。
令 Cij := (-1)i+j Mij,稱為 A 在 (i, j) 的餘因子(代數餘子式)。
矩陣cof(A) := (Cij)i,j 稱作 A 的餘因子矩陣(餘子矩陣)。
餘因子矩陣的轉置稱為伴隨矩陣,記為 adj(A)。

以三階方陣為例:
   | b11   b12   b13 |
   | b21   b22   b23 |
   | b31   b32   b33 |

其子行列式 M23 為將 矩陣B 去掉第二列、第三行之行列式:
   | b11   b12  |
   | ○    |
   | b31   b32  |

所以 M23 為:
   | b11   b12 |
   | b31   b32 |

= b11 b32 - b31 b12

所以餘因子 C23 = (-1)2+3(M23) = (-1)5(b11 b32 - b31 b12) = b31 b12 - b11 b32

若 矩陣A 為 n x n 矩陣,則其行列式 det(A),可以其餘因子表示,稱為餘因子分解。

對 矩陣A 的第 j 行進行分解:
det(A) = a1jC1j + a2jC2j + a3jC3j + ... + anjCnj

對 矩陣A 的第 i 列進行分解:
det(A) = ai1Ci1 + ai2Ci2 + ai3Ci3 + ... + ainCin

古典伴隨矩陣(classical adjoint matrix) 是餘因子矩陣的轉置矩陣,可以用來計算逆矩陣:
A-1 = ( 1 / det(A) ) adj(A)

餘因子矩陣:
   | C11   C12   ...  C1n |
   | C21   C22   ...  C2n |
   | ...   ...  ...  ... |
   | Cn1   Cn2   ...  Cnn |

轉置後,得到的 古典伴隨矩陣 為:
   | C11   C21   ...  Cn1 |
   | C12   C22   ...  Cn2 |
   | ...   ...  ...  ... |
   | C1n   C2n   ...  Cnn |


在 克萊姆法則 中,可以用餘因子寫成下述形式:
cof(A)TA = Acof(A)T = det(A)In

當 det(A) != 0 時, A 的逆矩陣為:
A-1 = cof(A)T / det(A)




克萊姆法則,又稱為克拉瑪公式(Cramer's rule)

一個線性方程式可以用矩陣與向量來表示:
A x = c
其中 矩陣A 為 n x n 方陣,向量x 為長度 n 的行向量,向量c 同樣是長度 n 的行向量。

根據 克拉瑪公式,如果 A 是一個可逆矩陣(也就是 det(A) != 0),則 x = (x1, x2, ... ,xn)T有解,其解為:
xi = det(Ai) / det(A)

而 Ai 則是被 行向量c 取代 第 i 行 的 矩陣A ,為了方便,通常以 Δ 來表示 det(A),以 Δi 來表示 det(Ai),所以上式可以寫為:
xi = Δi / Δ

如果 矩陣A 為一個包含系數的 n x n 矩陣,則:
Adj(A)A = det(A)I

所以 A 的反矩陣為:
Adj(A) / det(A)

運用克拉瑪公式 可以很有效地計算以下方程式:
ax + by + cz = j
dx + ey + fz = k
gx + hy + iz = l


使用矩陣表示為:

當矩陣為可逆矩陣時, x, y, z 的值可以由克拉瑪公式計算,分別為:





微分幾何的應用

考慮兩條等式:
F(x,y,u,v) = 0
G(x,y,u,v) = 0

其中 u, v 是需要考慮的變量,並且它們不相關,可以定義:
x = X(u,v)
y = Y(u,v)

則可以利用克萊姆法則,計算出:


首先分別計算 F, G, x, y 的導數:


將 dx 和 dy 代入 dF 和 dG,可以得到:


又因為 u 和 v 不相關,所以 du 和 dv 的係數都要等於 0,所以等式中的係數可以寫成:


接著運用克萊姆法則,可以得到:


以兩個 Jacobian Matrix 來表示:


運用類似的方式,也可以找到:





Reference

wiki - 最小平方法

wiki - 餘因子矩陣

wiki - 克萊姆法則




文字內容 或 影像內容 部份參考、引用自網路,如有侵權,請告知,謝謝。
創作者介紹

拾人牙慧點滴

silverwind1982 發表在 痞客邦 PIXNET 留言(0) 人氣()