求平方数组

时间:2019-04-09 19:23:47

标签: sum fortran

嗨,我想对二维正方形数组求和。假设为所有点i,j定义了数组sum(F)。我可以只用DO来求和整个数组,但是我想从一个小正方形开始,然后到最大数组进行求和,这需要一个F(i,j)循环。如果要单调乏味地写出逻辑,我想对数组DO i = -1,1 DO j = -1,1 value1 = sum(F) END DO END DO DO i = -2,2 DO j = -2,2 value2 = sum(F) END DO END DO DO i = -3,3 DO j = -3,3 value3 = sum(F) END DO END DO 进行如下求和:

i=-30,30, j=-30,30

并继续进行到DO。我试图在一个DO i = -30,30 DO j = -30,30 value4 = sum(F(i:i+1,j:j+1)) END DO END DO 循环中通过

实现
  [HttpGet("admin/AllQuarterEventByMap/{map}")]
  public IActionResult AllQuarterEventByMap([fromRoute] string map)
    {
        return View(_staffMethods.GetQuarterEventsByMap(map));
    }

但这给了我错误的结果。如何解决此问题,以便可以在单个do循环中全部实现?谢谢。

1 个答案:

答案 0 :(得分:3)

如果我正在解密您要尝试的操作,那么您有一个二维数组,其二维范围的自定义范围从-30到30?然后,您要从此中心的3x3矩阵开始,求和。然后将其放大到5x5并求和。继续直到获得整个矩阵的和。

那么您将有30笔款项。是的,您可以在一个do循环中执行此操作。将答案放入一维数组Sums(30)看起来像这样:

do i = 1, 30
   Sums(i) = Sum(F(-i:i,-i:i))
end do

F中的索引符号表示出增长的平方矩阵以馈入Sum函数。