簡單介紹線性代數的最小平方法以及該方法所涉及到的部分,包含:
餘因子矩陣(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(β1,β2) = [ 6 - (β1 + 1β2)]2 + [ 5 - (β1 + 2β2)]2 + [ 7 - (β1 + 3β2)]2 + [ 10 - (β1 + 4β2)]2
這個最小值可以透過對 S(β1,β2) 分別求 β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 - 克萊姆法則
文字內容 或 影像內容 部份參考、引用自網路,如有侵權,請告知,謝謝。
全站熱搜
留言列表