|
矩阵与矩阵相乘应满足的条件:
1、矩阵 A 的列数必须等于矩阵 B 的行数;
2、设矩阵 C 是矩阵A 与 矩阵B 相乘结果存放的矩阵,那么矩阵 C 的行数等于矩阵A 的行数,矩阵C 的列数等于矩阵 B 的列数;
3、矩阵C 中的第 i 行 j 列的元素是 矩阵A 中的第 i 行元素与 矩阵B 中第 j 列元素的乘积之和。
例子如下图所示:
![]()
![]()
C 语言算法(以上面为例):
#include <stdio.h>
int main()
{
int a [2][3] = {{1, 4, 6}, {2, 8, 5}};
int b [3][2] = {{3,7}, {9,5}, {8,4}};
int c [2][2];
int i;
int j;
int k;
for (i = 0; i < 2; i++)
for (j = 0; j < 2; j++) {
c [i][j] = 0;
for (k = 0; k <= 2; k++)
c [i][j] += a [i][k] * b [k][j];
}
printf ("[%d][%d]\n", c[0][0],c[0][1]);
printf ("[%d][%d]\n", c[1][0],c[1][1]);
return (0);
} 运行与输出:beyes@linux-beyes:~/C/structer> ./matrix.exe
[87][51]
[118][74]
说明:
第一层 for 循环中的 i 表示,矩阵 A 由于有 2 行,所以要进行 2 次循环才完成矩阵的运算。
第二层 for 循环中的 j 表示,矩阵 B 由于有 2 列,矩阵A中的每一行都要与矩阵B中的每1列相乘。
第三层 for 循环中的 k 表示,矩阵A的每行和矩阵B的每列都有 3 个元素,所以需要有 3 次的相乘然后相加的运算才会得到矩阵C中的一个元素值。 |
|