math - 如何在 Eigen 中找到条件数?

标签 math eigen

在 Matlab 中有 condrcond ,在 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/

相关文章:

math - 您可以使用以下字符创建多少个可能的 URL?

c++ - 我如何在 Eigen 中做张量的外积?

c++ - Eigen 和巨大的密集二维阵列

c++ - 在EIGEN中单独声明并初始化一个map类型的矩阵

c++ - 在 const 函数中使用安全的非常量函数

python - 生成马尔可夫过程的 Kolmogorov-Chapman 方程

javascript - 包含可拖动的圆圈到更大的圆圈

c++ - 分配函数值和不分配给变量之间的速度差异

C# - 数学公式帮助 - 作业

c++ - Eigen 3 并根据模板参数重载新运算符以确保正确对齐