类 MatrixUtils
-
字段概要
字段修饰符和类型字段说明static final RealMatrixFormatRealMatrix对象的默认格式。static final RealMatrixFormat与octave兼容的RealMatrix对象的格式。 -
方法概要
修饰符和类型方法说明static Array2DRowRealMatrixstatic RealMatrixblockInverse(RealMatrix m, int splitIndex) 通过将矩阵分割为4个子矩阵来计算给定矩阵的逆矩阵。static voidcheckAdditionCompatible(AnyMatrix left, AnyMatrix right) 检查矩阵是否可以相加。static voidcheckColumnIndex(AnyMatrix m, int column) 检查列索引是否有效。static voidcheckMatrixIndex(AnyMatrix m, int row, int column) 检查矩阵索引是否有效。static voidcheckMultiplicationCompatible(AnyMatrix left, AnyMatrix right) 检查矩阵是否可以相乘。static voidcheckRowIndex(AnyMatrix m, int row) 检查行索引是否有效。static voidcheckSameColumnDimension(AnyMatrix left, AnyMatrix right) 检查矩阵是否具有相同的列数。static voidcheckSameRowDimension(AnyMatrix left, AnyMatrix right) 检查矩阵是否具有相同的行数。static voidcheckSubMatrixIndex(AnyMatrix m, int[] selectedRows, int[] selectedColumns) 检查子矩阵范围索引是否有效。static voidcheckSubMatrixIndex(AnyMatrix m, int startRow, int endRow, int startColumn, int endColumn) 检查子矩阵范围索引是否有效。static voidcheckSubtractionCompatible(AnyMatrix left, AnyMatrix right) 检查矩阵是否可以相减。static voidcheckSymmetric(RealMatrix matrix, double eps) 检查矩阵是否对称。static <T extends FieldElement<T>>
FieldMatrix<T> createColumnFieldMatrix(T[] columnData) 使用输入数组的数据创建列FieldMatrix。static RealMatrixcreateColumnRealMatrix(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 RealMatrixcreateRealDiagonalMatrix(double[] diagonal) 返回具有指定元素的对角线矩阵。static RealMatrixcreateRealIdentityMatrix(int dimension) 返回dimension x dimension的单位矩阵。static RealMatrixcreateRealMatrix(double[][] data) 返回其条目为输入数组中值的RealMatrix。static RealMatrixcreateRealMatrix(int rows, int columns) 返回具有指定维度的RealMatrix。static RealVectorcreateRealVector(double[] data) 使用输入数组的数据创建RealVector。static RealVectorcreateRealVector(int dimension) 创建具有指定维度的RealVector。static <T extends FieldElement<T>>
FieldMatrix<T> createRowFieldMatrix(T[] rowData) 使用输入数组的数据创建行FieldMatrix。static RealMatrixcreateRowRealMatrix(double[] rowData) 使用输入数组的数据创建行RealMatrix。static Array2DRowRealMatrixstatic RealMatrixinverse(RealMatrix matrix) 计算给定矩阵的逆矩阵。static RealMatrixinverse(RealMatrix matrix, double threshold) 计算给定矩阵的逆矩阵。static booleanisSymmetric(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
-