看板 Math 關於我們 聯絡資訊
來獻醜一下...(′・ω・‵) 底下講的都是 full column rank 的情況。 ※ 引述《j0958322080 (Tidus)》之銘言: : 標題: [線代] 最小平方法與對稱方陣的問題 : 時間: Mon Jan 1 18:50:18 2018 : 在解最小平方法問題 Ax ~ b 時,(A 屬於 M (R)) : m x n : T T : 最後得到的解就是 x = (A * A) * A b, : T T : 想問一下為什麼不能直接從 (A * A)x = A b 解, 其實可以,畢竟數學上這麼做是對的,只是通常不會這麼做。 理由有很多種,其中一種是用這個方式解出來的解容易不準。 尤其如果 A 本身越接近 singular,本來就已經不容易準了, 解 normal equation 出來會更慘。 至於原因,只要數值計算相關的書都會提到,因為 condition number 會變大。 condition number 越大,這個問題就越敏感 (sensitive), 也就是只要問題稍微擾動一點,解出來的解相對誤差會差很多。 (而且擾動誤差是沒辦法避免的,因為浮點數設計上就是會有) 可以用 normal equation + condition number 做關鍵字去 google, 能查到很多寫的不錯的 lecture,這裏就不贅述了。 : : 這樣不就只是一個聯立方程組而已嗎?? : : 我看在計算數學中解這問題通常會使用 QR 分解, : T -1 : 其中 Q = Q = Q ,所以把 A 拆解成 QR 矩陣的乘積,可得 : T T T T T T : (A * A)x = A b --> (QR) QRx = (QR) b -->R Rx = (QR) b 這裡,因為不知道你是故意這麼寫的,所以提醒一下。 實務上 QR 分解後不會像這邊這樣寫的去解。 例如 m ≧n 時, 我們會把 A 分解成 ┌ R1 ┐ A = QR = [ Q1 Q2 ]│ │ = Q1 R1. (其中 Q, R1 分別是 m x m, n x n 方陣) └ 0 ┘ 最小平方問題會變成 || R1 x - Q1^T b || || Ax - b || = || Q^T (A x - b) || = || || || Q2^T b || 上面最小值發生於 R1 x = Q1^T b 時,因此原問題轉為解這個聯立方程組。 不會去解你上面寫的 R^T R x = (QR)^T b, 除了計算量,還有上面提到解 normal equation 的原因是一樣的。 (解這個,和解原本的 normal equation 意思差不多,失去做 QR 的意義...) : : (中略) : : → j0958322080 : QR分解最後是解聯立方程還是也是要算反矩陣?? 01/02 23:14 數學上,解聯立方程組和算反矩陣是等價的問題。 但算出反矩陣問題很多: 1. 只要用浮點數去存基本上都是近似解,再去乘回原方程組又會產生誤差、 2. 耗費空間儲存反矩陣、 3. 計算量超高。 所以不會這麼做。 直接用高斯消去法 + backward substitution 去解就好了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.30.202.147 ※ 文章網址: https://www.ptt.cc/bbs/Math/M.1514963286.A.033.html ※ 編輯: as7218 (61.30.202.147), 01/03/2018 15:11:30
j0958322080 : 太感謝了,目前是用LU分解去做這個問題,之後應該會 01/03 15:57
j0958322080 : 使用QR分解去解。SVD解這問題應該是最穩定的,只是 01/03 15:57
j0958322080 : 計算量大。這個問題我有在計算數學版(prob_solve)與 01/03 15:57
j0958322080 : 其他人討論,如果有空的話也可以去那邊討論,因為這 01/03 15:57
j0958322080 : 問題比較多在計算上面,數學問題倒是沒這麼大 01/03 15:57
annboy : 長知識推 01/03 20:01