Bareiss 算法与 LU 分解

计算科学 矩阵 矩阵分解
2021-12-10 23:05:50

我目前试图完全理解用于计算行列式的 Bareiss 算法。我想到的一个问题是:为什么 LU 分解比 Bareiss 算法更常用?我的意思是,它们都有的复杂性,那么 Bareiss 有什么问题?O(n3)

1个回答

如评论中所述,如果您必须精确计算整数矩阵的行列式,Bareiss 算法是更好的选择。

当涉及到实数(浮点数)或复数矩阵时,要理解的要点是计算行列式不是一项常见任务在科学计算中,行列式通常是一个错误的选择:无论你想做什么,通常都有一个更快、更稳定的选择,而不涉及它们。想知道矩阵是奇异的还是找到它的秩?使用 SVD 或 RRQR。想解决线性系统?使用 LU,而不是 Cramer 的规则。想要计算特征值?使用 QR/Francis 算法,而不是特征多项式。

此外,溢出和下溢通常是不鼓励使用行列式的实际问题(练习:使用您最喜欢的编程语言来计算)。另请参阅我在 [math.se] 上的这个答案,它有类似的论点。det(0.1I350×350)

所以对他们的计算兴趣不大。LU 更常用,因为它不仅仅计算行列式,而且通常“更多”是您首先要计算行列式的原因。据我所知,Bareiss 算法是一种“一招式小马算法”:它计算行列式,仅此而已。

因此,当您在此站点上询问有关决定因素的问题时,您得到的第一条评论是“但是,您真正需要它做什么?”也就不足为奇了。:)