- 1、算法思想
- 2、代码实现
最近老是碰到迭代问题,小数太多手算又算不过来,写个矩阵乘法辅助一下吧。
有两个矩阵A和B,计算矩阵A与B相乘之后的结果C。
A的列数必须等于B的行数
用矩阵A的第i行的值分别乘以矩阵B的第J列,然后将结果相加,就得到C[i][j]。
矩阵A的行等于C的行,矩阵B的列等于C的列,这两个数值用来控制循环的次数,但是每一步中需要把行和列中对应的乘机求和,所以再加一个内循环控制乘法求和就行。
下面我们进行矩阵乘法的测试
A
=
[
1
2
3
4
5
6
7
8
9
1
1
1
]
B
=
[
1
0
0
0
1
0
0
0
1
]
A = begin{bmatrix} 1 & 2 & 3 \ 4 & 5 & 6 \ 7 & 8 & 9\ 1 & 1& 1 end{bmatrix} B= begin{bmatrix} 1 & 0 & 0 \ 0 & 1 & 0 \ 0 & 0 & 1\ end{bmatrix}
A=⎣⎢⎢⎡147125813691⎦⎥⎥⎤B=⎣⎡100010001⎦⎤
package com.Unit4;
public class Multiply {
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
我们用一个4*3的矩阵去和一个3*3的单位矩阵相乘,方便我们观察结果。
可以看到最后的计算结果为:
A
=
[
1
2
3
4
5
6
7
8
9
1
1
1
]
A = begin{bmatrix} 1 & 2 & 3 \ 4 & 5 & 6 \ 7 & 8 & 9\ 1 & 1& 1 end{bmatrix}
A=⎣⎢⎢⎡147125813691⎦⎥⎥⎤



