如何在Fortran中计算数组元素的乘积之和?

时间:2018-03-21 14:24:51

标签: fortran

鉴于A(I,J,K) I = 1,2,3和J = 1,2,3,我想采用以下数额

B(K) = c(1)*c(1)*A(1,1,K) + c(1)*c(2)*A(1,2,K) + c(1)*c(3)*A(1,3,K) + &
       c(2)*c(1)*A(2,1,K) + c(2)*c(2)*A(2,2,K) + c(2)*c(3)*A(2,3,K) + &
       c(3)*c(1)*A(3,1,K) + c(3)*c(2)*A(3,2,K) + c(3)*c(3)*A(3,3,K)

对于IJ的大值来说很麻烦,c(I)c(J)是每个IJ的常量。

如何更有效地编写此代码?我认为DO WHILE循环可能是答案,但我是初学者,无法弄清楚如何做到这一点。有人可以给我一个提示吗?

我的尝试:

DO K = 1,100
   J = 1.d0
   DO WHILE (J .LE. 3)
      I = 1.d0
      DO WHILE (I .LE. 3)
         A(I,J,K) = c(I)*c(J)*A(I,J,K) ! + ???
         I = I + 1.d0
      END DO
   END DO
END DO

1 个答案:

答案 0 :(得分:3)

只需对J使用do循环,就像你对K所做的那样。累计B(K)中的和,从0开始。

DO K = 1,100
B(K) = 0
   DO J = 1,3
      DO I = 1,3
         B(K) = B(K) + c(I)*c(J)*A(I,J,K) 
      END DO
   END DO
END DO