Fortran 95 の 2 次元の配列 (行列) について簡単な質問があります。私の知る限り、数学では行列内の要素を Aij として定義します。ここで、i はその行を表し、j はその列を表します。単純に をコーディングするwrite(*,*) Matrix
と、行と列が反転した結果が得られます。次のコード例を見てください。
program TEST
implicit none
integer :: P(3,3), i
P(1,1)=1
P(1,2)=2
P(1,3)=3
P(2,1)=4
P(2,2)=5
P(2,3)=6
P(3,1)=7
P(3,2)=8
P(3,3)=9
do i=1,3
write(*,"(3(I1,1X))") P(i,1:3)
enddo
write(*,*)
write(*,"(3(I1,1X))") P
end program TEST
上記のループ (行を修正し、その中の各列を出力する) を使用すると、期待どおりの結果が得られます。
1 2 3
4 5 6
7 8 9
最後のステートメントを使用すると、次のwrite(*,"(3(I1,1X))") P
ようになります。
1 4 7
2 5 8
3 6 9
ここで何か間違ったことをしていますか?