24小时热门版块排行榜    

CyRhmU.jpeg
查看: 3926  |  回复: 9
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

fish8900

金虫 (小有名气)

[求助] fortran中运行中出现无穷大的数怎么处理

在计算的过程中出现了无穷大的数(然后程序终止),我想进行以下几种尝试,不知如何进行
     1、当A变得无穷大后,我想对它进行赋值,令A=1.0E+10
     2、当A变得无穷大后,想用一个判据来进行后来的其他计算,这个判据该怎么设置
     3、如何判断A变得无穷大了
回复此楼

» 收录本帖的淘帖专辑推荐

北大科研分享

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fish8900

金虫 (小有名气)

引用回帖:
3楼: Originally posted by zeppe at 2013-04-03 15:37:00
您好,这是根据要求写的一点代码,希望对您有帮助。
LOGICAL ISLARGE !逻辑变量,是否是大数
REAL LARGENUM, A
PARAMETER(LARGENUM=1.0E10) !也可按需求设为其他大数
ISLARGE=.FALSE.
!判断A是否是大数,只考虑 ...

万分谢谢,回的有点晚了,望见谅。还有想问一下,出现无穷大的可能原因是什么,我在计算过程显示的是开方时sqrt(A)出现错误,并且A的设置是一个正数,是否是因为迭代不收敛导致A变成了无穷大。(注明:是运行了一段时间后出现了这种问题,前面的时间步长内都没有问题,不知您是否明白我表达的意思)
4楼2013-04-07 11:20:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 10 个回答

mechaniclmw

木虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
程序语言中的每种数据类型都会有其所允许的取值范围,取其上限来作为无穷大的判据应该是可行的
2楼2013-03-03 14:28:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zeppe

金虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
fish8900: 金币+30, ★★★很有帮助 2013-04-07 11:14:16
您好,这是根据要求写的一点代码,希望对您有帮助。
LOGICAL ISLARGE !逻辑变量,是否是大数
REAL LARGENUM, A
PARAMETER(LARGENUM=1.0E10) !也可按需求设为其他大数
ISLARGE=.FALSE.
!判断A是否是大数,只考虑了正数情况,
IF(A.GE.LARGENUM)  !如果还要考虑负数情况则改为IF(ABS(A).GE.LARGENUM)
A=1.0E10                   !是大数则设定值为1.0E10
ISLARGE=.TRUE.
ENDIF
IF(ISLARGE)  
PRINT 'A is very large' !输出信息,判断A为大数之后的后续操作
ENDIF
3楼2013-04-03 15:37:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zeppe

金虫 (小有名气)

引用回帖:
4楼: Originally posted by fish8900 at 2013-04-07 11:20:51
万分谢谢,回的有点晚了,望见谅。还有想问一下,出现无穷大的可能原因是什么,我在计算过程显示的是开方时sqrt(A)出现错误,并且A的设置是一个正数,是否是因为迭代不收敛导致A变成了无穷大。(注明:是运行了一段 ...

你可以先调试一下看看问题在哪一步,比如步长为多少时后A的值或者得出A的相关变量的值开始变得不合理。还有在计算过程中误差是否随步长增加而增长了。

» 本帖已获得的红花(最新10朵)

5楼2013-04-07 13:29:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见