计算条件数的最简单方法是使用以下表达式:
cond(A) = max(sigma) / min(sigma)
Run Code Online (Sandbox Code Playgroud)
其中sigma是奇异值的数组,是SVD的结果。本征作者建议使用以下代码:
JacobiSVD<MatrixXd> svd(A);
double cond = svd.singularValues()(0)
/ svd.singularValues()(svd.singularValues().size()-1);
Run Code Online (Sandbox Code Playgroud)
其他方式(效率较低)
cond(A) = max(lambda) / min(lambda)
cond(A) = norm2(A) * norm2(A^-1)
Run Code Online (Sandbox Code Playgroud)
其中lambda是特征值数组。
看来Cholesky分解在这里没有直接帮助,但目前我不能确定。