2017-04-20 30 views
0

乘以兩個數組我試圖乘用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

+0

會發生什麼?你的結果是什麼?任何錯誤消息?哪些錯誤消息? –

+0

你需要初始化'產品' – agentp

回答

-1

嘗試使用MATMUL功能

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

+1

這是一個答案或評論?這不是有效的代碼。 –

+0

這是一個答案。它爲我工作 –

+0

但它是無效的Fortran。 –

4

第二個數組將始終爲零

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) 
+0

你今天早上提供了我的問題的答案嗎?我收到通知並看到了答案,但現在它似乎消失了,我無法訪問它。你刪除了它還是我的問題?如果不是,你可以再次發佈答案嗎?非常感謝! –

+0

@Integrals是的,我刪除它。我犯了一個錯誤。 –

+0

哦,我看到沒問題,順便說一句,你的代碼有一個錯誤,可能比我的正確代碼還要好幾年,組織/結構代碼的方式對我仍然很有幫助。無論如何感謝您的幫助! –