Fortran Coder

标题: 数值计算中开方出现无穷值 [打印本页]

作者: wansq    时间: 2014-4-1 14:17
标题: 数值计算中开方出现无穷值
运行的时候,显示开方错误。我在调试的过程中找到了那一行,应该是出现了无穷值,导致开方错误。。。。但是找不出问题的根源是什么,求大神给我查查看啊,跪谢了!

QQ截图20140401135310.png (11.44 KB, 下载次数: 253)

QQ截图20140401135310.png

QQ截图20140401141400.png (9.33 KB, 下载次数: 246)

QQ截图20140401141400.png

1.TXT

29 Bytes, 下载次数: 2

2.txt

164 Bytes, 下载次数: 4

3.txt

67 Bytes, 下载次数: 2

100.f90

11.79 KB, 下载次数: 4


作者: fcode    时间: 2014-4-1 16:10
既然都找到错误行了,那么继续向上调试吧。看看是哪个变量无穷大,继续向上插入断点,追踪是在哪里出现了无穷大。

部分编译器也允许把浮点错误抛出,可以修改设置后运行,查看哪里出现了浮点数错误。

Debug 是基本功,希望你学会。

在我的编译器上,这段代码可以正常运行。其中的 TEST15.txt 部分内容为
   1   0.120E+03
   2   0.240E+03
   3   0.360E+03
   4   0.480E+03
   5   0.600E+03
   6   0.720E+03
   7   0.840E+03
   8   0.960E+03
   9   0.108E+04
  10   0.120E+04
  11   0.132E+04
  12   0.144E+04
  13   0.156E+04
  14   0.168E+04
  15   0.180E+04
  16   0.192E+04
  17   0.204E+04
  18   0.216E+04
  19   0.228E+04
  20   0.240E+04
  21   0.252E+04
  22   0.264E+04
  23   0.276E+04
作者: wansq    时间: 2014-4-1 16:24
fcode 发表于 2014-4-1 16:10
既然都找到错误行了,那么继续向上调试吧。看看是哪个变量无穷大,继续向上插入断点,追踪是在哪里出现了无 ...

管理员大人,你好,请问一下,在你的编译器上,这段代码能运行不出错么?是什么编译器啊?
谢谢您的帮助,DEBUG不是不熟悉啊,只会一点点粗浅的内容

作者: fcode    时间: 2014-4-1 17:18
我用的 IVFXE2013 ,能运行是能运行,但是有很多 NaN。
原因大概在 198 行附近。
[Fortran] 纯文本查看 复制代码
DV2=((YY(J+1)-YY(J))/(XX(J+1)-XX(J))-(YY(J)-YY(J-1))/(XX(J)-XX(J-1)))*2/(XX(J+1)-XX(J-1))

这里大概是个微商求导。但是 XX 有相邻的点相等的,于是造成了除数为 0






欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2