fortranの知識としては、かなり初歩的なものだけど、
載せておくことにする。
行列 [C]=[A][B]
の計算。
まず、そのサブルーチン
■■■■■■■■■■■■■■■■■■■■■■■■■■
****************************************
subroutine for product of matrix
****************************************
正方行列Aと、
これと整合的な行列Bの積
C=ABを計算する
subroutine PROM (A,B,C,NA,NB,ND1,ND2)
dimension A(ND1,ND1), B(ND1,ND2), C(ND1,ND2)
do 130 i=1,NA ! 列方向を計算するための繰り返し
do 120 j=1,NB ! 行方向を計算するための繰り返し
s=0.
do 110 k=1,NA ! 成分を計算するための繰り返し
s=s+A(i,k)*B(k,j)
110 continue
(i,j)=s ! 行列Cの(i,j)成分がsという事
120 continue
130 continue
return
end
■■■■■■■■■■■■■■■■■■■■■■■■■■
一応、機能するか
具体的な数値を入れて簡単に確認。
■■■■■■■■■■■■■■■■■■■■■■■■■■
*********************
test for PROM
*********************
dimension A(3,3),B(3,3),C(3,3)
integer i,j
data A/3.,4.,9.,4.,2.,8.,9.,8.,6./,
& B/1.,2.,1.,2.,3.,1.,1.,1.,2./
call PROM(A,B,C,3,3,3,3)
do 220 i=1,3
do 210 j=1,3
write(6,*) C(i,j)
210 continue
220 continue
stop
end
■■■■■■■■■■■■■■■■■■■■■■■■■■
文字はずれてますが。
ちなみに、
NAは行列ABCの行数
NBは行列BCの列数
ND1は主プログラムにおける行方向のディメンション (行列Aは列方向も)
ND2は主プログラムにおける列方向のディメンション
参考文献
建築振動理論(絶版