矩阵乘法是大学矩阵课程中,相比矩阵加减法比较困难的部分。
矩阵乘法的原理:
矩阵乘法在代码中实现
得到目标矩阵的一个元素,涉及两个求和符号,一个求和符号一个for循环,两个求和符号两个for循环,再加上是二维数组,再加一个for循环
以下呈现出代码
1 /*程序的版权和版本声明部分: 2 **Copyright(c) 2016,电子科技大学本科生二年级学生 3 **All rights reserved. 4 **文件名:矩阵乘法 5 **程序作用:矩阵乘法 6 **作者:Amoshen 7 **完成日期:2016.10.26 8 **版本号:V1.0 9 */ 10 #include <iostream> 11 12 using namespace std; 13 #define MAX_SIZE 10 14 15 int main(void) 16 { 17 int i = 0,j = 0,m = 0,NumOfRowA,NumOfColA,NumOfColB,s = 0;//i为第一矩阵(A)的行变量,j为第一矩阵的列变量,同时为第二矩阵的列变量,m为第二矩阵(B)的列变量 18 int a[MAX_SIZE][MAX_SIZE],b[MAX_SIZE][MAX_SIZE],c[MAX_SIZE][MAX_SIZE];//MAX_SIZE为二维数组最大值。因为二维数组不能长度不能为变量,所以找个最大值(如果各位有什么其他解决这个问题,请指教) 19 20 cout << "输入的行列数均不能大于10!!!!" <<endl; 21 22 cout << "请输入A矩阵相关信息:"<<endl; 23 cout <<"行 NumOfRowA = "; 24 cin >> NumOfRowA; 25 cout <<"列 NumOfColA = "; 26 cin >> NumOfColA; 27 28 cout << "请输入B矩阵相关信息:"<<endl; 29 cout <<"列 NumOfColB = "; 30 cin >> NumOfColB; 31 //用户自定义矩阵元素 32 cout << "请输入A矩阵的元素"<<endl; 33 34 for(i = 0;i < NumOfRowA;i++) 35 { 36 for(j = 0;j < NumOfColA;j++) 37 { 38 cin >> a[i][j]; 39 } 40 } 41 42 cout << "请输入B矩阵的元素"<<endl; 43 44 for(j = 0;j < NumOfColA;j++) 45 { 46 for(m = 0;m < NumOfColB;m++) 47 { 48 cin >> b[j][m]; 49 } 50 } 51 //矩阵乘法的实现 52 for(i = 0;i < NumOfRowA;i++) 53 { 54 for(m = 0;m < NumOfColB;m++) 55 { 56 for(j = 0;j < NumOfColA;j++) 57 { 58 s = s + a[i][j] * b[j][m]; 59 } 60 c[i][m] = s; 61 s = 0; 62 } 63 } 64 65 cout << "矩阵乘法的结果:" <<endl; 66 //输出矩阵结果 67 for(i = 0; i < NumOfRowA;i++) 68 { 69 for(j = 0;j < NumOfColB;j++) 70 { 71 cout << c[i][j] <<"\t"; 72 } 73 cout << endl; 74 } 75 76 return 0; 77 }
时间: 2024-10-14 00:59:21