..................の間がプログラム本体です program 7 .................. C 行列とベクトルの掛け算 program main real a(2,2),x(2),y(2) C 行列に値をいれる(値自身は意味ないです) a(1,1)=0.5 a(1,2)=1.0 a(2,1)=0.8 a(2,2)=2.0 C ベクトルに値をいれる x(1)=1.0 x(2)=2.0 C ベクトルyを初期化(値を0に) do i=1,2 y(i)=0 enddo C a*xによりyを求める do i=1,2 do j=1,2 y(i)=y(i)+a(i,j)*x(j) enddo enddo C 出力 write(*,*)"matrix a:" do i=1,2 write(*,*)(a(i,j),j=1,2) enddo write(*,*)"vector x:" write(*,*)(x(i),i=1,2) write(*,*)"vector y=a*x:" write(*,*)(y(i),i=1,2) end .................. program 8 .................. C パラメタ文を使った任意サイズの行列同士の掛け算 program main parameter(nn=3) real a(nn,nn),b(nn,nn),c(nn,nn) C ファイルから行列に値を読み込む do i=1,nn read(*,*)(a(i,j),j=1,nn) enddo do i=1,nn read(*,*)(b(i,j),j=1,nn) enddo C 行列cを初期化(値を0に) do i=1,nn do j=1,nn c(i,j)=0 enddo enddo C a*bによりcを求める do i=1,nn do j=1,nn do k=1,nn c(i,j)=c(i,j)+a(i,k)*b(k,j) enddo enddo enddo C 出力 write(*,*)"matrix a:" do i=1,nn write(*,*)(a(i,j),j=1,nn) enddo write(*,*)"matrix b:" do i=1,nn write(*,*)(b(i,j),j=1,nn) enddo write(*,*)"matrix c=a*b:" do i=1,nn write(*,*)(c(i,j),j=1,nn) enddo end