fortran中两个数组相乘

Multiplying two arrays in fortran

我正在尝试使用 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

第二个数组将始终为零

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

您总是将 b 设置为零。 b = b + 3 行没有任何效果,因为 b 总是设置为零。

second_array为零时,乘积也为零。


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

result = matmul(first_array, second_array)

尝试使用 matmul 函数

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