文章目录

  • ​​1、算法思想​​
  • ​​2、代码实现​​

1、算法思想

最近老是碰到迭代问题,小数太多手算又算不过来,写个矩阵乘法辅助一下吧。

有两个矩阵A和B,计算矩阵A与B相乘之后的结果C。
A的列数必须等于B的行数

用矩阵A的第i行的值分别乘以矩阵B的第J列,然后将结果相加,就得到C[i][j]。
矩阵A的行等于C的行,矩阵B的列等于C的列,这两个数值用来控制循环的次数,但是每一步中需要把行和列中对应的乘机求和,所以再加一个内循环控制乘法求和就行。

下面我们进行矩阵乘法的测试
矩阵乘法的java实现_算法

2、代码实现

package com.Unit4;

public class Multiply {

/**
* 矩阵乘法
*
* @param x1 第一个矩阵
* @param x2 第二个矩阵
*/
public static void multiplyMatrix(int x1[][],int x2[][]){
//前提条件:第一个矩阵的列必须等于第二个矩阵的行
if(x1[0].length!=x2.length){
System.out.println("不满足相乘的条件");
return;
}
int lineLength=x1.length; //第一个矩阵的行
int listLength=x2[0].length;//第二个矩阵的列
int[][] multiply=new int[lineLength][listLength];//相乘的结果矩阵
//乘法
for(int i=0;i<lineLength;i++){
for(int j=0;j<listLength;j++){
for(int k=0;k<x1[0].length;k++){
multiply[i][j]+=x1[i][k]*x2[k][j];
}
}
}
System.out.println("相乘之后的结果为:");
for(int i=0;i<multiply.length;i++){
for(int j=0;j<multiply[0].length;j++){
System.out.print(multiply[i][j]+" ");
}
System.out.print("\n");
}
}

public static void main(String[] args) {
//4*3
int[][] x1={{1,2,3},{4,5,6},{7,8,9},{1,1,1}};
//3*3
int[][] x2={{1,0,0},{0,1,0},{0,0,1}};
multiplyMatrix(x1,x2);

}
}

我们用一个4​​*​​​3的矩阵去和一个3​​*​​3的单位矩阵相乘,方便我们观察结果。

矩阵乘法的java实现_java_02


可以看到最后的计算结果为:

矩阵乘法的java实现_矩阵乘法_03