問題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にはこのように「配列」そのものを扱う命令がいくつも用意されていて、 これらを使いこなせれば配列の扱いは一人前です。
それについては後で説明するので、今はまず「成分」をちゃんと扱えるよう練習しましょう。