【发布时间】:2016-05-21 09:01:49
【问题描述】:
我正在使用 ojalgo 来解决 java 中的 (NxN) Ax = b System。由于 A 有可能是一个奇异矩阵,我希望我的代码以某种方式知道这一点。有办法吗? (文档指出,如果问题不合格且invert() 方法没有抛出异常,solve() 方法会返回一种可能的解决方案。
任何帮助将不胜感激。 提前致谢。
【问题讨论】:
标签: java linear-algebra ojalgo
我正在使用 ojalgo 来解决 java 中的 (NxN) Ax = b System。由于 A 有可能是一个奇异矩阵,我希望我的代码以某种方式知道这一点。有办法吗? (文档指出,如果问题不合格且invert() 方法没有抛出异常,solve() 方法会返回一种可能的解决方案。
任何帮助将不胜感激。 提前致谢。
【问题讨论】:
标签: java linear-algebra ojalgo
听起来您是直接在 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();
}
【讨论】: