第四題: 下列是 A 與 B 兩個矩陣的乘法,左邊是 2x3 矩陣,右邊是 3x2 矩陣,相乘的結果是 C, 為 2x2 矩陣。
計算方法是左邊矩陣的「列」乘以右邊矩陣的「行」,並加總起來,亦即:
若以陣列來儲存矩陣資料,請依照【表四】C/C++語言的格式,寫出一個 mxn 矩陣乘以 nxp 矩陣的演算法,亦即
。【25 分】
前兩個 for 循環遍歷 A 的行(i)和 B 的列(j),以計算結果矩陣 C 的每個元素 c[i][j]。
第三個 for 循環(在前兩個內部)遍歷 A 的行和 B 的列的元素(k),將它們相乘並將結果相加,以獲得 c[i][j] 的值。
語句 c[i][j] = 0; 在求和過程開始前將 C 的當前元素初始化為零。
void Matrix_Multiplication(int m, int n, int p, int a[m][n], int b[n][p], int c[m][p]) {
for(int i = 0; i < m; i++) {
for(int j = 0; j < p; j++) {
c[i][j] = 0; // 初始化元素為 0
for(int k = 0; k < n; k++) {
c[i][j] += a[i][k] * b[k][j];
}
}
}
}