欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > 矩阵乘法        ‌‍‎‏

矩阵乘法        ‌‍‎‏

2025/5/13 21:24:38 来源:https://blog.csdn.net/qq_41840843/article/details/144169015  浏览:    关键词:矩阵乘法        ‌‍‎‏

矩阵乘法

      • C语言代码
      • C++ 语言代码
      • Java语言代码
      • Python语言代码


💐The Begin💐点点关注,收藏不迷路💐

计算两个矩阵的乘法:

设有矩阵(A)为(n×m)阶矩阵,矩阵(B)为(m×k)阶矩阵,二者相乘得到的矩阵(C)是(n×k)阶矩阵。

对于矩阵(C)中的元素(C[i][j])(其中(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]]。

输入

第一行为n, m, k,表示A矩阵是n行m列,B矩阵是m行k列,n, m, k均小于100
然后先后输入A和B两个矩阵,A矩阵n行m列,B矩阵m行k列,矩阵中每个元素的绝对值不会大于1000。

输出

输出矩阵C,一共n行,每行k个整数,整数之间以一个空格分开。

样例输入

3 2 3
1 1
1 1
1 1
1 1 1
1 1 1

样例输出

2 2 2
2 2 2
2 2 2

先获取矩阵 (A) 的行数 (n)、列数 (m) 以及矩阵 (B) 的列数 (k),然后分别读取两个矩阵的元素内容,接着初始化结果矩阵的元素为 (0),再通过三层嵌套循环按照矩阵乘法的规则(即 (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 <stdio.h>int main() {int n, m, k;scanf("%d %d %d", &n, &m, &k);  // 读取矩阵A的行数n、列数m以及矩阵B的列数kint 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. 初始化结果矩阵元素为0for (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("\n");}return 0;
}

C++ 语言代码

#include <iostream>
using namespace std;int main() {int n, m, k;cin >> n >> m >> k;  // 输入矩阵A的行数n、列数m以及矩阵B的列数kint 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. 初始化结果矩阵元素为0for (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] << " ";  // 逐行逐列输出结果矩阵元素}cout << endl;}return 0;
}

Java语言代码

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();  // 获取矩阵A的行数nint m = scanner.nextInt();  // 获取矩阵A的列数mint k = scanner.nextInt();  // 获取矩阵B的列数kint[][] matrixA = new int[n][m];  // 定义二维数组存储矩阵A的元素int[][] matrixB = new int[m][k];  // 定义二维数组存储矩阵B的元素int[][] result = new int[n][k];  // 定义二维数组存储矩阵相乘的结果,是n行k列// 1. 读取矩阵A的元素for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {matrixA[i][j] = scanner.nextInt();  // 逐行逐列读取矩阵A的元素并存入数组}}// 2. 读取矩阵B的元素for (int i = 0; i < m; i++) {for (int j = 0; j < k; j++) {matrixB[i][j] = scanner.nextInt();  // 逐行逐列读取矩阵B的元素并存入数组}}// 3. 初始化结果矩阵元素为0for (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++) {System.out.print(result[i][j] + " ");  // 逐行逐列输出结果矩阵元素}System.out.println();}}
}

Python语言代码

n, m, k = map(int, input().split())  // 获取矩阵A的行数n、列数m以及矩阵B的列数k
matrixA = [list(map(int, input().split())) for _ in range(n)]  // 获取矩阵A的元素,构建二维列表
matrixB = [list(map(int, input().split())) for _ in range(m)]  // 获取矩阵B的元素,构建二维列表result = [[0] * k for _ in range(n)]  // 创建一个n行k列的二维列表,初始值都为0,用于存储结果矩阵# 计算矩阵乘法
for i in range(n):for j in range(k):for p in range(m):result[i][j] += matrixA[i][p] * matrixB[p][j]  // 根据矩阵乘法规则计算结果矩阵各元素值# 输出结果矩阵
for row in result:print(" ".join(map(str, row)))  // 将每行的整数列表转换为字符串,用空格连接后输出

在这里插入图片描述


💐The End💐点点关注,收藏不迷路💐

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词