【发布时间】:2016-12-05 22:07:23
【问题描述】:
我在这部分代码中遇到浮点溢出错误。哪位大神帮我看看原因。
do j=1,ny-1
do i=1,nx-1
sum = 0.0d0
do k=0,1000
n=2.0d0*dfloat(k)+ 1.0d0
sum = sum + ((dsinh(n*pi*x(i))*dcos(n*pi*y(j)))/((n*n*pi*pi)*dsinh(2*n*pi)))
end do
ue(i,j)= (x(i)/(4.0d0))- 4.0d0*sum
end do
end do
【问题讨论】:
-
一些 IMPLICIT NONE 和实际程序可能会有所帮助。我将从 sum = sum + 右边的东西的中间产品开始。然后,如果/当 k 变大时,您可能希望 sum 是 double (8) 的乘积是 float (*4)。由于 SUM 是一个内在函数,我会将“sum”重命名为 MySum,或者有一个数组维度(0:1000)并使用 SUM(MySum)。为什么要从 0 开始数组? 1001分似乎很奇怪。 (npipi) 和 (2*npi) 和 (n*pi) 可以是预先计算的 A、B 和 C 或参数,然后它更快,看起来更干净.
-
欢迎来到 Stack Overflow。你应该展示一个完整的程序并描述你是如何编译它的,并展示你得到的实际输出。不要忘记输入数据。请务必阅读帮助页面stackoverflow.com/tourstackoverflow.com/help/how-to-ask
-
请努力正确格式化您的帖子和代码。我对您的代码应用了一些基本的缩进。
标签: fortran fortran90 fortran95