在 Matlab 中有 cond
和 rcond
,在 LAPACK 也是如此。 Eigen 中是否有任何例程可以找到矩阵的条件数?
我有一个矩阵的 Cholesky 分解,我想检查它是否接近奇点,但在文档中找不到类似的函数。
更新:
我想我可以使用类似 this algorithm 的东西,它利用了三角分解。 Ilya 的方法对于更准确的答案很有用,因此我将其标记为正确。
最佳答案
计算条件数的最简单方法可能是使用表达式:
cond(A) = max(sigma) / min(sigma)
其中 sigma 是奇异值数组,即 SVD 的结果。特征作者 suggests这段代码:
JacobiSVD<MatrixXd> svd(A);
double cond = svd.singularValues()(0)
/ svd.singularValues()(svd.singularValues().size()-1);
其他方式(效率较低)
cond(A) = max(lambda) / min(lambda)
cond(A) = norm2(A) * norm2(A^-1)
其中 lambda 是特征值数组。
看起来 Cholesky 分解在这里没有直接帮助,但我现在不能确定。
关于math - 如何在 Eigen 中找到条件数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33575478/