类 MatrixUtils
-
字段概要
修饰符和类型字段说明static final RealMatrixFormat
RealMatrix
对象的默认格式。static final RealMatrixFormat
与octave兼容的RealMatrix
对象的格式。 -
方法概要
修饰符和类型方法说明static Array2DRowRealMatrix
static RealMatrix
blockInverse
(RealMatrix m, int splitIndex) 通过将矩阵分割为4个子矩阵来计算给定矩阵的逆矩阵。static void
checkAdditionCompatible
(AnyMatrix left, AnyMatrix right) 检查矩阵是否可以相加。static void
checkColumnIndex
(AnyMatrix m, int column) 检查列索引是否有效。static void
checkMatrixIndex
(AnyMatrix m, int row, int column) 检查矩阵索引是否有效。static void
checkMultiplicationCompatible
(AnyMatrix left, AnyMatrix right) 检查矩阵是否可以相乘。static void
checkRowIndex
(AnyMatrix m, int row) 检查行索引是否有效。static void
checkSameColumnDimension
(AnyMatrix left, AnyMatrix right) 检查矩阵是否具有相同的列数。static void
checkSameRowDimension
(AnyMatrix left, AnyMatrix right) 检查矩阵是否具有相同的行数。static void
checkSubMatrixIndex
(AnyMatrix m, int[] selectedRows, int[] selectedColumns) 检查子矩阵范围索引是否有效。static void
checkSubMatrixIndex
(AnyMatrix m, int startRow, int endRow, int startColumn, int endColumn) 检查子矩阵范围索引是否有效。static void
checkSubtractionCompatible
(AnyMatrix left, AnyMatrix right) 检查矩阵是否可以相减。static void
checkSymmetric
(RealMatrix matrix, double eps) 检查矩阵是否对称。static <T extends FieldElement<T>>
FieldMatrix<T> createColumnFieldMatrix
(T[] columnData) 使用输入数组的数据创建列FieldMatrix
。static RealMatrix
createColumnRealMatrix
(double[] columnData) 使用输入数组的数据创建列RealMatrix
。static <T extends FieldElement<T>>
FieldMatrix<T> createFieldDiagonalMatrix
(T[] diagonal) 返回具有指定元素的对角线矩阵。static <T extends FieldElement<T>>
FieldMatrix<T> createFieldIdentityMatrix
(Field<T> field, int dimension) 返回dimension x dimension
的单位矩阵。static <T extends FieldElement<T>>
FieldMatrix<T> createFieldMatrix
(Field<T> field, int rows, int columns) 返回具有指定维度的FieldMatrix
。static <T extends FieldElement<T>>
FieldMatrix<T> createFieldMatrix
(T[][] data) 返回其条目为输入数组中值的FieldMatrix
。static <T extends FieldElement<T>>
FieldVector<T> createFieldVector
(Field<T> field, int dimension) 创建具有指定维度的FieldVector
。static <T extends FieldElement<T>>
FieldVector<T> createFieldVector
(T[] data) 使用输入数组的数据创建FieldVector
。static RealMatrix
createRealDiagonalMatrix
(double[] diagonal) 返回具有指定元素的对角线矩阵。static RealMatrix
createRealIdentityMatrix
(int dimension) 返回dimension x dimension
的单位矩阵。static RealMatrix
createRealMatrix
(double[][] data) 返回其条目为输入数组中值的RealMatrix
。static RealMatrix
createRealMatrix
(int rows, int columns) 返回具有指定维度的RealMatrix
。static RealVector
createRealVector
(double[] data) 使用输入数组的数据创建RealVector
。static RealVector
createRealVector
(int dimension) 创建具有指定维度的RealVector
。static <T extends FieldElement<T>>
FieldMatrix<T> createRowFieldMatrix
(T[] rowData) 使用输入数组的数据创建行FieldMatrix
。static RealMatrix
createRowRealMatrix
(double[] rowData) 使用输入数组的数据创建行RealMatrix
。static Array2DRowRealMatrix
static RealMatrix
inverse
(RealMatrix matrix) 计算给定矩阵的逆矩阵。static RealMatrix
inverse
(RealMatrix matrix, double threshold) 计算给定矩阵的逆矩阵。static boolean
isSymmetric
(RealMatrix matrix, double eps) 检查矩阵是否对称。static RealMatrix
计算给定矩阵的矩阵指数。static List
<RealVector> orthonormalize
(List<RealVector> independent, double threshold, DependentVectorsHandler handler) 对一组向量进行正交化。static <T extends CalculusFieldElement<T>>
List<FieldVector<T>> orthonormalize
(Field<T> field, List<FieldVector<T>> independent, T threshold, DependentVectorsHandler handler) 对一组向量进行正交化。static void
解由下三角矩阵RealMatrix
组成的系统。static void
解由上三角矩阵RealMatrix
组成的系统。
-
字段详细资料
-
DEFAULT_FORMAT
RealMatrix
对象的默认格式。 -
OCTAVE_FORMAT
与octave兼容的RealMatrix
对象的格式。
-
-
方法详细资料
-
createRealMatrix
返回具有指定维度的RealMatrix
。返回的矩阵类型取决于维度。在212元素以下(即4096个元素或64×64的方阵)可以存储在32kB数组中时,将构建一个
Array2DRowRealMatrix
实例。超过此阈值,将构建一个BlockRealMatrix
实例。矩阵元素全部设置为0.0。
- 参数:
-
rows
- 矩阵的行数 -
columns
- 矩阵的列数 - 返回:
- 具有指定维度的RealMatrix
- 另请参阅:
-
createFieldMatrix
public static <T extends FieldElement<T>> FieldMatrix<T> createFieldMatrix(Field<T> field, int rows, int columns) 返回具有指定维度的FieldMatrix
。返回的矩阵类型取决于维度。在212元素以下(即4096个元素或64×64的方阵)时,将构建一个
FieldMatrix
实例。超过此阈值,将构建一个BlockFieldMatrix
实例。矩阵元素全部设置为field.getZero()。
- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
field
- 矩阵元素所属的字段 -
rows
- 矩阵的行数 -
columns
- 矩阵的列数 - 返回:
- 具有指定维度的FieldMatrix
- 另请参阅:
-
createRealMatrix
public static RealMatrix createRealMatrix(double[][] data) throws MathIllegalArgumentException, NullArgumentException 返回其条目为输入数组中值的RealMatrix
。返回的矩阵类型取决于维度。在212元素以下(即4096个元素或64×64的方阵)可以存储在32kB数组中时,将构建一个
Array2DRowRealMatrix
实例。超过此阈值,将构建一个BlockRealMatrix
实例。输入数组是复制的,而不是引用。
- 参数:
-
data
- 输入数组 - 返回:
- 包含数组值的RealMatrix
- 抛出:
-
MathIllegalArgumentException
- 如果data
不是矩形的(不是所有行具有相同长度)。 -
MathIllegalArgumentException
- 如果行或列为空。 -
NullArgumentException
- 如果data
或data[0]
为null
。 -
MathIllegalArgumentException
- 如果data
不是矩形的。 - 另请参阅:
-
createFieldMatrix
public static <T extends FieldElement<T>> FieldMatrix<T> createFieldMatrix(T[][] data) throws MathIllegalArgumentException, NullArgumentException 返回一个FieldMatrix
,其条目是输入数组中的值。返回的矩阵类型取决于维度。在2的12次方以下的元素(即4096个元素或64×64的方阵)时,将构建一个
FieldMatrix
实例。超过此阈值时,将构建一个BlockFieldMatrix
实例。输入数组将被复制,而不是引用。
- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
data
- 输入数组 - 返回:
- 包含数组值的矩阵。
- 抛出:
-
MathIllegalArgumentException
- 如果data
不是矩形的(不是所有行的长度相同)。 -
MathIllegalArgumentException
- 如果一行或一列为空。 -
NullArgumentException
- 如果data
或data[0]
为null
。 - 另请参阅:
-
createRealIdentityMatrix
返回dimension x dimension
的单位矩阵。- 参数:
-
dimension
- 要生成的单位矩阵的维度 - 返回:
- 单位矩阵
- 抛出:
-
IllegalArgumentException
- 如果维度不是正数
-
createFieldIdentityMatrix
public static <T extends FieldElement<T>> FieldMatrix<T> createFieldIdentityMatrix(Field<T> field, int dimension) 返回dimension x dimension
的单位矩阵。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
field
- 元素所属的字段 -
dimension
- 要生成的单位矩阵的维度 - 返回:
- 单位矩阵
- 抛出:
-
IllegalArgumentException
- 如果维度不是正数
-
createRealDiagonalMatrix
返回具有指定元素的对角线矩阵。- 参数:
-
diagonal
- 矩阵的对角线元素(数组元素将被复制) - 返回:
- 对角线矩阵
-
createFieldDiagonalMatrix
返回具有指定元素的对角线矩阵。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
diagonal
- 矩阵的对角线元素(数组元素将被复制) - 返回:
- 对角线矩阵
-
createRealVector
public static RealVector createRealVector(double[] data) throws MathIllegalArgumentException, NullArgumentException 使用输入数组的数据创建一个RealVector
。- 参数:
-
data
- 输入数据 - 返回:
- 长度为data.length的RealVector
- 抛出:
-
MathIllegalArgumentException
- 如果data
为空。 -
NullArgumentException
- 如果data
为null
。
-
createRealVector
使用指定维度创建一个RealVector
。- 参数:
-
dimension
- 向量的维度 - 返回:
- 一个新向量
- 从以下版本开始:
- 1.3
-
createFieldVector
public static <T extends FieldElement<T>> FieldVector<T> createFieldVector(T[] data) throws MathIllegalArgumentException, NullArgumentException 使用输入数组的数据创建一个FieldVector
。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
data
- 输入数据 - 返回:
- 长度为data.length的FieldVector
- 抛出:
-
MathIllegalArgumentException
- 如果data
为空。 -
NullArgumentException
- 如果data
为null
。 -
MathIllegalArgumentException
- 如果data
有0个元素
-
createFieldVector
public static <T extends FieldElement<T>> FieldVector<T> createFieldVector(Field<T> field, int dimension) 使用指定维度创建一个FieldVector
。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
field
- 数组元素所属的字段 -
dimension
- 向量的维度 - 返回:
- 一个新向量
- 从以下版本开始:
- 1.3
-
createRowRealMatrix
public static RealMatrix createRowRealMatrix(double[] rowData) throws MathIllegalArgumentException, NullArgumentException 使用输入数组的数据创建一行RealMatrix
。- 参数:
-
rowData
- 输入的行数据 - 返回:
- 一个1 x rowData.length的RealMatrix
- 抛出:
-
MathIllegalArgumentException
- 如果rowData
为空。 -
NullArgumentException
- 如果rowData
为null
。
-
createRowFieldMatrix
public static <T extends FieldElement<T>> FieldMatrix<T> createRowFieldMatrix(T[] rowData) throws MathIllegalArgumentException, NullArgumentException 使用输入数组的数据创建一行FieldMatrix
。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
rowData
- 输入的行数据 - 返回:
- 一个1 x rowData.length的FieldMatrix
- 抛出:
-
MathIllegalArgumentException
- 如果rowData
为空。 -
NullArgumentException
- 如果rowData
为null
。
-
createColumnRealMatrix
public static RealMatrix createColumnRealMatrix(double[] columnData) throws MathIllegalArgumentException, NullArgumentException 使用输入数组的数据创建一列RealMatrix
。- 参数:
-
columnData
- 输入的列数据 - 返回:
- 一个columnData x 1的RealMatrix
- 抛出:
-
MathIllegalArgumentException
- 如果columnData
为空。 -
NullArgumentException
- 如果columnData
为null
。
-
createColumnFieldMatrix
public static <T extends FieldElement<T>> FieldMatrix<T> createColumnFieldMatrix(T[] columnData) throws MathIllegalArgumentException, NullArgumentException 使用输入数组的数据创建一列FieldMatrix
。- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
columnData
- 输入的列数据 - 返回:
- 一个columnData x 1的FieldMatrix
- 抛出:
-
MathIllegalArgumentException
- 如果data
为空。 -
NullArgumentException
- 如果columnData
为null
。
-
checkSymmetric
检查矩阵是否对称。- 参数:
-
matrix
- 要检查的矩阵。 -
eps
- 相对容差。 - 抛出:
-
MathIllegalArgumentException
- 如果矩阵不是方阵。 -
MathIllegalArgumentException
- 如果矩阵不是对称的。
-
isSymmetric
检查矩阵是否对称。- 参数:
-
matrix
- 要检查的矩阵。 -
eps
- 相对容差。 - 返回:
-
如果
matrix
是对称的,则返回true
。
-
checkMatrixIndex
public static void checkMatrixIndex(AnyMatrix m, int row, int column) throws MathIllegalArgumentException 检查矩阵索引是否有效。- 参数:
-
m
- 矩阵。 -
row
- 要检查的行索引。 -
column
- 要检查的列索引。 - 抛出:
-
MathIllegalArgumentException
- 如果row
或column
不是有效索引。
-
checkRowIndex
检查行索引是否有效。- 参数:
-
m
- 矩阵。 -
row
- 要检查的行索引。 - 抛出:
-
MathIllegalArgumentException
- 如果row
不是有效索引。
-
checkColumnIndex
检查列索引是否有效。- 参数:
-
m
- 矩阵。 -
column
- 要检查的列索引。 - 抛出:
-
MathIllegalArgumentException
- 如果column
不是有效索引。
-
checkSubMatrixIndex
public static void checkSubMatrixIndex(AnyMatrix m, int startRow, int endRow, int startColumn, int endColumn) throws MathIllegalArgumentException 检查子矩阵范围索引是否有效。行和列从0到n - 1
进行计数。- 参数:
-
m
- 矩阵。 -
startRow
- 初始行索引。 -
endRow
- 最终行索引。 -
startColumn
- 初始列索引。 -
endColumn
- 最终列索引。 - 抛出:
-
MathIllegalArgumentException
- 如果索引无效。 -
MathIllegalArgumentException
- 如果endRow < startRow
或endColumn < startColumn
。
-
checkSubMatrixIndex
public static void checkSubMatrixIndex(AnyMatrix m, int[] selectedRows, int[] selectedColumns) throws MathIllegalArgumentException, NullArgumentException 检查子矩阵范围索引是否有效。行和列从0到n-1进行计数。- 参数:
-
m
- 矩阵。 -
selectedRows
- 行索引数组。 -
selectedColumns
- 列索引数组。 - 抛出:
-
NullArgumentException
- 如果selectedRows
或selectedColumns
为null
。 -
MathIllegalArgumentException
- 如果行或列选择为空(长度为零)。 -
MathIllegalArgumentException
- 如果行或列选择无效。
-
checkAdditionCompatible
public static void checkAdditionCompatible(AnyMatrix left, AnyMatrix right) throws MathIllegalArgumentException 检查矩阵是否可以相加。- 参数:
-
left
- 左侧矩阵。 -
right
- 右侧矩阵。 - 抛出:
-
MathIllegalArgumentException
- 如果矩阵不可相加。
-
checkSubtractionCompatible
public static void checkSubtractionCompatible(AnyMatrix left, AnyMatrix right) throws MathIllegalArgumentException 检查矩阵是否可以相减。- 参数:
-
left
- 左侧矩阵。 -
right
- 右侧矩阵。 - 抛出:
-
MathIllegalArgumentException
- 如果矩阵不可相减。
-
checkMultiplicationCompatible
public static void checkMultiplicationCompatible(AnyMatrix left, AnyMatrix right) throws MathIllegalArgumentException 检查矩阵是否可以相乘。- 参数:
-
left
- 左侧矩阵。 -
right
- 右侧矩阵。 - 抛出:
-
MathIllegalArgumentException
- 如果矩阵不可相乘。
-
checkSameColumnDimension
public static void checkSameColumnDimension(AnyMatrix left, AnyMatrix right) throws MathIllegalArgumentException 检查矩阵是否具有相同的列数。- 参数:
-
left
- 左侧矩阵。 -
right
- 右侧矩阵。 - 抛出:
-
MathIllegalArgumentException
- 如果矩阵列数不相同。 - 从以下版本开始:
- 1.3
-
checkSameRowDimension
public static void checkSameRowDimension(AnyMatrix left, AnyMatrix right) throws MathIllegalArgumentException 检查矩阵是否具有相同的行数。- 参数:
-
left
- 左侧矩阵。 -
right
- 右侧矩阵。 - 抛出:
-
MathIllegalArgumentException
- 如果矩阵行数不相同。 - 从以下版本开始:
- 1.3
-
fractionMatrixToRealMatrix
- 参数:
-
m
- 要转换的矩阵。 - 返回:
- 转换后的矩阵。
-
bigFractionMatrixToRealMatrix
- 参数:
-
m
- 要转换的矩阵。 - 返回:
- 转换后的矩阵。
-
solveLowerTriangularSystem
public static void solveLowerTriangularSystem(RealMatrix rm, RealVector b) throws MathIllegalArgumentException, MathRuntimeException 解由下三角矩阵RealMatrix
组成的系统。调用此方法以解决下三角形式的方程组。矩阵
RealMatrix
被假定为下三角形式,尽管没有检查。向量RealVector
将被覆盖为解。检查矩阵是否为方阵,且其维度与向量的长度匹配。- 参数:
-
rm
- 下三角矩阵 -
b
- 被覆盖的RealVector - 抛出:
-
MathIllegalArgumentException
- 如果矩阵和向量不符合规范 -
MathIllegalArgumentException
- 如果矩阵rm
不是方阵 -
MathRuntimeException
- 如果rm
的对角系数的绝对值低于Precision.SAFE_MIN
-
solveUpperTriangularSystem
public static void solveUpperTriangularSystem(RealMatrix rm, RealVector b) throws MathIllegalArgumentException, MathRuntimeException 解由上三角矩阵RealMatrix
组成的系统。调用此方法以解决上三角形式的方程组。矩阵
RealMatrix
被假定为上三角形式,尽管没有检查。向量RealVector
将被覆盖为解。检查矩阵是否为方阵,且其维度与向量的长度匹配。- 参数:
-
rm
- 上三角矩阵 -
b
- 被覆盖的RealVector - 抛出:
-
MathIllegalArgumentException
- 如果矩阵和向量不符合规范 -
MathIllegalArgumentException
- 如果矩阵rm
不是方阵 -
MathRuntimeException
- 如果rm
的对角系数的绝对值低于Precision.SAFE_MIN
-
blockInverse
通过将矩阵分割为4个子矩阵来计算给定矩阵的逆矩阵。- 参数:
-
m
- 需要计算逆矩阵的矩阵。 -
splitIndex
- 确定“分割”线和列的索引。与此索引对应的元素将成为左上子矩阵的一部分。 - 返回:
-
m
的逆矩阵。 - 抛出:
-
MathIllegalArgumentException
- 如果m
不是方阵。
-
inverse
public static RealMatrix inverse(RealMatrix matrix) throws MathIllegalArgumentException, NullArgumentException 计算给定矩阵的逆矩阵。默认情况下,使用QR分解计算矩阵的逆矩阵,除非可以确定输入矩阵的更有效方法。
注意:此方法将使用奇异性阈值为0,如果需要不同的阈值,请使用
inverse(RealMatrix, double)
。- 参数:
-
matrix
- 需要计算逆矩阵的矩阵 - 返回:
-
matrix
的逆矩阵 - 抛出:
-
NullArgumentException
- 如果matrix
为null
-
MathIllegalArgumentException
- 如果m是奇异的 -
MathIllegalArgumentException
- 如果矩阵不是方阵
-
inverse
public static RealMatrix inverse(RealMatrix matrix, double threshold) throws MathIllegalArgumentException, NullArgumentException 计算给定矩阵的逆矩阵。默认情况下,使用QR分解计算矩阵的逆矩阵,除非可以确定输入矩阵的更有效方法。
- 参数:
-
matrix
- 需要计算逆矩阵的矩阵 -
threshold
- 奇异性阈值 - 返回:
-
m
的逆矩阵 - 抛出:
-
NullArgumentException
- 如果matrix
为null
-
MathIllegalArgumentException
- 如果矩阵是奇异的 -
MathIllegalArgumentException
- 如果矩阵不是方阵
-
matrixExponential
计算给定矩阵的矩阵指数。算法实现遵循Pade逼近方法,参考Higham, Nicholas J. “The Scaling and Squaring Method for the Matrix Exponential Revisited.” SIAM Journal on Matrix Analysis and Applications 26, no. 4 (January 2005): 1179–93.
- 参数:
-
rm
- 需要计算逆矩阵的RealMatrix - 返回:
-
rm
的逆矩阵 - 抛出:
-
MathIllegalArgumentException
- 如果矩阵不是方阵
-
orthonormalize
public static List<RealVector> orthonormalize(List<RealVector> independent, double threshold, DependentVectorsHandler handler) 标准化一组向量。通过使用修改后的Gram-Schmidt过程执行标准化。
- 参数:
-
independent
- 独立向量的列表 -
threshold
- 投影向量的范数小于或等于此阈值被视为零范数,因此它们来自的向量与之前的向量不独立 -
handler
- 依赖向量的处理程序 - 返回:
-
与
independent
具有相同跨度的标准正交基 - 从以下版本开始:
- 2.1
-
orthonormalize
public static <T extends CalculusFieldElement<T>> List<FieldVector<T>> orthonormalize(Field<T> field, List<FieldVector<T>> independent, T threshold, DependentVectorsHandler handler) 标准化一组向量。通过使用修改后的Gram-Schmidt过程执行标准化。
- 类型参数:
-
T
- 字段元素的类型 - 参数:
-
field
- 字段元素的类型 -
independent
- 独立向量的列表 -
threshold
- 投影向量的范数小于或等于此阈值被视为零范数,因此它们来自的向量与之前的向量不独立 -
handler
- 依赖向量的处理程序 - 返回:
-
与
independent
具有相同跨度的标准正交基 - 从以下版本开始:
- 2.1
-