代码之家  ›  专栏  ›  技术社区  ›  idladle

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

  •  0
  • idladle  · 技术社区  · 7 年前

    鉴于 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)
    

    对于较大的 J 具有 c(I) c(J) 为每个 J

    如何更有效地编写此代码?我认为 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 回复  |  直到 7 年前
        1
  •  3
  •   L. Scott Johnson user3836982    7 年前

    只需对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