C 教材:矩陣與向量計算範例

以下程式示範兩個向量的內積算法:

                       (9)
                       (7)
          (2 4 6 8 10) (5) = 110
                       (3)
                       (1)

因為我們還不會輸入數值,所以只能在宣告向量或矩陣的時候,
順便寫入數值。

#include <stdio.h>
    
/* 示範向量內積  (demo-dot.c) */
#define N 5

main() {
    int x[N]={2,4,6,8,10}, y[N]={9,7,5,3,1};
    int i, prod;
    
    for (i=0, prod=0; i<N; ++i)
        prod = prod + x[i]*y[i];
    printf("%d\n", prod);
}   

以下程式示範矩陣向量的乘法:

          (1 2 3 4) (6)   ( 53)
          (5 6 7 8)*(5) = (141)
          (9 8 7 6) (7)   (167)
                    (4)

#include <stdio.h>
 
/* 示範矩陣向量乘積  (demo-mvmul.c) */
#define M 3
#define N 4
 
main() {
    int A[M][N]={1,2,3,4,5,6,7,8,9,8,7,6}, x[N]={6,5,7,4}, y[M];
    int i, j;
  
    for (i=0; i<M; ++i) {
        y[i] = 0;
        for (j=0; j<N; ++j)
            y[i] = y[i] + A[i][j]*x[j];
    }
    for (i=0; i<M; ++i)
        printf("%5d\n", y[i]);
}

習題

  1. 輸入一個矩陣
              1 2 3 4
              5 6 7 8
              9 8 7 6
    
    輸出它的轉置矩陣。
  2. 用 C 語言程式,計算以下兩個矩陣的乘積
              (1 2 3 4)   (7 8)
              (5 6 7 8) * (3 5)
              (9 8 7 6)   (6 9)
                          (4 4)
    

單維彰 (2001/02/22) --- [Prev] [Next] [Up]