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