在fortran中乘以两个数组

时间:2017-04-20 10:47:00

标签: arrays fortran matrix-multiplication

我正在尝试使用fortran将两个数组相乘,以下是我的代码

program multiplyarray
    implicit none
! Declare Variables
    integer, dimension(2,3 :: first_array
    integer, dimension(3,2) ::second_array
    integer, dimension(2,2) :: resultant_array
    integer:: i, j, a, b, k, product


! Generating values for array
    a = 2
    do i = 1,2
        do j = 1,3

        first_array(i,j) = a
        a = a + 2
        end do
    end do

   print*,first_array

    do i = 1,3
        do j = 1,2

            b = 0
            second_array(i,j) = b
            b = b + 3
        end do
    end do

! Multiplying both arrays
        do i = 1,2
            do j = 1,2
                do k = 1,3
                   product = product + first_array(i,k) * second_array(k,j)
                end do
                    resultant_array (j,i) = product
            end do
        end do

! Displaying the resultant matrix
        do i = 1,2
            do j = 1,2
                    print *,resultant_array(i,j)
            end do
        end do

end program multiplyarray

可能是什么错误?我没有获得单个矩阵,因此我可以将它们相乘以得到结果矩阵。第一个矩阵是0,而第二个矩阵的结果也是0

2 个答案:

答案 0 :(得分:4)

第二个数组将始终为零

new

您始终将 b = 0 second_array(i,j) = b b = b + 3 设置为零。行b无效,因为无论如何b = b + 3始终设置为零。

b为零时,产品也将为零。

正如HighPerformanceMark所建议的那样,您可以使用second_array轻松地将两个矩阵相乘,或者使用BLAS库轻松快速地增加两个矩阵。

matmul

答案 1 :(得分:-1)

尝试使用matmul函数

matmul(first_array,second_array)= resul_array 打印*,resul_array