如何用java求逆矩阵
使用Java求逆矩阵的方法
使用Apache Commons Math库
Apache Commons Math库提供了强大的矩阵运算功能,包括求逆矩阵。需要先添加依赖:

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-math3</artifactId>
<version>3.6.1</version>
</dependency>
代码示例:

import org.apache.commons.math3.linear.RealMatrix;
import org.apache.commons.math3.linear.MatrixUtils;
import org.apache.commons.math3.linear.LUDecomposition;
public class MatrixInverse {
public static void main(String[] args) {
double[][] data = { {1, 2}, {3, 4} };
RealMatrix matrix = MatrixUtils.createRealMatrix(data);
RealMatrix inverse = new LUDecomposition(matrix).getSolver().getInverse();
System.out.println("Inverse matrix:");
System.out.println(inverse);
}
}
手动实现高斯-约当消元法
如果不使用第三方库,可以手动实现高斯-约当消元法:
public class MatrixInverseManual {
public static double[][] invert(double[][] matrix) {
int n = matrix.length;
double[][] inverse = new double[n][n];
// 初始化单位矩阵
for (int i = 0; i < n; i++) {
inverse[i][i] = 1;
}
// 高斯-约当消元
for (int i = 0; i < n; i++) {
double pivot = matrix[i][i];
// 归一化当前行
for (int j = 0; j < n; j++) {
matrix[i][j] /= pivot;
inverse[i][j] /= pivot;
}
// 消去其他行
for (int k = 0; k < n; k++) {
if (k != i && matrix[k][i] != 0) {
double factor = matrix[k][i];
for (int j = 0; j < n; j++) {
matrix[k][j] -= factor * matrix[i][j];
inverse[k][j] -= factor * inverse[i][j];
}
}
}
}
return inverse;
}
public static void main(String[] args) {
double[][] matrix = { {1, 2}, {3, 4} };
double[][] inverse = invert(matrix);
System.out.println("Inverse matrix:");
for (double[] row : inverse) {
for (double num : row) {
System.out.print(num + " ");
}
System.out.println();
}
}
}
注意事项
- 矩阵必须是方阵才能求逆
- 矩阵的行列式不能为零(非奇异矩阵)
- 对于大型矩阵,建议使用库函数而非手动实现
- 数值稳定性是手动实现时需要考虑的重要因素






