24小时热门版块排行榜    

查看: 4097  |  回复: 9

fish8900

金虫 (小有名气)

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

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

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

北大科研分享

» 猜你喜欢

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

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

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的回帖

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的回帖

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的回帖

fish8900

金虫 (小有名气)

送红花一朵
引用回帖:
5楼: Originally posted by zeppe at 2013-04-07 13:29:49
你可以先调试一下看看问题在哪一步,比如步长为多少时后A的值或者得出A的相关变量的值开始变得不合理。还有在计算过程中误差是否随步长增加而增长了。...

1、您说的误差随步长增加而增长了是什么意思呢?我在写程序过程中是规定了当前后的计算值(T-T1)/T<=1.0e-03时,认定计算结果达到收敛。而且我在调试过程中是将某些数值调大一点后才出现无穷大的情况。
2、当A的相关变量变得不合理时,我试着将它变成一个可以接受的值,但是发现还是会出现计算停止的现象(结果显示也还是出现sqrt的问题),想问一下您猜测原因可能是什么?
(可能有点凭空说了,不好意思哈,没具体程序给你看)
6楼2013-04-08 09:23:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zeppe

金虫 (小有名气)

引用回帖:
6楼: Originally posted by fish8900 at 2013-04-08 09:23:28
1、您说的误差随步长增加而增长了是什么意思呢?我在写程序过程中是规定了当前后的计算值(T-T1)/T<=1.0e-03时,认定计算结果达到收敛。而且我在调试过程中是将某些数值调大一点后才出现无穷大的情况。
2、当 ...

之前我猜测可能的原因之一是算法数值不稳定导致误差随步长增加而增长(有类似大数吃小数,相近数相减等情况导致数值误差),但不一定就是你的情况。
既然不能贴出具体代码,就得靠你自己调试找错了。
调试的时候可以看看相关变量的值在调函数和子程序之前和之后的变化情况是否合理,还可以试试用Excel按程序里的步骤代入算一遍,看是否得到相同的结果。

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

7楼2013-04-08 13:10:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fish8900

金虫 (小有名气)

送红花一朵
引用回帖:
7楼: Originally posted by zeppe at 2013-04-08 13:10:39
之前我猜测可能的原因之一是算法数值不稳定导致误差随步长增加而增长(有类似大数吃小数,相近数相减等情况导致数值误差),但不一定就是你的情况。
既然不能贴出具体代码,就得靠你自己调试找错了。
调试的时候可 ...

嗯,好的,我试试看哈,不行再向你请教
8楼2013-04-09 09:24:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dfj2015

新虫 (初入文坛)

CALL get_command_argument(1, arg)
                Read (arg,*) p0       
刚接触fortran  不明白这是什么意思,求大家帮忙
9楼2015-07-13 20:44:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

安靖

银虫 (正式写手)

引用回帖:
9楼: Originally posted by dfj2015 at 2015-07-13 20:44:25
CALL get_command_argument(1, arg)
                Read (arg,*) p0       
刚接触fortran  不明白这是什么意思,求大家帮忙

get_command_argument是获得命令行参数用的,
然后将参数arg值赋给p0
10楼2015-07-15 10:51:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 fish8900 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 304求调剂 +11 小熊joy 2026-03-14 12/600 2026-03-18 09:59 by macy2011
[基金申请] 被我言中:新模板不强调格式了,假专家开始管格式了 +4 beefly 2026-03-14 4/200 2026-03-17 22:04 by 黄鸟于飞Chao
[考研] 344求调剂 +4 knight344 2026-03-16 4/200 2026-03-17 17:27 by ruiyingmiao
[硕博家园] 湖北工业大学 生命科学与健康学院-课题组招收2026级食品/生物方向硕士 +3 1喜春8 2026-03-17 5/250 2026-03-17 17:18 by ber川cool子
[考研] 有没有道铁/土木的想调剂南林,给自己招师弟中~ +3 TqlXswl 2026-03-16 7/350 2026-03-17 15:23 by TqlXswl
[考研] 材料专硕274一志愿陕西师范大学求调剂 +5 薛云鹏 2026-03-13 5/250 2026-03-17 10:15 by Sammy2
[考研] [导师推荐]西南科技大学国防/材料导师推荐 +3 尖角小荷 2026-03-16 6/300 2026-03-16 23:21 by 尖角小荷
[基金申请] 国自科面上基金字体 +6 iwuli 2026-03-12 7/350 2026-03-16 21:18 by sculhf
[考研] 机械专硕325,寻找调剂院校 +3 y9999 2026-03-15 5/250 2026-03-16 19:58 by y9999
[考研] 0703一志愿211 285分求调剂 +5 ly3471z 2026-03-13 5/250 2026-03-16 16:16 by 哦哦123
[考研] 085600材料与化工 求调剂 +13 enenenhui 2026-03-13 14/700 2026-03-16 15:19 by 了了了了。。
[考研] 070305求调剂 +3 mlpqaz03 2026-03-14 4/200 2026-03-15 11:04 by peike
[考研] 297一志愿上交085600求调剂 +5 指尖八千里 2026-03-14 5/250 2026-03-14 17:26 by a不易
[考研] 331求调剂(0703有机化学 +5 ZY-05 2026-03-13 6/300 2026-03-14 10:51 by Jy?
[考研] 学硕285求调剂 +13 Wisjxn 2026-03-12 46/2300 2026-03-14 10:33 by JourneyLucky
[考研] 求材料调剂 +5 隔壁陈先生 2026-03-12 5/250 2026-03-13 22:03 by 星空星月
[考研] 材料与化工085600调剂求老师收留 +9 jiaanl 2026-03-11 9/450 2026-03-13 20:22 by JourneyLucky
[考研] 考研调剂 +4 芬达46 2026-03-12 4/200 2026-03-13 16:04 by ruiyingmiao
[考研] 工科278分求调剂 +5 周慢热啊 2026-03-12 7/350 2026-03-13 15:49 by JourneyLucky
[考研] 270求调剂 085600材料与化工专硕 +3 YXCT 2026-03-11 3/150 2026-03-13 10:13 by houyaoxu
信息提示
请填处理意见