Fortran Coder

查看: 11965|回复: 3
打印 上一主题 下一主题

[数值问题] 数值计算中开方出现无穷值

[复制链接]

12

帖子

4

主题

0

精华

入门

F 币
47 元
贡献
31 点
跳转到指定楼层
楼主
发表于 2014-4-1 14:17:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
运行的时候,显示开方错误。我在调试的过程中找到了那一行,应该是出现了无穷值,导致开方错误。。。。但是找不出问题的根源是什么,求大神给我查查看啊,跪谢了!

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

QQ截图20140401135310.png

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

QQ截图20140401141400.png

1.TXT

29 Bytes, 下载次数: 2

2.txt

164 Bytes, 下载次数: 4

3.txt

67 Bytes, 下载次数: 2

100.f90

11.79 KB, 下载次数: 4

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

沙发
发表于 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

12

帖子

4

主题

0

精华

入门

F 币
47 元
贡献
31 点
板凳
 楼主| 发表于 2014-4-1 16:24:53 | 只看该作者
fcode 发表于 2014-4-1 16:10
既然都找到错误行了,那么继续向上调试吧。看看是哪个变量无穷大,继续向上插入断点,追踪是在哪里出现了无 ...

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

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

地板
发表于 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

您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-3 23:52

Powered by Tencent X3.4

© 2013-2024 Tencent

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