Java实现矩阵相乘
程序员文章站
2022-07-15 18:36:38
...
首先我们要知道二维数组就是类似于我们线性代数中的矩阵,矩阵的乘法运算大概是这样
满足条件,第一个矩阵的列数等于第二个矩阵的行数
由两个矩阵相乘的矩阵的每一个元素是由第一个矩阵每一行元素分别乘上第二个矩阵的列
对应的元素在相加
当矩阵A的列数等于矩阵B的行数时,A与B可以相乘。
矩阵C的行数等于矩阵A的行数,C的列数等于B的列数。
乘积C的第m行第n列的元素等于矩阵A的第m行的元素与矩阵B的第n列对应元素乘积之和。
我们多加一个循环控制矩阵相乘后所得的矩阵的元素值就可以了
总体实现代码:
public class JuZhenChengFa {
public static void main(String[] args) {
final int N = 5;
int a[][] = new int[N][N];
int b[][] = new int[N][N];
int c[][] = new int[N][N];
/************初始化数组a的元素**************/
for(int i = 0;i<a.length;i++)
{
for(int j = 0;j<a[i].length;j++)
{
a[i][j] = (int)((Math.random()*10000)%11+5);
}
}
/************初始化数组b的元素**************/
for(int i = 0;i<b.length;i++)
{
for(int j = 0;j<b[i].length;j++)
{
b[i][j] = (int)((Math.random()*10000)%11+5);
}
}
/************矩阵乘法得到矩阵c**************/
for(int i = 0;i<a.length;i++)
{
for(int j = 0;j<a.length;j++)
{
for(int k = 0;k<a.length;k++)
{
c[i][j] += a[i][k]*b[k][j];
}
}
}
/************输出矩阵a的元素**************/
System.out.println("输出矩阵a:");
for(int i = 0;i<a.length;i++)
{
for(int j = 0;j<a.length;j++)
{
System.out.printf("%d",a[i][j]);
if(j == 4)
{
System.out.println();
}
else
{
System.out.print(",");
}
}
}
/************输出矩阵b的元素**************/
System.out.println("输出矩阵b:");
for(int i = 0;i<b.length;i++)
{
for(int j = 0;j<b.length;j++)
{
System.out.printf("%d",b[i][j]);
if(j == 4)
{
System.out.println();
}
else
{
System.out.print(",");
}
}
}
/************输出矩阵b的元素**************/
System.out.println("输出矩阵相乘得到的矩阵c:");
for(int i = 0;i<c.length;i++)
{
for(int j = 0;j<c.length;j++)
{
System.out.printf("%d",c[i][j]);
if(j == 4)
{
System.out.println();
}
else
{
System.out.print(",");
}
}
}
}
}
运行结果展示:
可以动手算一算是不是正确的
上一篇: LeetCode 字符串的最大公因子