【问题标题】:Ojalgo: Handling of singular matricesOjalgo:奇异矩阵的处理
【发布时间】:2016-05-21 09:01:49
【问题描述】:

我正在使用 ojalgo 来解决 java 中的 (NxN) Ax = b System。由于 A 有可能是一个奇异矩阵,我希望我的代码以某种方式知道这一点。有办法吗? (文档指出,如果问题不合格且invert() 方法没有抛出异常,solve() 方法会返回一种可能的解决方案。

任何帮助将不胜感激。 提前致谢。

【问题讨论】:

    标签: java linear-algebra ojalgo


    【解决方案1】:

    听起来您是直接在 BasicMatrix 上使用求解和反转方法。

    改用 LU 分解。分解矩阵后,但在尝试求解之前,您可以调用:

    lu.isSquareAndNotSingular();

    【讨论】:

    • 您好 Apete,非常感谢您的快速回复。您能否提供一个简单的代码来解决 LU-Decomposition 的 Ax = b 问题?非常感谢!
    【解决方案2】:

    要使用 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();
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-25
      • 2018-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多