【8-5】如果A是个x行y列的矩阵,B是个y行z列的矩阵,把A和B相乘,其结果将是另一个x行z列的矩阵C。这个矩阵的每个元素是由下面的公式决定的:
结果矩阵中14这个值是通过2 × -2 加上 -6 × -3得到的。
编写一个函数,用于执行两个矩阵的乘法。函数的原型如下:
void matrix_multiply(int *m1, int *m2, int *r, int x, int y, int z);
m1是一个x行y列的矩阵,m2是一个y行z列的矩阵,这两个矩阵应该相乘,结果存储于r中,它是一个x行z列的矩阵。记住,你应该对公式做些修改,以适应C语言下标从0而不是从1开始这个事实!
虽然题目中给了公式,给了示例,也给出了矩阵计算的结果,但是我们还是应该从数学常识中知道矩阵乘法的运算规则:
第一个矩阵第一行的每个数字,各自乘以第二个矩阵第一列对应位置的数字(注意这里是第二个矩阵的第一列,不是行哦),然后将乘积相加,就可以得到矩阵左上角的那个值。也就是说,结果矩阵第m行与第n列交叉位置的那个值,等于第一个矩阵第m行与第二个矩阵第n列,对应位置的每个值的乘积之和。
感兴趣的同学可以通过线性方程的运算证明矩阵的运算规则。(理解矩阵的运算对高等数学、向量运算、图像处理、深度学习都很重要)
知道了运算规则后,我们就看如何代码