1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
| !****************************************************
! 行列とベクトルの積を計算
! : y = A x
!
! date name version
! 2018.08.15 mk-mode.com 1.00 新規作成
!
! Copyright(C) 2018 mk-mode.com All Rights Reserved.
!****************************************************
!
program mv_product
implicit none
integer :: i, j, n
integer, parameter :: nmax = 100
real(kind=8) :: a(nmax, nmax), x(nmax), y(nmax), tmp
write (*,*) 'Input a dimension:'
read (*,*) n
write (*,*) 'Input a vector:'
read (*,*) (x(i), i = 1, n)
write (*,*) 'Input a matrix:'
do i = 1, n
read (*,*) (a(i, j), j = 1, n)
end do
! 組み込み関数を使用しない場合
!do i = 1, n
! tmp = 0
! do j = 1, n
! tmp = tmp + a(i, j) * x(j)
! end do
! y(i) = tmp
!end do
!
! 組み込み関数を使用する場合
y(1:n) = matmul(a(1:n, 1:n), x(1:n))
write (*,*) (y(i), i = 1, n)
stop
end program mv_product
|