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