Fortran 95 双求和输出不正确
Fortran 95 double summation does not output correctly
我正在尝试用 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左右。
您最初从未设置 s
。所以你得到的完全是垃圾。
您应该在每次迭代后将 s1
重新设置为 0 s = s + s1
。
您还用 1 除以一个更大的整数,因此结果始终为整数 0。您必须选择一项 real
。在我的示例中,我通过使用 1.
.
使 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
我正在尝试用 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左右。
您最初从未设置 s
。所以你得到的完全是垃圾。
您应该在每次迭代后将 s1
重新设置为 0 s = s + s1
。
您还用 1 除以一个更大的整数,因此结果始终为整数 0。您必须选择一项 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