問題3の答え
「3重ループ」というのがミソです。わかりましたか?『Cmat』の全成分を初期化しておくのも忘れてはいけません。
do i=1,3 do j=1,3 Cmat(i,j) = 0.0d0 end do end do do i=1,3 do j=1,3 do k=1,3 Cmat(i,j) = Cmat(i,j) +Amat(i,k)*Bmat(k,j) end do end do end doこのような多重ループを使いこなすことで、複雑な計算が可能になります。
この例の場合、ループの順番{i,j,k}は結果に影響しません。
行列の積は物理の問題では度々出てくるので、これをいちいち打ち込んでいると大変です。
そんな時のために、組み込み配列関数『matmul』というものが用意されています。
Cmat = matmul(Amat,Bmat)物凄く簡単ですね。今後はこれを使いましょう。
でも、行列積のルーチンくらいは自分で書けるように練習しておかないと、あとで困ります。
この関数、成分を指定していないことに注目してください。
Fortranにはこのように「配列」そのものを扱う命令がいくつも用意されていて、
これらを使いこなせれば配列の扱いは一人前です。それについては後で説明するので、今はまず「成分」をちゃんと扱えるよう練習しましょう。