2023年2月18日土曜日

FORTRANの行列・配列関連のメモ

matrix.md

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 件のコメント:

コメントを投稿