在數學語言中,序列其實就是一個向量。 向量中的每個元素又稱為分量。 在概念上,向量與序列,有以下三點不同:
在數學語言中,雙足標序列其實就是一個矩陣。
雙足標序列相對於矩陣,也有類似序列相對於向量那樣的不同。
但是這些小不同,並不影響大體的概念對應。
所以,從此以後,我們就認為序列即向量 (行向量或列向量都可能)
一范 M 列 N 行的矩陣,又稱 M 乘 N 矩陣,
可以想像是由 N 個 M 維的行向量所組成,
或是由 M 個 N 維的列向量所組成。
以下程式設定了一個 3x4 的矩陣,名叫 A:
1 2 3 4 5 6 7 8 9 8 7 6
#include <stdio.h> /* 示範一個矩陣 (test-matrix.c) */ #define M 3 #define N 4 main() { int i, j, A[M][N]={1,2,3,4,5,6,7,8,9,8,7,6}; printf("The first row is: "); for (i=0, j=0; j<N; ++j) printf("%3d", A[i][j]); putchar('\n'); printf("The 3rd column is: "); for (i=0, j=2; i<M; ++i) printf("%3d", A[i][j]); putchar('\n'); printf("The main diagonal is: "); for (i=0, j=0; i<M && j<N; ++i, ++j) printf("%3d", A[i][j]); putchar('\n'); }
從以上的範例,我們看到,在宣告的階段, A[M][N] 就宣告了一個 M 乘 N 矩陣, 而且在宣告指令中,可以順便定義矩陣的值。 定義的方法,是按照列的順序,稱為列導向 (row oriented), 依序寫出元素的值。 就如同序列一樣,矩陣元素的足標必須從 0 開始。 所以數學語言所謂的第一列,在 C 是 0 號列; 數學說的第三行,在 C 是 2 號行; 數學說的 a24 8素,在 C 是 A[1][3]。
也如同序列一樣,C 語言不會替您檢查輸入的元素個數是不是與矩陣的宣告個數一樣多。 例如一個 3x4 的矩陣共有 12 個元素,如果您定義了 9 個數值, 則剩下三個矩陣元素沒有定義, 它們是 A[2][1], A[2][2], A[2][3]。 如果您定義了 15 個數值,則前 12 個定義給了矩陣 A, 但是多出來三個則依序佔用了後續的記憶體。 故不得不慎。
習題