相关文章推荐
SCORE(1,1), SCORE(1,2), SCORE(1,3), SCORE(1,4), SCORE(2,1), SCORE(2,2), SCORE(2,3), SCORE(2,4), SCORE(3,1), SCORE(3,2), SCORE(3,3), SCORE(3,4)

先變動第一個註標,再變動第二個的,稱為依行 (columnwise) 次序。即先處理第一行的各 項資料,再處理第二行,依此次序,直到最後一行。
再以上述 SCORE(3,4) 為例, 其處理次序如下,

SCORE(1,1), SCORE(2,1), SCORE(3,1), SCORE(1,2), SCORE(2,2), SCORE(3,2), SCORE(1,3), SCORE(2,3), SCORE(3,3), SCORE(1,4), SCORE(2,4), SCORE(3,4)

假如沒有規定次序,例如在輸出/輸入串列中 使用陣列名稱 , 依照 FORTRAN 慣例, 二維陣列依行次序處理

使用 DO 迴圈

INTEGER LEVEL, LIMIT PARAMETER (LEVEL = 4, LIMIT = 50) REAL SCORE(LEVEL, LIMIT) INTEGER I, J DO 20 I = 1, LEVEL DO 10 J = 1, LIMIT READ *, SCORE(I, J) 10 CONTINUE 20 CONTINUE

使用陣列名稱

INTEGER SCORE(3,4) READ *, SCORE

使用隱式 DO 迴圈

READ *, (( SCORE(I,J), J = 1, LIMIT ) , I=1, LEVEL ) TEMPS (source) 上一章談到副程式可以使用一維陣列做為引數,同樣可以使用多維陣列做為引數。 同樣實際引數和形式引數,都必須有陣列宣告。

8.3 例題 :

  • Pollution report: POLLUT (source)
  • Oceanographic data analysis: OCEAN (source)

    8.4 矩陣

    含有 m 列和 n 行數值的二維陣列, 稱為 m x n 矩陣 (matrix)。

    兩個矩陣 A 和 B 相等 ,寫成 A = B, 假如

  • A 的列數和 B 的列數相同, 而且A 的行數也和 B 的行數相同。
  • A 的每一項和 B 相對應的每一項相等。
  • 矩陣加減,純量相乘

    假設 A ij 和 B ij 分別為 m x n 矩陣 A 和 B 的第 i 列和第 j 行的項目, 則 A + B 的第 i 列和第 j 行的項目為 A ij + B ij

    同樣地, A - B 的第 i 列和第 j 行的項目為 A ij - B ij
    純量 c 和 m x n 矩陣 A 相乘, 其乘積矩陣 cA 的第 i 列和第 j 行的項目為 cA ij

    以下是處理矩陣相加的 FORTRAN 副程式, 略為修改即可處理矩陣相減和純量相乘。

    SUBROUTINE MATSUM(A, B, C, LIMIT, M, N) INTEGER LIMIT, M, N, I, J REAL A(LIMIT, LIMIT), B(LIMIT, LIMIT), C(LIMIT, LIMIT) DO 20 I = 1, M DO 10 J = 1, N C(I,J) = A(I,J) + B(I,J) 10 CONTINUE 20 CONTINUE

    假設 A 為 m x n 矩陣, B 為 n x p 矩陣。 注意 A 的行數必須 等於 B 的列數。 則 乘積 AB 為一 m x p 矩陣, 其第 i 列和第 j 行的項目為

    A i1 B 1j + A i2 B 2j + ... + A in B nj

    以下是處理矩陣相乘的 FORTRAN 副程式。

    SUBROUTINE MATMUL(A, B, C, LIMIT, M, N, P) INTEGER LIMIT, M, N, P, I, J, K REAL A(LIMIT, LIMIT), B(LIMIT, LIMIT), C(LIMIT, LIMIT) DO 30 I = 1, M DO 20 J = 1, N C(I,J) = 0.0 DO 10 K = 1, P C(I,J) = C(I,J) + A(I,K) * B(K,J) 10 CONTINUE 20 CONTINUE 30 CONTINUE

    FORTRAN 90 特色

    處理矩陣可用下列預先界定的函數:

    MAXVAL(A) MINVAL(A) MAXLOC(A) MINLOC(A) PRODUCT(A) SIZE(A)