Java 中的矩阵乘法
·
矩阵1
1 2 3
4 5 6
矩阵2
7 8
9 10
11 12
矩阵1是2×3,矩阵2是3×2,矩阵1X矩阵2的结果就是2X2的矩阵3
计算过程:
矩阵1的第一行乘以对应的矩阵2的第一列相加得到矩阵3的第一行第一列;
矩阵1的第一行乘以对应的矩阵2的第二列相加得到矩阵3的第一行第二列;
矩阵1的第二行乘以对应的矩阵2的第一列相加得到矩阵3的第二行第一列;
矩阵1的第二行乘以对应的矩阵2的第二列相加得到矩阵3的第二行第二列;
1*7+2*9+3*11 1*8+2*10+3*12
4*7+5*9+6*11 4*8+5*10+6*12
得到的结果是:
58 64
139 154
这是计算代码
public static class Matrix
{
private int numRows;
private int numColumns;
private int data[][];
public Matrix(int d[][]) {
numRows = d.length;
if (numRows == 0)
numColumns = 0;
else
numColumns = d[0].length;
data = new int[numRows][numColumns];
for (int i = 0; i < numRows; i++)
for (int j = 0; j < numColumns; j++)
data[i][j] = d[i][j];
}
public Matrix times(Matrix m) throws IllegalArgumentException {
Matrix m2 = this;
if (m.numRows != m2.numColumns)
throw new IllegalArgumentException("矩阵数据有误");
int tempM[][] = new int[data.length][m.data[0].length];
for (int i = 0; i < data.length; i++)
for (int j = 0; j < m.data[0].length; j++)
for (int k = 0; k < data[0].length; k++)
tempM[i][j] += m2.data[i][k] * m.data[k][j];
return new Matrix(tempM);
}
public void printMatrix() {
for (int i = 0; i < data.length; i++) {
for (int j = 0; j < data[0].length; j++) {
System.out.print(data[i][j] + " ");
}
System.out.println();
}
}
public static void main(String[] args) {
int m1[][] = {{1, 2, 3}, {4, 5, 6}};
int m2[][] = {{7, 8}, {9, 10}, {11, 12}};
Matrix matrix1 = new Matrix(m1);
Matrix matrix2 = new Matrix(m2);
Matrix result = matrix1.times(matrix2);
result.printMatrix();
}
}
结果一致
更多推荐
所有评论(0)