我開發一種解決斧 = b,其中甲和b是已知的算法。矩陣求逆或Cholesky?
有兩種方法可以做到這X = 甲-1b或通過使用Cholesky。我知道矩陣總是正方形和正確的,儘管det(A)可能爲零。在那些罕見的情況下,我可以忽略它。但是從計算的角度和效率來看,創建一個逆矩陣效率太低了?
我開發一種解決斧 = b,其中甲和b是已知的算法。矩陣求逆或Cholesky?
有兩種方法可以做到這X = 甲-1b或通過使用Cholesky。我知道矩陣總是正方形和正確的,儘管det(A)可能爲零。在那些罕見的情況下,我可以忽略它。但是從計算的角度和效率來看,創建一個逆矩陣效率太低了?
一般來說,你總是想用解算器;實際求解器的運行速度應快於乘以逆運算。與進行分解相比,計算逆矩陣不僅效率低,而且使用逆矩陣具有分解/求解器方法避免的精度問題。
如果您有對稱矩陣,則Cholesky decomposition是合理的選擇。密切相關的LDL decomposition具有可比較的精度,同時也避免了平方根的需要。
如果您的矩陣不對稱,則不能使用Cholesky或LDL分解 - 請改爲使用LU decomposition方法。
對於大型矩陣,是的,反過來是非常低效的。然而,諸如矩陣的下三角的特殊屬性使得反演更容易計算。
在數值分析中,Ax = b的最典型解法是A(LUx = b)的LU分解,然後求解Ly = b代表y,Ux = y代表x。
對於更穩定的方法,考慮使用QR分解,其中Q具有Q^T * Q = I的特殊性質,所以Rx = Q^Tb其中R是上三角形(只有一個back用LU前進和後退解決)。
其他特殊屬性,如矩陣對稱(Cholesky)或帶狀(Gauss)使得某些解算器比另一個更好。
一如既往地注意到floating point錯誤在您的計算中。
我可以補充說,迭代求解器也是一種解決系統的流行方法。 Conguate梯度法是最常用的,適用於稀疏矩陣。 Jacobi和Gauss-Seidel適用於對角佔優並且稀疏的矩陣。
+1的QR評論。我傾向於首先考慮LU,因爲它更常用於求解有限元方程。好的一點回答解決。 – duffymo
在http://math.stackexchange.com/ –
上這個問題可能會更好Cholesky只有在A也是對稱的時纔會起作用 - 如果是這樣,請確保與cholesky一起使用。 –
但爲什麼要去喬列斯基? A總是對稱的。我不是想知道數學問題,而是想知道計算機的效率比其他方法更好。 – user1876942