Fortran Coder

查看: 18747|回复: 14
打印 上一主题 下一主题

[数值问题] 程序运行出现NAN

[复制链接]

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

楼主
发表于 2014-6-30 14:42:39 | 显示全部楼层
请上传输入文件。

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

沙发
发表于 2014-6-30 14:59:11 | 显示全部楼层
X数组前3个数为0(数据文件)
所以
C(1)=X(K)-X(J)
C(2)=X(I)-X(J)
C(3)=X(J)-X(I)
这里的 C2 和 C3 为 0

AREA=ABS(B(2)*C(3)-B(3)*C(2))/2.
所以 AREA 为 0

这里0为分母,开始出现NaN,以后就很多很多 NaN 了
G(L,I)=G(L,I)+(TXX*B(P)*B(1)+TYY*C(P)*C(1))/(4.*AREA)

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

板凳
发表于 2014-6-30 15:26:12 | 显示全部楼层
本帖最后由 chuxf 于 2014-6-30 15:29 编辑

i j 分别为 1和2
所以x1 x2都为0
c2  c3 为零

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

地板
发表于 2014-6-30 16:39:39 | 显示全部楼层
因为 IF(ICOUNT.NE.IPRINT) GO TO 490 总是满足,于是每次都会跳到 490,就不输出了

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

5#
发表于 2014-6-30 16:54:28 | 显示全部楼层
我不知道怎么改,因为对你的算法不熟悉。

但是你可以试试去掉
IF(ICOUNT.NE.IPRINT) GO TO 490
这一行,或者
IF(DFMAX.GT.0.01) GO TO 490

具体怎么去掉,要看你的意图,算法。因为我不知道你为什么在这里加这两个判断。

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

6#
发表于 2014-6-30 17:01:08 | 显示全部楼层
不客气,欢迎常来。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-6 04:25

Powered by Tencent X3.4

© 2013-2024 Tencent

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