接口 DecompositionSolver
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.
-
方法概要
修饰符和类型方法说明int
返回矩阵中的列数。获取分解矩阵的伪逆。int
返回矩阵中的行数。boolean
检查分解矩阵是否非奇异。solve
(RealMatrix b) 解线性方程 A × X = B,其中 A 为矩阵。solve
(RealVector b) 解线性方程 A × X = B,其中 A 为矩阵。
-
方法详细资料
-
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
-