FORTRANの行列関連の計算
行列のチュートリアル
行列の初期化
! DO文は不要で「:」を使って一括でできる
A(:) = 0.d0 ! VECTOR
A(:,:) = 0.d0 ! MATRIX
行列のイコール
INTEGER :: A(2,2), B(2,2), i
A(1,1) = 11 ; A(1,2) = 12
A(2,1) = 21 ; A(2,2) = 22
B=A ! イコールはこれでよし
DO i = 1,2
PRINT*, B(i,:)
END DO
行列の積
標準ライブラリの MATMUL を使う
PROGRAM TEST
REAL(8) :: A(2,2), B(2,2), C(2,2)
A(1,1) = 4.d0 ; B(1,1) = 3.d0
A(1,2) = 2.d0 ; B(1,2) = 4.d0
A(2,1) = 1.d0 ; B(2,1) = 0.d0
A(2,2) = 3.d0 ; B(2,2) = 5.d0
C = MATMUL(A,B) ! 積 C = AB の計算
DO i = 1, 2
PRINT*, C(i,:) ! 表示
END DO
END PROGRAM TEST
積が計算できれば行列xベクトルも計算できる
PROGRAM TEST2
REAL(8) :: A(2,2), B(2), C(2)
A(1,1) = 4.d0
A(1,2) = 1.d0
A(2,1) = 2.d0
A(2,2) = 9.d0
B(1) = 8.d0
B(2) = -2.d0
C = MATMUL(A,B)
PRINT*, C(1)
PRINT*, C(2)
END PROGRAM TEST2
内積 dot_product(A,B)、転置 transpose(A) も使用可。 逆行列等は他の記事を参考に。
配列関係
配列の和
配列 A(5) のとき
- SUM(A) : 総和
- PROCUCT(A) : 総乗
- MINVAL(A) : 最小値
- MAXVAL(A) : 最大値
- SIZE(A) : 要素数 (A(2,4)だと2x4=8が出力)
0 件のコメント:
コメントを投稿