Fortran 95双重求和输出不正确

时间:2017-06-14 05:14:43

标签: sum fortran fortran95

我试图在Fortran 95中编写一个双重求和,但是,我似乎从来没有得到正确的输出。似乎总是输出Fortran非常小的实数。这是我的代码:

    program summation
    implicit none
    integer::i,j,m,n
    real::s,s1
    s1=0
      do i=1,100
        do j=1,100
          s1=s1+(1/((i**2)+(j**2)))
        end do
        s=s1+s
      end do
    print*, s
    end program summation

我认为s的结束值应该在6.4左右。

1 个答案:

答案 0 :(得分:2)

您最初从未设置s。所以你得到了完整的垃圾。

s1之后,您应该在每次迭代中将s = s + s1重新设置为0。

您还将1除以一个更大的整数,因此结果始终为整数0.您必须使用一个tye术语real。在我的示例中,我使用1.使其真实。

所以

s=0

do i=1,100
 s1=0
 do j=1,100
   s1=s1+(1./((i**2)+(j**2)))
 end do
 s=s1+s
end do

print*, s

是可能的,但为什么不把所有东西都归为一个累加器呢?

s=0

do i=1,100
 do j=1,100
   s=s+(1./((i**2)+(j**2)))
 end do
end do

print*, s