Fortran Coder

数值计算中开方出现无穷值

查看数: 11985 | 评论数: 3 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2014-4-1 14:17

正文摘要:

运行的时候,显示开方错误。我在调试的过程中找到了那一行,应该是出现了无穷值,导致开方错误。。。。但是找不出问题的根源是什么,求大神给我查查看啊,跪谢了! ...

回复

fcode 发表于 2014-4-1 17:18:28
我用的 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

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

管理员大人,你好,请问一下,在你的编译器上,这段代码能运行不出错么?是什么编译器啊?
谢谢您的帮助,DEBUG不是不熟悉啊,只会一点点粗浅的内容
fcode 发表于 2014-4-1 16:10:39
既然都找到错误行了,那么继续向上调试吧。看看是哪个变量无穷大,继续向上插入断点,追踪是在哪里出现了无穷大。

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

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

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-18 10:20

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表