Fortran Coder

查看: 12664|回复: 6
打印 上一主题 下一主题

[数值问题] 变量值变成NaN的原因

[复制链接]

3

帖子

1

主题

0

精华

新人

F 币
20 元
贡献
10 点
跳转到指定楼层
楼主
发表于 2020-4-9 18:20:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
模拟粒子产生的程序,不知为什么有时程序将粒子的动量赋值为NaN? 见程序的2362行:      if(isnan(e1))write(*,*) P(1,I1),P(2,I1),P(3,I1),
     &                        lb(i1)。 输出结果出现NaN.没找到原因?第一次发帖,请求大神帮助。多谢!

artnew3.f

978.03 KB, 下载次数: 6

源程序

input.dat

14.78 KB, 下载次数: 1

输入量

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

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
沙发
发表于 2020-4-9 21:53:33 | 只看该作者
NaN 产生的原因一般是数学错误,分母为零,log取负数等等。

你可以下断点,单步调试分析一下,检查原因。

关于单步调试,你可以参考本站文章: http://debug.w.fcode.cn 获视频教程 http://v.fcode.cn/video-debugger.html

250

帖子

2

主题

0

精华

宗师

F 币
1730 元
贡献
872 点

规矩勋章

板凳
发表于 2020-4-10 17:09:55 | 只看该作者
我把 MAXSTR=8000000 都改为 300,没有出现问题

3

帖子

1

主题

0

精华

新人

F 币
20 元
贡献
10 点
地板
 楼主| 发表于 2020-4-12 17:04:30 | 只看该作者
vvt 发表于 2020-4-9 21:53
NaN 产生的原因一般是数学错误,分母为零,log取负数等等。

你可以下断点,单步调试分析一下,检查原因。

多谢指点

3

帖子

1

主题

0

精华

新人

F 币
20 元
贡献
10 点
5#
 楼主| 发表于 2020-4-12 17:05:45 | 只看该作者
necrohan 发表于 2020-4-10 17:09
我把 MAXSTR=8000000 都改为 300,没有出现问题

谢谢指点,但是,但是那个数不能太小。

250

帖子

2

主题

0

精华

宗师

F 币
1730 元
贡献
872 点

规矩勋章

6#
发表于 2020-4-13 08:00:41 | 只看该作者
yonggc 发表于 2020-4-12 17:05
谢谢指点,但是,但是那个数不能太小。

太大我的计算机不支持。小的数没问题说明程序逻辑有问题。

21

帖子

7

主题

0

精华

熟手

F 币
169 元
贡献
93 点

新人勋章

7#
发表于 2020-4-15 16:45:36 | 只看该作者
回旋加速器?
心怀不惧,方能翱翔于天际
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-4-29 08:12

Powered by Tencent X3.4

© 2013-2024 Tencent

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