Ojalgo:奇异矩阵的处理
Ojalgo: Handling of singular matrices
我正在使用 ojalgo 求解 java 中的 (NxN) Ax = b 系统。由于 A 有可能是奇异矩阵,我希望我的代码以某种方式知道这一点。有办法吗? (文档指出 solve()
方法 returns 一种可能的解决方案,如果问题不合格并且 invert()
方法不会抛出异常)。
如有任何帮助,我们将不胜感激。
提前致谢。
听起来您是在直接对 BasicMatrix 使用求解和求逆方法。
改用 LU 分解。在分解矩阵之后,但在尝试求解之前,您可以调用:
lu.isSquareAndNotSingular();
要解决问题,请使用 LU-Decomposition 尝试类似的方法。
MatrixStore M = ...equations
MatrixStore v = ...rhs
LU<Double> lu = LU.PRIMITIVE.make(M);
boolean decompose = lu.decompose(M);
MatrixStore solution;
if(lu.isSolvable()){
solution = lu.getSolution(v);
// and/or check that solution is good enough
double norm = M.multiply(solution).subtract(v).norm();
}
我正在使用 ojalgo 求解 java 中的 (NxN) Ax = b 系统。由于 A 有可能是奇异矩阵,我希望我的代码以某种方式知道这一点。有办法吗? (文档指出 solve()
方法 returns 一种可能的解决方案,如果问题不合格并且 invert()
方法不会抛出异常)。
如有任何帮助,我们将不胜感激。 提前致谢。
听起来您是在直接对 BasicMatrix 使用求解和求逆方法。
改用 LU 分解。在分解矩阵之后,但在尝试求解之前,您可以调用:
lu.isSquareAndNotSingular();
要解决问题,请使用 LU-Decomposition 尝试类似的方法。
MatrixStore M = ...equations
MatrixStore v = ...rhs
LU<Double> lu = LU.PRIMITIVE.make(M);
boolean decompose = lu.decompose(M);
MatrixStore solution;
if(lu.isSolvable()){
solution = lu.getSolution(v);
// and/or check that solution is good enough
double norm = M.multiply(solution).subtract(v).norm();
}