首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

矩陣乘法原理與 C 語言實現詳解

     編輯:關於C語言

矩陣乘法原理與 C 語言實現詳解

矩陣乘法是線性代數中的核心運算,廣泛應用於圖形學、科學計算與機器學習等領域。給定兩個矩陣 A(m×s)與 B(s×n),其乘積 C = A × B 將是一個 m×n 的矩陣。結果矩陣 C 中的每個元素 C[i][j] 等於 A 的第 i 行向量與 B 的第 j 列向量的內積(點積),即:

C[i][j] = Σ (A[i][k] × B[k][j]),其中 k 從 0 到 s-1。

這意味著 A 的列數必須等於 B 的行數(即 s),乘法才有定義。下圖示意了矩陣乘法的行列對應關係:

矩陣乘法示意圖

C 語言完整實現代碼

以下提供一個標準的 C 語言實現,包含輸入讀取、三重迴圈運算與結果輸出:

#include <stdio.h>

// 宏定義矩陣最大維度
#define MAX_ROW 200
#define MAX_COL 200

int main() {
    int i, j, k;
    int m, s, n; // A: m×s, B: s×n, C: m×n
    int A[MAX_ROW][MAX_COL], B[MAX_ROW][MAX_COL], C[MAX_ROW][MAX_COL] = {{0}};

    // 1. 讀取矩陣維度
    scanf("%d %d %d", &m, &s, &n);

    // 2. 讀取矩陣 A
    for (i = 0; i < m; i++)
        for (j = 0; j < s; j++)
            scanf("%d", &A[i][j]);

    // 3. 讀取矩陣 B
    for (i = 0; i < s; i++)
        for (j = 0; j < n; j++)
            scanf("%d", &B[i][j]);

    // 4. 矩陣乘法核心運算
    for (i = 0; i < m; i++) {
        for (j = 0; j < n; j++) {
            for (k = 0; k < s; k++) {
                C[i][j] += A[i][k] * B[k][j];
            }
        }
    }

    // 5. 輸出結果矩陣 C
    for (i = 0; i < m; i++) {
        for (j = 0; j < n; j++)
            printf("%d ", C[i][j]);
        putchar('\n');
    }
    return 0;
}

關鍵點解析

  • 初始化:結果矩陣 C 必須預先歸零,避免殘留垃圾值影響累加。
  • 迴圈順序:最外層遍歷結果矩陣的行 (i),中間層遍歷列 (j),內層遍歷公共維度 k 進行內積累加。
  • 複雜度:時間複雜度為 O(m×n×s),空間複雜度取決於矩陣大小。

此代碼為教學示例,實際工程中大規模矩陣運算通常會使用優化庫(如 BLAS、OpenBLAS)或平行運算(GPU/CUDA)以提升性能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved