💐The Begin💐点点关注,收藏不迷路💐
Hey,编程小能手们!今天我们来聊聊矩阵乘法,这可是线性代数中的基础操作,也是编程中常见的问题。别急,我会用最简单的方式带你搞懂它,无论你是C语言、C++、Java还是Python高手,都能找到适合自己的教程。
矩阵乘法基础
首先,我们来复习一下矩阵乘法的基本概念。设有矩阵(A)为(n×m)阶矩阵,矩阵(B)为(m×k)阶矩阵,二者相乘得到的矩阵(C)是(n×k)阶矩阵。矩阵(C)中的元素(C[i][j])的计算公式是:[C[i][j] = A[i][0]×B[0][j] + A[i][1]×B[1][j] + … + A[i][m - 1]×B[m - 1][j]]。
C语言实现
<#include
int main() {
int n, m, k;
scanf(“%d %d %d”, &n, &m, &k); // 读取矩阵A的行数n、列数m以及矩阵B的列数k
int matrixA[n][m]; // 定义二维数组存储矩阵A的元素
int matrixB[m][k]; // 定义二维数组存储矩阵B的元素
int result[n][k]; // 定义二维数组存储矩阵相乘的结果,其为n行k列
// 1. 读取矩阵A的元素
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
scanf(“%d”, &matrixA[i][j]); // 逐行逐列读取矩阵A的元素
}
}
// 2. 读取矩阵B的元素
for (int i = 0; i < m; i++) {
for (int j = 0; j < k; j++) {
scanf(“%d”, &matrixB[i][j]); // 逐行逐列读取矩阵B的元素
}
}
// 3. 初始化结果矩阵元素为0
for (int i = 0; i < n; i++) {
for (int j = 0; j < k; j++) {
result[i][j] = 0; // 将结果矩阵每个元素初始化为0
}
}
// 4. 计算矩阵乘法
for (int i = 0; i < n; i++) {
for (int j = 0; j < k; j++) {
for (int p = 0; p < m; p++) {
result[i][j] += matrixA[i][p] * matrixB[p][j]; // 根据矩阵乘法规则计算结果矩阵每个元素的值
}
}
}
// 5. 输出结果矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < k; j++) {
printf(“%d “, result[i][j]); // 逐行逐列输出结果矩阵元素
}
printf(”
”);
}
return 0;
} C++ 语言实现
<#include
using namespace std;
int main() {
int n, m, k;
cin >> n >> m >> k; // 输入矩阵A的行数n、列数m以及矩阵B的列数k
int matrixA[n][m]; // 创建二维数组存储矩阵A的元素
int matrixB[m][k]; // 创建二维数组存储矩阵B的元素
int result[n][k]; // 创建二维数组存储矩阵相乘的结果,为n行k列
// 1. 输入矩阵A的元素
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> matrixA[i][j]; // 逐行逐列输入矩阵A的元素
}
}
// 2. 输入矩阵B的元素
for (int i = 0; i < m; i++) {
for (int j = 0; j < k; j++) {
cin >> matrixB[i][j]; // 逐行逐列输入矩阵B的元素
}
}
// 3. 初始化结果矩阵元素为0
for (int i = 0; i < n; i++) {
for (int j = 0; j < k; j++) {
result[i][j] = 0; // 将结果矩阵每个元素初始化为0
}
}
// 4. 计算矩阵乘法
for (int i = 0; i < n; i++) {
for (int j = 0; j < k; j++) {
for (int p = 0; p < m; p++) {
result[i][j] += matrixA[i][p] * matrixB[p][j]; // 按照矩阵乘法规则计算结果矩阵各元素值
}
}
}
// 5. 输出结果矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < k; j++) {
cout << result[i][j] <<
