Fortran-vector-and-matrix-multiplication

提供:Dev Guides
移動先:案内検索

Fortran-ベクトルおよび行列乗算関数

次の表に、ベクトルと行列の乗算関数を示します。

Function Description
dot_product(vector_a, vector_b) This function returns a scalar product of two input vectors, which must have the same length.
matmul (matrix_a, matrix_b) It returns the matrix product of two matrices, which must be consistent, i.e. have the dimensions like (m, k) and (k, n)

次の例は、内積を示しています。

program arrayDotProduct

   real, dimension(5) :: a, b
   integer:: i, asize, bsize

   asize = size(a)
   bsize = size(b)

   do i = 1, asize
      a(i) = i
   end do

   do i = 1, bsize
      b(i) = i*2
   end do

   do i = 1, asize
      Print *, a(i)
   end do

   do i = 1, bsize
      Print *, b(i)
   end do

   Print*, 'Vector Multiplication: Dot Product:'
   Print*, dot_product(a, b)

end program arrayDotProduct

上記のコードをコンパイルして実行すると、次の結果が生成されます。

1.00000000
2.00000000
3.00000000
4.00000000
5.00000000
2.00000000
4.00000000
6.00000000
8.00000000
10.0000000
Vector Multiplication: Dot Product:
110.000000
  • 例 *

次の例は、行列の乗算を示しています。

program matMulProduct

   integer, dimension(3,3) :: a, b, c
   integer :: i, j

   do i = 1, 3
      do j = 1, 3
         a(i, j) = i+j
      end do
   end do

   print* , 'Matrix Multiplication: A Matrix'

   do i = 1, 3
      do j = 1, 3
         print*, a(i, j)
      end do
   end do

   do i = 1, 3
      do j = 1, 3
         b(i, j) = i*j
      end do
   end do

   Print*, 'Matrix Multiplication: B Matrix'

   do i = 1, 3
      do j = 1, 3
         print*, b(i, j)
      end do
   end do

   c = matmul(a, b)
   Print*, 'Matrix Multiplication: Result Matrix'

   do i = 1, 3
      do j = 1, 3
         print*, c(i, j)
      end do
   end do

end program matMulProduct

上記のコードをコンパイルして実行すると、次の結果が生成されます。

Matrix Multiplication: A Matrix
2
3
4
3
4
5
4
5
6
 Matrix Multiplication: B Matrix
1
2
3
2
4
6
3
6
9
Matrix Multiplication: Result Matrix
20
40
60
26
52
78
32
64
96