接口 DecompositionSolver


public interface DecompositionSolver
Interface handling decomposition algorithms that can solve A × X = B.

Decomposition algorithms decompose an A matrix as a product of several specific matrices from which they can solve A × X = B in least squares sense: they find X such that ||A × X - B|| is minimal.

Some solvers like LUDecomposition can only find the solution for square matrices and when the solution is an exact linear solution, i.e. when ||A × X - B|| is exactly 0. Other solvers can also find solutions with non-square matrix A and with non-null minimal norm. If an exact linear solution exists it is also the minimal norm solution.

  • 方法详细资料

    • solve

      解线性方程 A × X = B,其中 A 为矩阵。

      矩阵 A 是隐含的,由底层分解算法提供。

      参数:
      b - 方程 A × X = B 的右侧
      返回:
      一个向量 X,使得 A × X - B 的二范数最小
      抛出:
      MathIllegalArgumentException - 如果矩阵的维度不匹配。
      MathIllegalArgumentException - 如果分解矩阵是奇异的。
    • solve

      解线性方程 A × X = B,其中 A 为矩阵。

      矩阵 A 是隐含的,由底层分解算法提供。

      参数:
      b - 方程 A × X = B 的右侧
      返回:
      一个矩阵 X,使得 A × X - B 的二范数最小
      抛出:
      MathIllegalArgumentException - 如果矩阵的维度不匹配。
      MathIllegalArgumentException - 如果分解矩阵是奇异的。
    • isNonSingular

      boolean isNonSingular()
      检查分解矩阵是否非奇异。
      返回:
      如果分解矩阵是非奇异的,则为 true。
    • getInverse

      获取分解矩阵的伪逆

      如果存在分解矩阵的逆,则伪逆等于逆。

      如果不存在逆,则结果具有类似逆的性质。

      特别地,在这种情况下,如果分解矩阵为 A,则方程系统 \( A x = b \) 可能没有解,或者有多个解。如果没有解,则伪逆 \( A^+ \) 给出“最接近”的解 \( z = A^+ b \),意味着 \( \left \| A z - b \right \|_2 \) 被最小化。如果有多个解,则 \( z = A^+ b \) 是最小的解,意味着 \( \left \| z \right \|_2 \) 被最小化。

      然而,一些分解无法为所有矩阵计算伪逆。例如,LUDecomposition 对于非方阵根本就没有定义。 QRDecomposition 可以处理非方阵,但如果分解矩阵是奇异的,则会抛出 MathIllegalArgumentException。有关更多详细信息,请参考特定分解实现的 javadoc。

      返回:
      伪逆矩阵(如果存在逆,则为逆),如果分解可以伪逆分解分解矩阵
      抛出:
      MathIllegalArgumentException - 如果分解矩阵是奇异且分解无法计算伪逆
    • getRowDimension

      int getRowDimension()
      返回矩阵中的行数。
      返回:
      rowDimension
      从以下版本开始:
      2.0
    • getColumnDimension

      int getColumnDimension()
      返回矩阵中的列数。
      返回:
      columnDimension
      从以下版本开始:
      2.0