-
矩阵乘法:
根据线代相关知识矩阵乘法公式可以总结为:设A为m*n 的矩阵,B为n*p的矩阵,那么称矩阵C = A*B (m*p)为矩阵A与B的乘积,其中矩阵C中的第i行第j列元素可以表示为:
案例如下:
-
代码如下 :
详细解析可见代码注释
#include <stdio.h>
int main(void){
int i,j,k;
int m1[2][2],m2[2][2],m[2][2]; //简单起见此处采用2*2矩阵
//为需要相乘的两个矩阵赋值:
printf("请输入第一个矩阵:\n");
for(i=0;i<2;i++){
for(j=0;j<2;j++){
scanf("%d",&m1[i][j]);
}
}
printf("请输入第二个矩阵:\n");
for(i=0;i<2;i++){
for(j=0;j<2;j++){
scanf("%d",&m2[i][j]);
}
}
//矩阵C初始化
for(i=0;i<2;i++){
for(j=0;j<2;j++){
m[i][j] = 0;
}
}
//矩阵相乘过程采用三重循环,根据乘法公式C矩阵处于第i行,第j列元素是由A矩阵第i行
//B矩阵的第j列元素相乘加和得到的,通过两层for循环进行控制 ,第三层for实现求和
for(i=0;i<2;i++){
for(j=0;j<2;j++){
for(k=0;k<2;k++){
m[i][j]=m[i][j]+m1[i][k]*m2[k][j];
}
}
}
printf("相乘结果是:\n");
for(i=0;i<2;i++){
for(j=0;j<2;j++){
printf("%d ",m[i][j]);
}
printf("\n");
}
return 0;
}