跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

矩阵乘法怎么做?快速掌握不同语言的实现方法!

💐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] <<
                            

相关文章