c语言:输入一个2行3列的矩阵A和一个3行4列的矩阵B,计算两矩阵的乘积

2020-05-04 财经 66阅读

解题过程如下:

#include ;#include

#define L 2,#define M 3,#define N 4

}printf("\n");}return;}int main(void){double A[L][M] = {{0}};

double B[M][N] = {{0}};double C[L][N] = {{0}};int i = 0, j = 0, k = 0;

printf("\nGenerate A[%d][%d]:\n", L, M);

genArr(&A[0][0], L, M);

printMatrix(&A[0][0], L, M);

printf("\nGenerate B[%d][%d]:\n", M, N);

{for (k = 0; k < N; ++k)

{C[i][k] = 0;for (j = 0; j < M; ++j)

{C[i][k] += A[i][j] * B[j][k];}}}printf("\nCalc C[%d][%d]:\n", L, N);

printMatrix(&C[0][0], L, N);return 0;}


扩展资料

性质:

矩阵相乘最重要的方法是一般矩阵乘积。它只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义  。

一般单指矩阵乘积时,指的便是一般矩阵乘积。一个m×n的矩阵就是m×n个数排成m行n列的一个数阵。由于它把许多数据紧凑地集中到了一起,所以有时候可以简便地表示一些复杂的模型,如电力系统网络模型。

当矩阵A的列数(column)等于矩阵B的行数(row)时,A与B可以相乘。矩阵C的行数等于矩阵A的行数,C的列数等于B的列数。乘积C的第m行第n列的元素等于矩阵A的第m行的元素与矩阵B的第n列对应元素乘积之和。

当提及“矩阵相乘”或者“矩阵乘法”的时候,并不是指代这些特殊的乘积形式,而是定义中所描述的矩阵乘法。在描述这些特殊乘积时,使用这些运算的专用名称和符号来避免表述歧义。

把给定的图转为邻接矩阵,即A(i,j)=1当且仅当存在一条边i->j。令C=A*A,那么C(i,j)=ΣA(i,k)*A(k,j),实际上就等于从点i到点j恰好经过2条边的路径数(枚举k为中转点)。

类似地,C*A的第i行第j列就表示从i到j经过3条边的路径数。同理,如果要求经过k步的路径数,只需要二分求出A^k即可。

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com